لينكس في ذاكرة الوصول العشوائي: طريقة debirf 2018

لينكس في ذاكرة الوصول العشوائي: طريقة debirf


هل تريد الحصول على سرعة قرص مطلقة في الوقت الحاضر ، أليس كذلك؟ دعونا نراجع كيف يمكن القيام به مع الإصدار والأتمتة في 2018.


من المنسق: جاءت إلينا مقالة باللغة الإنجليزية في Sandbox. قرأناه وقررنا نشره كتجربة يوم الجمعة. لا تحكموا بصرامة على الجميع والسلام يوم الجمعة السعيدة! لنأتي معا! باختصار ، من قاع Aua Hearts.

التغيير:


  • يتم تصحيح لغة المقال باللغة الإنجليزية
  • قدم عينة مستودع في جيثب
  • معلمات الاختبار المضافة
  • وأضاف asciicast

يجب أن تعرف قبل تشغيل هذا البرنامج التعليمي:


  • لينكس ضروري
  • الفرق الرئيسي بين باش وشي (debirf مكتوب على sh ، لذلك أوصي باتباع النمط)
  • كيفية تنسيق مفتاح USB (بأي شكل من الأشكال)
  • ما هي برامج التشغيل المطلوبة لجهازك (أو يمكنك تصحيحها عبر dmesg | lspci)
  • كيفية الحصول على أغراض مهمتك من خلال البرمجة النصية

يمكنك استبدال:


  • حرف USB من /dev/sdb إلى أي شخص آخر ( /dev/sdd )
  • دليل العمل من /root/Projects/debirf/ إلى اختيارك ( /home/username/Documents/debirf )
  • mountpoint from /media/root/8B46-1189 to /media/username/myflashdrive

خطوات التحضير


فهي (اختيارية) تمكن المكونات غير الحرة للتثبيت الأساسي. بالإضافة إلى ذلك ، أعتقد أنك ستحتاج إلى المستودع غير المجاني.


  • الخط المفتوح رقم 107 من الملف /usr/bin/debirf مثل nano +107 $(which debirf)
  • البحث عن وظيفة create_debootstrap
  • إيجاد خط مثل local OPTS="
  • إضافة - --components main,contrib,non-free بين قوسين

للبدء:


دعونا نتخيل ، محرك أقراص فلاش لدينا:


  • يجب أن يكون سريعًا ، لذلك يوصى باستخدام 8+ فئة ، أو يستغرق التمهيد وقتًا كافيًا
  • / dev / sdb
  • شكلت
  • تم تركيبه في /media/root/8B46-1189 .
  • دليل العمل لدينا /root/Projects/debirf/

قم بتثبيت debirf


 apt-get install -yq debirf mtools genisoimage 

  • mtools اللازمة لإنشاء iso عبر debirf (لا تعمل ، لكنها ضرورية)
  • genisoimage اللازمة لإنشاء iso العمل الحقيقي (اختياري)

إعداد دليل عمل debirf


 mkdir -p /root/Projects/debirf tar xzf /usr/share/doc/debirf/example-profiles/rescue.tgz -C /root/Projects/debirf cd /root/Projects/debirf/rescue 

وقم بتكوين /root/Projects/debirf/rescue/debirf.conf


 DEBIRF_LABEL="debirf-rescue" DEBIRF_SUITE=stretch DEBIRF_DISTRO=debian DEBIRF_MIRROR=http://ftp.ru.debian.org/debian/ 

إنشاء LiR


  • debirf make . وتذهب بعيدا. تحتاج إلى الكثير من الوقت ، بحد أدنى 15 دقيقة على أعلى الأجهزة.
  • قم بتشغيل debirf makeiso . لإنشاء لا يعمل ISO (مطلوب لملف grub.cfg)

