Erstellung von Boot-Images mit boobstrap v1.0


Erstellung von Boot-Images mit boobstrap v1.0

Ich möchte Ihnen ein Framework namens boobstrap vorstellen, das in POSIX-Shell geschrieben ist und zum Erstellen von Boot-Images mit GNU/Linux-Distributionen dient. Das Framework ermöglicht es, den gesamten Prozess in drei einfachen Schritten durchzuführen: von der Bereitstellung des Systems in chroot, der Erstellung eines initramfs-Images, das das System aus chroot beinhaltet, bis hin zum endgültigen Boot-ISO-Image. boobstrap umfasst die drei Tools mkbootstrap, mkinitramfs und mkbootisofs entsprechend.

mkbootstrap installiert das System in ein separates Verzeichnis, bietet native Unterstützung für CRUX und für Arch Linux / Manjaro sowie Debian-basierte Distributionen müssen externe Tools wie pacstrap, basestrap und debootstrap verwendet werden.

mkinitramfs erstellt ein initramfs-Image. Sie können das installierte System im Verzeichnis als "Overlay" verwenden, komprimiert mit SquashFS, oder direkt im tmpfs arbeiten. Zum Beispiel erstellt der Befehl mkinitramfs `mktemp -d` —overlay "arch-chroot/" —overlay "\/home" —squashfs-xz —output initrd eine initrd-Datei, die zwei Overlays mit dem "arch-chroot/"-System und Ihrem "\/home" enthält, die mit SquashFS komprimiert sind und dann über PXE ins tmpfs geladen oder ein bootfähiges ISO-Image mit dieser initrd erstellt werden kann.

mkbootisofs erstellt ein BIOS-/UEFI-bootfähiges ISO-Image aus dem angegebenen Verzeichnis. Es genügt, die Dateien \/boot\/vmlinuz und \/boot\/initrd in das Verzeichnis zu legen.

boobstrap verwendet kein busybox, und für die Erstellung der Arbeitsumgebung initramfs wird ein minimales Set an Programmen mit ldd kopiert, die zum Booten und Wechseln ins System erforderlich sind. Die Liste der zu kopierenden Programme kann wie alles andere über die Konfigurationsdatei \/etc\/boobstrap\/boobstrap.conf angepasst werden. Außerdem können Sie eine beliebige minimalistische Distribution in ein separates chroot\/ installieren, aus der Sie anschließend eine voll funktionsfähige initramfs-Umgebung erstellen. Als solche minimalistische, aber gleichzeitig vollständige Umgebung wird das Template "crux_gnulinux-embedded" vorgeschlagen, das nach xz nur 37 MB umfasst. busybox bietet, abgesehen von seiner Größe (3-5 MB im Vergleich zu 30-50 MB einer vollständigen GNU/Linux-Umgebung), keine weiteren Vorteile, weshalb der Einsatz von busybox im Projekt nicht sinnvoll erscheint.

Wie kann ich schnell die Funktionalität überprüfen und mit der Arbeit beginnen? Installieren und starten Sie.

# git clone https://github.com/sp00f1ng/boobstrap.git
# cd boobstrap
# make install# boobstrap/tests/crux_gnulinux-download-and-build
# qemu-system-x86_64 -enable-kvm -m 1G -cdrom tmp.*/install.iso

Sie müssen auch Abhängigkeiten installieren, und zwar: cpio, grub, grub-efi, dosfstools, xorriso. Die Verwendung von squashfs-tools ist nicht zwingend erforderlich; Sie können in tmpfs arbeiten, sofern der Arbeitsspeicher ausreichend ist. Sollte in der Systemumgebung etwas fehlen, wird boobstrap dies beim Starten mitteilen.

Um die Erstellung von Konfigurationen zu erleichtern, bietet boobstrap an, "Vorlagen" und "Systeme" zu verwenden. Das Konzept besteht darin, "Vorlagen" (bootstrap-templates/) für die schnelle Installation von Systemen aus einer Datei zu nutzen und direkt "Systeme" (bootstrap-systems/) zur Anpassung der Endkonfigurationen zu verwenden.

