Ich möchte Ihnen ein Framework namens boobstrap vorstellen, das in POSIX Shell geschrieben wurde und zur Erstellung von bootfĂ€higen Images mit GNU/Linux-Distributionen dient. Das Framework ermöglicht es, den gesamten Prozess in drei einfachen Schritten zu durchlaufen: von der Bereitstellung des Systems in chroot ĂŒber die Erstellung eines initramfs-Images, das das System aus chroot enthĂ€lt, bis hin zur Erstellung eines bootfĂ€higen ISO-Images. boobstrap umfasst drei Tools: mkbootstrap, mkinitramfs und mkbootisofs.
mkbootstrap installiert das System in ein separates Verzeichnis, es gibt native UnterstĂŒtzung fĂŒr CRUX, wĂ€hrend fĂŒr Arch Linux / Manjaro und Distributionen auf Debian-Basis entsprechende externe Tools wie pacstrap, basestrap und debootstrap verwendet werden mĂŒssen.
mkinitramfs erstellt ein initramfs-Image. Sie können das installierte System im Verzeichnis als "Overlay" verwenden, das mit SquashFS komprimiert ist, oder direkt im tmpfs arbeiten. Zum Beispiel wird der Befehl mkinitramfs `mktemp -d` âoverlay "arch-chroot/" âoverlay "/home" âsquashfs-xz âoutput initrd eine initrd-Datei erstellen, die zwei Overlays mit dem "arch-chroot/"-System und Ihrem "/home" enthĂ€lt, die mit SquashFS komprimiert sind. Diese können Sie dann ĂŒber PXE in tmpfs laden oder ein bootfĂ€higes ISO-Image mit diesem initrd erstellen.
mkbootisofs erstellt ein BIOS / UEFI bootfÀhiges ISO-Abbild aus dem angegebenen Verzeichnis. Legen Sie einfach /boot/vmlinuz und /boot/initrd in das Verzeichnis.
boobstrap verwendet busybox nicht und kopiert fĂŒr die Erstellung einer funktionalen initramfs-Umgebung ein minimales Set von Programmen mit ldd, die fĂŒr den Bootvorgang und den Wechsel ins System erforderlich sind. Die zu kopierenden Programme sowie alles andere können ĂŒber die Konfigurationsdatei /etc/boobstrap/boobstrap.conf angepasst werden. Sie können auch eine beliebige minimalistische Distribution in ein separates chroot/ installieren, um dann eine vollstĂ€ndige initramfs-Umgebung zu erstellen. FĂŒr eine solche minimalistische, aber dennoch vollstĂ€ndige Umgebung wird die Vorlage âcrux_gnulinux-embeddedâ empfohlen, die nach xz kompakt 37 MB benötigt. busybox bietet darĂŒber hinaus, abgesehen von seiner GröĂe (3-5 MB gegenĂŒber 30-50 MB einer vollstĂ€ndigen GNU/Linux-Umgebung), keinen weiteren Vorteil, sodass der Einsatz von busybox im Projekt als nicht sinnvoll erscheint.
Wie kann man schnell die FunktionsfĂ€higkeit ĂŒberprĂŒfen und mit der Arbeit beginnen? Installieren und starten Sie es.
# git clone https://github.com/sp00f1ng/boobstrap.git
# cd boobstrap
# make install# boobstrap/tests/crux_gnulinux-download-and-build
Sie mĂŒssen auch AbhĂ€ngigkeiten installieren, nĂ€mlich: cpio, grub, grub-efi, dosfstools, xorriso. Die Verwendung von squashfs-tools ist nicht zwingend erforderlich; Sie können in tmpfs arbeiten, sofern genĂŒgend RAM vorhanden ist. Wenn im System etwas fehlt, wird boobstrap dies beim Start melden.
Um die Erstellung von Konfigurationen zu erleichtern, bietet boobstrap die Verwendung von âVorlagenâ und âSystemenâ an. Dabei geht es darum, âVorlagenâ (bootstrap-templates/) fĂŒr die schnelle Installation von Systemen aus einer Datei zu nutzen, wĂ€hrend âSystemeâ (bootstrap-systems/) fĂŒr die Anpassung der endgĂŒltigen Konfigurationen verwendet werden.
So wird beispielsweise durch das AusfĂŒhren des Skripts boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild eine minimale Konfiguration des CRUX GNU/Linux-Systems installiert und in der Datei crux_gnulinux-embedded.rootfs gespeichert. AnschlieĂend starten Sie boobstrap/bootstrap-systems/default/crux_gnulinux.bbuild, das die PrimĂ€rkonfiguration aus der genannten Datei lĂ€dt, die erforderlichen Einstellungen vornimmt und das bootfĂ€hige ISO vorbereitet. Dies ist praktisch, wenn viele Systeme eine Ă€hnliche Konfiguration verwenden: Um nicht jedes Mal denselben Satz von Paketen zu beschreiben, verwenden Sie eine Vorlage, auf deren Grundlage Sie bootfĂ€hige Abbildungen der Systeme mit der endgĂŒltigen Konfiguration erstellen.
Wo wird das alles verwendet?
Sie konfigurieren das System einmal in der Datei und fĂŒhren es dann aus, um den Aufbau und/oder das Update durchzufĂŒhren. Das System lĂ€uft in tmpfs, was es im Grunde genommen einmalig macht. Im Falle eines Systemausfalls kehren Sie mit einem einfachen Druck auf die Reset-Taste in den Ausgangszustand zurĂŒck. Sie können ruhig rm -rf / ausfĂŒhren.
Sie können die Konfigurationen all Ihrer Systeme lokal anpassen, Images erstellen, diese in einer virtuellen Maschine oder auf separater Hardware testen, anschlieĂend auf einen Remote-Server hochladen und mit nur zwei Befehlen kexec -l /vmlinuz âinitrd=/initrd && kexec -e das gesamte System aktualisieren und neu starten.
Auf Ă€hnliche Weise können Sie alle Systeme, beispielsweise auf VDS, so konfigurieren, dass sie in tmpfs laufen, wĂ€hrend die Festplatte /dev/vda verschlĂŒsselt wird und nur fĂŒr Daten verwendet wird, ohne die Notwendigkeit, das Betriebssystem darauf zu halten. Der einzige "Information Leakage Point" in diesem Fall wĂ€re der "Cold Dump" des Speichers Ihrer virtuellen Maschine, und im Falle einer Systemkompromittierung (zum Beispiel durch Passwort-Knacken oder eine Schwachstelle in exim) können Sie ein neues ISO ĂŒber die "Control Panel" Ihres Anbieters laden, um VDS wieder in Betrieb zu nehmen, wobei Sie die Systemkonfiguration bearbeiten und alle Schwachstellen schlieĂen. Das ist schneller als eine Neuinstallation, gefolgt von einer anschlieĂenden Konfiguration oder Wiederherstellung aus einem Backup, denn im Grunde genommen ist das heruntergeladene ISO mit Ihrem System Ihr Backup. "Sieben Plagen â ein Reset."
Letztendlich können Sie jede Distribution nach Ihren BedĂŒrfnissen erstellen, sie auf einen USB-Stick schreiben und darin arbeiten, die Software nach Bedarf aktualisieren und sie erneut auf den USB-Stick ĂŒbertragen. Alle Daten können in der Cloud gespeichert werden. Sie mĂŒssen sich nicht mehr um die Sicherheit des Systems kĂŒmmern oder Backups erstellen, da das System, nochmals, im Wesentlichen âeinmaligâ geworden ist.
Ihre WĂŒnsche, VorschlĂ€ge und Anmerkungen sind willkommen.
Im Repository finden Sie eine ausfĂŒhrliche README-Datei (in Englisch) mit der Beschreibung jeder Dienstprogramm und Beispielen zur Nutzung. Es gibt auch eine detaillierte Dokumentation auf Russisch und eine Entwicklungsgeschichte, die ĂŒber den folgenden Link verfĂŒgbar sind: Eine Sammlung von Boot-Skripten boobstrap.
Quelle: linux.org.ru

