Booty — ein Tool zur Erstellung von bootfĂ€higen Images und Speichermedien

Das Programm wurde vorgestellt Booty, das es ermöglicht, mit einem einzigen Befehl bootfÀhige initrd-Images, ISO-Dateien oder Speichermedien zu erstellen, die jede GNU/Linux-Distribution beinhalten. Der Code ist in POSIX Shell geschrieben und wird unter der GPLv3-Lizenz bereitgestellt. Die Veröffentlichung des Video Players MPV 0.32

Alle Distributionen, die mit Booty geladen werden, laufen entweder in SHMFS (tmpfs) oder in SquashFS + Overlay FS, je nach Wahl des Benutzers. Die Distribution wird einmal erstellt, und beim Booten können Parameter ausgewĂ€hlt werden, die es ermöglichen, ein reines tmpfs als Root zu verwenden oder die Kombination aus Overlay FS + SquashFS mit Änderungen, die in tmpfs geschrieben werden. Es besteht die Möglichkeit, die zu ladende Distribution vorab in den RAM zu kopieren, was es ermöglicht, das USB-Laufwerk nach dem Laden und dem Kopieren der Distribution in den Speicher zu trennen.

ZunĂ€chst generiert Booty ein eigenes initrd-Image, in dem native Tools aus dem aktuellen System oder busybox verwendet werden können. Es ist möglich, die vollstĂ€ndig im initramfs installierte Distribution in das Verzeichnis zu packen (chroot). Dies kann nĂŒtzlich sein, wenn das System mit kexec aktualisiert werden soll: einfach das initrd mit dem neuen Kernel und dem neuen System innerhalb des initrd neu starten.

Erstellung eines Booty-spezifischen initrd-Images:

mkdir initramfs/
mkinitramfs initramfs/ —output initrd

Erstellung eines initrd-Images unter Einbeziehung des Distributionsordners ‚gentoo/‘:

mkdir initramfs/
mkinitramfs initramfs/ —overlay gentoo/ —cpio —output initrd

Nachfolgend ist das initrd-Image vollstĂ€ndig bereit fĂŒr den Bootvorgang, zum Beispiel ĂŒber PXE oder mittels kexec.

Anschließend generiert Booty Images mit dem System, das als ‚Overlay‘ angegeben wird. Beispielsweise kann man ein hypothetisches Gentoo in einem separaten Verzeichnis installieren (Archiv entpacken), woraufhin Booty ein cpio-Archiv oder ein SquashFS-Image mit diesem System erstellt. Auch kann man in einem separaten Verzeichnis die Distribution konfigurieren und in ein weiteres Verzeichnis die persönlichen Einstellungen kopieren. Alle diese ‚Schichten‘ werden nacheinander ĂŒbereinander geladen und bilden ein einheitliches funktionierendes System.

mkdir initramfs/
mkinitramfs initramfs/ —overlay gentoo/ —overlay settings/ —overlay documents/ —squashfs —output initrd

Letztendlich ermöglicht Booty die Erstellung von bootfĂ€higen ISO-Images sowie von USB-, HDD-, SSD- und anderen Speichermedien, indem das oben beschriebene System aus den Images installiert wird. Booty UnterstĂŒtzt die Erstellung von bootfĂ€higen Systemen fĂŒr BIOS und UEFI. Es werden die Bootloader GRUB2 und SYSLINUX unterstĂŒtzt. Diese Bootloader können kombiniert werden, zum Beispiel SYSLINUX fĂŒr BIOS und GRUB2 fĂŒr UEFI. FĂŒr die Erstellung von ISO-Images wird zusĂ€tzlich das Paket cdrkit (genisoimage) oder xorriso (xorrisofs) benötigt, je nach Wahl.

Die einzige zusĂ€tzliche Maßnahme, die erforderlich ist, besteht darin, den Kernel (vmlinuz) fĂŒr den Bootvorgang vorzubereiten. Der Autor (Spoofing) empfiehlt, 'make defconfig' zu verwenden. Vor der Erstellung des Images muss ein Verzeichnis vorbereitet werden, in das der Kernel vmlinuz und das zuvor vorbereitete 'leere' initrd, das im ersten Beispiel erstellt wurde, abgelegt werden.

mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/boot/initrd

Die Vorbereitung ist abgeschlossen, nun können wir ISO-Images aus diesem Verzeichnis erstellen.