اختبره


  • تثبيت qemu
    • لينكس: apt-get install -yq qemu
    • لنظام التشغيل macos: brew install qemu
  • تحديد الموارد التي سيتم تخصيصها لـ VM
    • -smp 1 1 نواة حقيقية
    • -m 1G ذاكرة 1G 1G
  • إضافية
    • -nographic سيطلق VM في النافذة النهائية الحالية
    • --enable-kvm تمكين- kvm يمكّن تسريع الأجهزة
    • -kernel vmlinuz-* تصريح تمرير نواة مباشرة
    • -initrd *.cgz الوصول المباشر إلى ملف .cgz مع initramfs
    • -append يسمح بتجاوز معلمات kernel ، وهنا المعلمات للتشغيل بدون غلاف رسومي

الأمر لبدء تشغيل الجهاز الظاهري:


 qemu-system-x86_64 --enable-kvm -kernel vmlinuz-* -initrd *.cgz -append "console=tty0 console=ttyS0,115200n8" -m 1G -smp 1 -net nic,vlan=0 -net user -nographic 

عينة الاختبار


asciicast


قم بتثبيت grub إلى محرك أقراص محمول ونسخ LiR عليه


أوصي باستخدام التمهيد bios legacy وحزم grub-pc. لم يتم اختباره مع UEFI ، ولكن يجب أن يعمل. سيتم تنفيذ الأسطر التالية:


  • إنشاء نقطة تحميل (على الأنظمة التي تعمل بواجهة المستخدم الرسومية تمكين التثبيت التلقائي ، لا حاجة)
  • تحميل مفتاح USB لنقطة التحميل (على الأنظمة التي تعمل بواجهة المستخدم الرسومية ، يتم تمكين التثبيت التلقائي ، فلا حاجة)
  • تثبيت اليرقة
  • نسخ ملف اليرقة
  • نسخ initramfs (النظام)
  • نسخ vmlinuz (نواة)
  • إلغاء تحميل مفتاح USB
  • إزالة نقطة التثبيت

 mkdir -p /media/root/8B46-1189 mount /dev/sdb1 /media/root/8B46-1189 grub-install --boot-directory=/media/root/8B46-1189/boot /dev/sdb cp /root/Projects/debirf/rescue/iso/boot/grub/grub.cfg /media/root/8B46-1189/boot/grub/ cp /root/Projects/debirf/rescue/*.cgz /media/root/8B46-1189 cp /root/Projects/debirf/rescue/vmlinuz-* /media/root/8B46-1189 umount /media/root/8B46-1189 rm -rf /media/root/8B46-1189 

إنشاء iso قابل للتمهيد (اختياري)


  • تحميل المعزول
  • إنشاء ملف التكوين المعزول
  • إنشاء ايزو

 mkdir -p rescue/iso/isolinux/ wget -O rescue/iso/isolinux/isolinux.bin 'http://mirror.yandex.ru/centos/7/os/x86_64/isolinux/isolinux.bin' cat << EOF > rescue/iso/isolinux/isolinux.cfg TIMEOUT 5 DEFAULT lir LABEL lir LINUX /vmlinuz-4.9.0-7-amd64 INITRD /debirf-rescue_stretch_4.9.0-7-amd64.cgz EOF genisoimage -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -l -input-charset default -V LiR -A "Linux in RAM" -o rescue/rescue.iso rescue/iso/ 

تحقق من النتيجة


  • تثبيت QEMU hypervisor apt-get install -yq qemu
  • قم بتشغيل qemu-system-x86_64 -enable-kvm -m 512 -hda /dev/sdb
  • إذا فشل الأمر السابق ، قم بإزالة -enable-kvm
  • سيتم بدء تشغيل VM ، تمهيده من مفتاح USB
  • يجب أن تشاهد عنصرين في القائمة ، الفرق في النهاية: وحدة التحكم والتسلسل. حدد الإدخال الأول.
  • في دقيقة ~ سترى العديد من الخطوط. بعد أن تنتهي - اضغط على Enter لرؤية رسالة الترحيب
  • تسجيل الدخول: الجذر ، لا كلمة مرور

تخصيصه: إنشاء وحدة مخصصة debirf


الوحدة - سكربت تنفيذي للتشغيل أثناء إنشاء LiR


  • إنشاء ملف الوحدة النمطية
  • ترتيب أسماء الملفات مهم. في network الملفات ، سيتم تغيير الملف الذي تم حله إلى حل النظام ، ولا يمكنك العمل مع الشبكة ؛
  • يجب أن تكون الأسطر من 1 إلى 3 موجودة ، ويجب أن يقدم السطر 3 اسم الملف
  • إذا كنت تريد تثبيت الحزمة - استخدم البناء #DEBIRF_PACKAGE>+
  • إذا كنت تريد العمل مع rootfs - استخدم $DEBIRF_ROOT
  • إذا كنت تريد تشغيل الأمر في fakeroot - استخدم debirf_exec

العينة:


 cat <<< EOF > rescue/modules/mi #!/bin/sh -e # debirf module: mi # prepare to run on mi notebook # # This script were written by # Eduard Generalov <eduard@generalov.net> # # They are Copyright 2018, and published under the MIT, #DEBIRF_PACKAGE>+firmware-iwlwifi #DEBIRF_PACKAGE>+firmware-misc-nonfree #DEBIRF_PACKAGE>+wpasupplicant echo 'iwlwifi' >> $DEBIRF_ROOT/etc/modules cat << EOF > $DEBIRF_ROOT/etc/wpa_supplicant/wpa_supplicant-wlp1s0.conf ctrl_interface=/run/wpa_supplicant update_config=1 network={ ssid="WiFi_SSID" psk="WIFIPASSWORD" } EOF cat << EOF > $DEBIRF_ROOT/etc/systemd/network/wireless.network [Match] Name=wlp1s0 [Network] DHCP=ipv4 [DHCP] RouteMetric=20 EOF 

واستبدال الخط resolved في ملف الإنقاذ / وحدات / شبكة مع debirf_exec systemctl enable wpa_supplicant@wlp1s0.service systemd-networkd.service systemd-resolved.service


المكافأة: lxc على LiR


وحدة الانقاذ / وحدات / lxc


 #!/bin/sh -e # debirf module: lxc # prepare lxc # # This script were written by # Eduard Generalov <eduard@generalov.net> # # They are Copyright 2018, and published under the MIT, #DEBIRF_PACKAGE>+lxc mkdir -p $DEBIRF_ROOT/root/.ssh/ ssh-keygen -b 2048 -t rsa -f $DEBIRF_ROOT/root/.ssh/id_rsa -q -N "" cp $DEBIRF_ROOT/root/.ssh/id_rsa $DEBIRF_ROOT/root/.ssh/authorized_keys chmod 400 $DEBIRF_ROOT/root/.ssh/authorized_keys debirf_exec systemctl enable lxc-net cat << EOF > $DEBIRF_ROOT/etc/lxc/default.conf lxc.network.type = veth lxc.network.link = lxc lxc.network.name = eth0 lxc.network.flags = up lxc.network.hwaddr = 00:FF:AA:FF:xx:xx lxc.mount.entry=/var/cache/apt var/cache/apt none bind,rw 0 0 lxc.mount.entry = /root/.ssh/ root/.ssh none bind,create=dir 0 0 EOF cat << EOF > $DEBIRF_ROOT/etc/default/lxc-net USE_LXC_BRIDGE="true" LXC_BRIDGE="lxc" LXC_ADDR="10.0.3.1" LXC_NETMASK="255.255.255.0" LXC_NETWORK="10.0.3.0/24" LXC_DHCP_RANGE="10.0.3.2,10.0.3.254" LXC_DHCP_MAX="253" LXC_DHCP_CONFILE="" LXC_DOMAIN="lxc" EOF 

Source: https://habr.com/ru/post/ar420501/


All Articles