Linux im RAM: debirf Weg
Möchten Sie heutzutage eine absolute Festplattengeschwindigkeit haben, nicht wahr? Lassen Sie uns überarbeiten, wie dies mit der Versionierung und Automatisierung im Jahr 2018 geschehen könnte.
Vom Moderator: Ein Artikel in englischer Sprache kam zu uns in die Sandbox. Wir haben es gelesen und beschlossen, es als Freitagsexperiment zu veröffentlichen. Beurteilen Sie nicht streng, alle Frieden und einen schönen Freitag! Lass uns zusammen kommen! Kurz gesagt, From the Bottom of Aua Hearts.
Changelog:
- Die Sprache des Artikels ist in Englisch korrigiert
- Beispiel-Repository bei github eingeführt
- Testparameter hinzugefügt
- Asciicast hinzugefügt
Sie müssen wissen, bevor Sie dieses Tutorial ausführen:
- Linux unerlässlich
- der Hauptunterschied zwischen bash und sh (debirf auf sh geschrieben, daher empfehle ich, dem Stil zu folgen)
- wie man USB-Schlüssel formatiert (in irgendeiner Weise)
- Welche Treiber werden für Ihre Hardware benötigt (oder Sie können sie über dmesg | lspci debuggen)?
- wie Sie Ihre Aufgaben über das Scripting erreichen
Sie können ersetzen:
- USB-Brief von
/dev/sdb
an einen anderen ( /dev/sdd
) - Arbeitsverzeichnis von
/root/Projects/debirf/
zu Ihrer Wahl ( /home/username/Documents/debirf
) - Mountpoint von
/media/root/8B46-1189
nach /media/username/myflashdrive
Schritte zur Vorbereitung
Sie ermöglichen (optional) nicht freie Komponenten für die Grundinstallation. Außerdem benötigen Sie meines Erachtens das nicht freie Repository.
- offene Zeile Nummer 107 der Datei
/usr/bin/debirf
wie nano +107 $(which debirf)
create_debootstrap
- finde Zeile wie
local OPTS="
- add
--components main,contrib,non-free
in Klammern
Bis zum Start:
Stellen wir uns unser Flash-Laufwerk vor:
- muss schnell sein, daher wird empfohlen, die Klasse 8+ zu verwenden, da das Booten sonst genügend Zeit in Anspruch nimmt
- / dev / sdb
- formatiert
- gemountet unter
/media/root/8B46-1189
. - unser Arbeitsverzeichnis
/root/Projects/debirf/
Installieren Sie debirf
apt-get install -yq debirf mtools genisoimage
- mtools benötigt zum erstellen von iso via debirf (funktioniert nicht, wird aber benötigt)
- Genisoimage benötigt, um echte Arbeits-ISO zu erstellen (optional)
Bereiten Sie das debirf-Arbeitsverzeichnis vor
mkdir -p /root/Projects/debirf tar xzf /usr/share/doc/debirf/example-profiles/rescue.tgz -C /root/Projects/debirf cd /root/Projects/debirf/rescue
DEBIRF_LABEL="debirf-rescue" DEBIRF_SUITE=stretch DEBIRF_DISTRO=debian DEBIRF_MIRROR=http://ftp.ru.debian.org/debian/
LiR erstellen
- Führen Sie
debirf make .
und geh weg. Es benötigt viel Zeit, mindestens 15 Minuten auf der Top-Hardware. - Führen Sie
debirf makeiso .
zum Erstellen einer nicht funktionierenden ISO (wird für die Datei grub.cfg benötigt)
Testen Sie es
- Installieren Sie qemu
- für Linux:
apt-get install -yq qemu
- für macos:
brew install qemu
- Entscheiden Sie, welche Ressourcen für die VM zugewiesen werden sollen
-smp 1
1 echter Kernel-m 1G
1G Speicher
- zusätzlich
-nographic
startet die VM im aktuellen Terminalfenster--enable-kvm
ermöglicht die Hardwarebeschleunigung-kernel vmlinuz-*
erlaube den Kernel direkt zu übergeben-initrd *.cgz
direkter Zugriff auf die .cgz-Datei mit initramfs-append
ermöglicht die Umgehung von Kernel-Parametern. Hier sind die Parameter für die Ausführung ohne grafische Shell
Der Befehl zum Starten der virtuellen Maschine:
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
Testprobe

Installieren Sie grub auf dem Flash-Laufwerk und kopieren Sie LiR darauf
Ich empfehle Ihnen, BIOS Legacy Boot und Package Grub-PC zu verwenden. Nicht mit UEFI getestet, muss aber funktionieren. Die nächsten Zeilen werden ausgeführt:
- Erstellen Sie einen Mount-Punkt (auf GUI-basierten Systemen, für die die automatische Mount aktiviert ist, ist dies nicht erforderlich)
- Mount-USB-Schlüssel zum Mount-Punkt mounten (auf GUI-basierten Systemen, die die automatische Mount-Funktion aktivieren, wird sie nicht benötigt)
- Grub installieren
- Grub-Datei kopieren
- Kopieren Sie initramfs (System)
- kopiere vmlinuz (Kernel)
- USB-Schlüssel aushängen
- Montagepunkt entfernen
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
Erstellen Sie eine bootfähige ISO (optional)
- Laden Sie isolinux.bin herunter
- Erstellen Sie eine Isolinux-Konfigurationsdatei
- Iso erstellen
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/
Ergebnis überprüfen
- Installieren Sie den QEMU-Hypervisor
apt-get install -yq qemu
- Führen Sie
qemu-system-x86_64 -enable-kvm -m 512 -hda /dev/sdb
- Wenn der vorherige Befehl fehlschlägt, entfernen Sie
-enable-kvm
- Die VM wird gestartet und vom USB-Schlüssel gestartet
- Sie müssen zwei Menüpunkte sehen, Unterschied am Ende: Konsole und seriell. Wählen Sie den ersten Eintrag.
- In ~ Minute sehen Sie viele Zeilen. Nach dem Ende drücken Sie die Eingabetaste, um die Begrüßungsnachricht anzuzeigen
- Login: root, kein Passwort
Anpassen: Erstellen Sie ein benutzerdefiniertes Debirf-Modul
Modul - ausführbares sh-Skript zur Ausführung während der LiR-Erstellung
- Moduldatei erstellen
- Die Reihenfolge der Dateinamen ist wichtig. Im Dateinetzwerk
network
die Auflösungsdatei in die vom System aufgelöste Datei geändert, und Sie können nicht mit dem Netzwerk arbeiten. - Zeilen von 1 bis 3 müssen vorhanden sein, Zeile 3 muss den Dateinamen enthalten
- Wenn Sie das Paket installieren möchten, verwenden Sie die Konstruktion
#DEBIRF_PACKAGE>+
- Wenn Sie mit rootfs arbeiten möchten, verwenden Sie
$DEBIRF_ROOT
- Wenn Sie den Befehl in fakeroot
debirf_exec
möchten, verwenden Sie debirf_exec
Beispiel:
cat <<< EOF > rescue/modules/mi
und ersetzen Sie die Zeile durch resolved
in der Datei Rescue / Module / Netzwerk debirf_exec systemctl enable wpa_supplicant@wlp1s0.service systemd-networkd.service systemd-resolved.service
durch debirf_exec systemctl enable wpa_supplicant@wlp1s0.service systemd-networkd.service systemd-resolved.service
Bonus: lxc auf LiR
Modulrettung / Module / lxc