Der nÀchste Befehl erstellt ein ISO-Image, das nicht bootfÀhig ist, einfach ein ISO:

mkdir iso/
mkbootisofs iso/ —output archive.iso

Um ein bootfĂ€higes Image zu erstellen, muss die Option '—legacy-boot' fĂŒr BIOS und '—efi' fĂŒr UEFI angegeben werden; als Parameter akzeptieren die Optionen entweder grub2 oder syslinux, es kann auch nur eine Option angegeben werden (zum Beispiel, wenn die UnterstĂŒtzung fĂŒr UEFI-Boot nicht benötigt wird, kann sie weggelassen werden).

mkbootisofs iso/ —legacy-boot syslinux —output boot-biosonly.iso

mkbootisofs iso/ —legacy-boot syslinux —efi grub2 —output boot-bios-uefi.iso

mkbootisofs iso/ —efi grub2 —output boot-uefionly.iso

So wie zuvor die Images mit dem System in initrd eingebunden waren, können sie auch im ISO eingebunden werden.

mkbootisofs iso/ —overlay gentoo/ —squashfs —legacy-boot grub2 —efi grub2 —output gentoo.iso

Nach diesem Befehl wird ein bootfĂ€higes BIOS/UEFI-ISO-Image erstellt, das Gentoo aus einem SquashFS-Image mit Overlay FS bootet und tmpfs zur Speicherung der Daten verwendet. Der Kernel muss mit Overlay FS und SquashFS-UnterstĂŒtzung kompiliert sein. Sollte dies aus irgendwelchen GrĂŒnden nicht erforderlich sein, kann die Option „—cpio“ anstelle von —squashfs verwendet werden, um gentoo/ als cpio-Archiv zu verpacken; in diesem Fall wird das Archiv wĂ€hrend des Bootvorgangs direkt in tmpfs entpackt, vorausgesetzt, es steht genĂŒgend Arbeitsspeicher zur VerfĂŒgung, um das System in tmpfs zu entpacken.

Interessante Tatsache: Wenn das mit der Option „—efi“ erstellte ISO-Image einfach durch Kopieren der Dateien (cp -r) auf einen FAT32-USB-Stick entpackt wird, kann der Flash-Speicher im UEFI-Modus gestartet werden, ohne dass eine vorherige Vorbereitung erforderlich ist, dank der Besonderheiten von UEFI-Bootloadern.

Neben bootfĂ€higen ISOs mit denselben Parametern kann jedes bootfĂ€hige Medium erstellt werden: USB, HDD, SSD usw. Dieses Medium kann weiterhin fĂŒr seinen ursprĂŒnglichen Zweck verwendet werden. Dazu muss beispielsweise das USB-GerĂ€t eingebunden werden, und anschließend muss der Befehl mkbootisofs darauf durchgefĂŒhrt werden. FĂŒgen Sie nur eine Option „—bootable“ hinzu, damit das Medium, auf dem das angegebene Verzeichnis liegt, bootfĂ€hig wird.

mount /dev/sdb1 /mnt
mkbootisofs /mnt —overlay gentoo/ —squashfs —legacy-boot grub2 —efi grub2 —bootable

Nach dem Vorgang wird das USB-GerÀt bootfÀhig mit dem Overlay gentoo/ (vergessen Sie nicht, die Dateien /boot/vmlinuz und /boot/initrd auf das GerÀt zu kopieren).

Sollte das Medium aus irgendeinem Grund nicht in /mnt eingebunden werden und sich herausstellen, dass /mnt auf dem HauptgerĂ€t /dev/sda befindet, dann wird der Bootloader entsprechend auf /dev/sda ĂŒberschrieben. Seien Sie vorsichtig bei der Angabe der Option —bootable.

Im Ladeprozess unterstĂŒtzt Booty eine Reihe von Optionen, die im Bootloader, grub.cfg oder syslinux.cfg angegeben werden können. StandardmĂ€ĂŸig erfolgt der Boot und das Entpacken aller Overlay-Dateien in tmpfs (Standardoption booty.use-shmfs). Um Overlay FS zu nutzen, muss die Option booty.use-overlayfs verwendet werden. Die Option booty.copy-to-ram kopiert die Overlays zunĂ€chst in tmpfs, bevor sie nur noch eingebunden und geladen werden. Nach der Kopie kann das USB-GerĂ€t (oder ein anderer Speicher) entfernt werden.

Quelle: opennet.ru

ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen đŸ”„ ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster