Das Programm wurde vorgestellt , 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 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. 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