So installiert zum Beispiel das Ausführen des Skripts boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild eine minimale Konfiguration des CRUX GNU/Linux-Systems und speichert es in der Datei crux_gnulinux-embedded.rootfs. Anschließend führen Sie boobstrap/bootstrap-systems/default/crux_gnulinux.bbuild aus, das die primäre Konfiguration aus der erwähnten Datei lädt, alle erforderlichen Einstellungen vornimmt und ein bootfähiges ISO vorbereitet. Dies ist praktisch, wenn mehrere Systeme eine ähnliche Konfiguration verwenden: Anstatt jedes Mal dasselbe Paketset zu beschreiben, verwenden Sie eine Vorlage, auf deren Grundlage Sie bootfähige Systemabbilder mit der Endkonfiguration erstellen.

Wo verwenden Sie das alles?

Sie konfigurieren das System einmal in einer Datei und führen dann diese aus, um es zu erstellen und/oder zu aktualisieren. Das System läuft in tmpfs, was es letztlich einmalig macht. Im Falle eines Systemausfalls kehren Sie mit einem Druck auf die Reset-Taste in den ursprünglichen Zustand zurück. Sie können problemlos rm -rf / ausführen.

Sie können die Konfigurationen aller Ihrer Systeme lokal anpassen, Abbilder erstellen, diese in einer virtuellen Maschine oder auf einem separaten "Gerät" testen und dann auf einen Remote-Server hochladen. Mit nur zwei Befehlen kexec -l /vmlinuz —initrd=/initrd && kexec -e können Sie das gesamte System vollständig aktualisieren und es in tmpfs neu starten.

Ebenso können Sie alle Systeme, beispielsweise auf VDS, zum Arbeiten in tmpfs umstellen und die Festplatte /dev/vda verschlüsseln und nur für Daten nutzen, ohne das Betriebssystem darauf halten zu müssen. Der einzige „Punkt des Informationslecks“ wäre in diesem Fall nur der „kalte Dump“ des Speichers Ihrer virtuellen Maschine, und im Falle einer Kompromittierung des Systems (zum Beispiel durch ein SSH-Passwort oder eine Schwachstelle in exim), können Sie ein neues ISO über das „Kontrollpanel“ Ihres Anbieters laden, um VDS erneut in Betrieb zu nehmen, ohne dabei zu vergessen, die Systemkonfiguration zu bearbeiten und alle Schwachstellen zu schließen. Das ist schneller, als eine Neuinstallation, anschließende Konfiguration und/oder Wiederherstellung aus einem Backup, denn im Grunde genommen ist das geladene ISO mit Ihrem System Ihr Backup. „Sieben Plagen – ein Reset.“

Letztendlich können Sie jeden Distribution für Ihre Aufgaben erstellen, ihn auf einen USB-Stick schreiben und darin arbeiten, wobei Sie ihn bei Bedarf aktualisieren und wieder auf den USB-Stick zurückschreiben. Alle Daten in „Clouds“ speichern. Es ist nicht mehr nötig, sich um die Sicherheit des Systems zu sorgen und ein Backup zu erstellen, wenn das System, wie gesagt, im Grunde genommen „einmalig“ geworden ist.

Ihre Wünsche, Vorschläge und Anmerkungen sind willkommen.

Im Repository unter dem folgenden Link finden Sie eine detaillierte README-Datei (auf Englisch) mit einer Beschreibung jedes Tools und Beispielen für die Nutzung. Außerdem gibt es ausführliche Dokumentationen auf Russisch und die Entwicklungsgeschichte, die unter dem Link verfügbar sind: Komplex von Boot-Skripten boobstrap.

Quelle: linux.org.ru

60GB SSD 8Gb DDR4