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
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

