Das Programm wurde vorgestellt , das es ermöglicht, mit einem einzigen Befehl Boot-Images initrd, ISO-Dateien oder SpeichergerÀte, die jede GNU/Linux-Distribution enthalten, zu erstellen. Der Code ist in POSIX-Shell geschrieben und unter Lizenz GPLv3.
Alle Distributionen, die mit Booty geladen werden, arbeiten entweder in SHMFS (tmpfs) oder in SquashFS + Overlay FS, je nach Wahl des Benutzers. Die Distribution wird einmal erstellt und wĂ€hrend des Ladevorgangs werden Parameter ausgewĂ€hlt, die die Verwendung eines reinen tmpfs als Wurzel oder die Kombination von Overlay FS + SquashFS mit Ănderungen, die im tmpfs gespeichert werden, ermöglichen. Es besteht die Möglichkeit, die ladbare Distribution vorab in den Hauptspeicher zu kopieren, was es ermöglicht, das USB-Laufwerk nach dem Laden und dem Kopieren der Distribution in den Speicher zu trennen.
ZunĂ€chst erstellt Booty ein eigenes initrd-Image, in dem native Utilities aus dem aktuellen System oder busybox verwendet werden können. Es besteht die Möglichkeit, die installierte Distribution (chroot) vollstĂ€ndig in initramfs einzupacken. Dies kann nĂŒtzlich sein, wenn das System ĂŒber kexec aktualisiert werden muss: einfach 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 mit der Einbeziehung der Distribution aus dem Verzeichnis âgentoo/â:
mkdir initramfs/
mkinitramfs initramfs/ âoverlay gentoo/ âcpio âoutput initrd
Nach diesem Schritt ist das initrd-Image vollstĂ€ndig bereit zum Laden, beispielsweise ĂŒber PXE oder kexec.
AnschlieĂend generiert Booty Images mit dem System, das als âOverlaysâ angegeben ist. Zum Beispiel kann man eine hypothetische Gentoo in ein separates Verzeichnis installieren (entpacken), nach dem mit Booty ein cpio-Archiv oder ein SquashFS-Image mit diesem System generiert wird. Zudem kann in einem separaten Verzeichnis die Distribution konfiguriert werden, wĂ€hrend persönliche Einstellungen in ein weiteres Verzeichnis kopiert werden. All diese âSchichtenâ werden nacheinander ĂŒberlagert und bilden ein einheitliches Betriebssystem.
mkdir initramfs/
mkinitramfs initramfs/ âoverlay gentoo/ âoverlay settings/ âoverlay documents/ âsquashfs âoutput initrd
Letztendlich ermöglicht Booty die Erstellung bootbarer ISO-Images sowie USB-, HDD-, SSD- und anderer Speichermedien, indem das oben beschriebene System aus den Images installiert wird. unterstĂŒtzt die Erstellung von BIOS- und UEFI-Bootsystemen. Es werden die Bootloader GRUB2 und SYSLINUX unterstĂŒtzt. Die Bootloader können kombiniert werden, zum Beispiel kann SYSLINUX fĂŒr den BIOS-Boot und GRUB2 fĂŒr den UEFI-Boot verwendet werden. 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 im Voraus vorzubereiten. Der Autor (Spoofing) empfiehlt, âmake defconfigâ zu verwenden. Vor der Erstellung des Images muss das Verzeichnis vorbereitet werden, indem der Kernel vmlinuz und ein im ersten Beispiel vorbereiteter âleererâ initrd dorthin gelegt wird.
mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/boot/initrd
Damit ist die Vorbereitung abgeschlossen, nun können wir aus diesem Verzeichnis ISO-Images erstellen.
Der nÀchste Befehl erstellt ein ISO-Image, das nicht bootfÀhig ist, einfach nur 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 entsprechend angegeben werden. Die Parameter der Optionen akzeptieren entweder grub2 oder syslinux, es kann auch nur eine Option angegeben werden (zum Beispiel, wenn UEFI-Boot-UnterstĂŒtzung nicht benötigt wird, kann diese 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
Und ebenso, wie zuvor die Images mit dem System im initrd integriert waren, können sie auch im ISO integriert 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 dem SquashFS-Image unter Verwendung von Overlay FS bootet, das tmpfs zur Datenspeicherung verwendet. Der Kernel muss mit Overlay FS und SquashFS unterstĂŒtzt werden. Sollte dies aus irgendeinem Grund 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, wichtig ist, dass genĂŒgend RAM fĂŒr das Entpacken des Systems in tmpfs vorhanden ist.
Interessante Tatsache: Wenn das ISO-Image, das mit der Option ââefiâ erstellt wurde, durch einfaches Kopieren der Dateien (cp -r) auf einen FAT32-USB-Stick entpackt wird, kann der Flash-Stick im UEFI-Modus ohne vorherige Vorbereitung gebootet werden, dank der Eigenheiten der UEFI-Bootloader.
Neben den ISO-Abbildern mit denselben Parametern kann jedes speicherbare Medium erstellt werden: USB, HDD, SSD usw., wobei dieses Medium weiterhin fĂŒr seinen vorgesehenen Zweck verwendet werden kann. Dazu muss beispielsweise ein USB-GerĂ€t eingehĂ€ngt werden, und der Befehl mkbootisofs muss darauf ausgefĂŒhrt werden. Es muss nur eine Option ââbootableâ hinzugefĂŒgt werden, 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 overlay gentoo/ (vergessen Sie nicht, die Dateien /boot/vmlinuz und /boot/initrd auf das GerÀt zu kopieren).
Wenn aus irgendwelchen GrĂŒnden das Medium nicht in /mnt eingehĂ€ngt wurde und es sich herausstellt, dass /mnt auf dem HauptgerĂ€t /dev/sda liegt, wird der Bootloader entsprechend auf /dev/sda ĂŒberschrieben. Es sollte Vorsicht bei der Angabe der Option âbootable walten.
WĂ€hrend des Bootvorgangs unterstĂŒtzt Booty eine Reihe von Optionen, die im Bootloader, grub.cfg oder syslinux.cfg angegeben werden können. StandardmĂ€Ăig erfolgt das Booten und Entpacken aller Overlays in tmpfs (Standardoption ooty.use-shmfs). Um Overlay FS zu verwenden, muss die Option booty.use-overlayfs genutzt werden. Die Option booty.copy-to-ram kopiert zunĂ€chst die Overlays in tmpfs, verbindet sie danach und lĂ€dt sie. Nach der Kopie kann das USB-GerĂ€t (oder ein anderes Medium) entfernt werden.
Quelle: opennet.ru
