booty – Dienstprogramm zum Erstellen von Boot-Images und Laufwerken

Programm vorgestellt Beute, mit dem Sie mit einem Befehl bootfähige initrd-Images, ISO-Dateien oder Laufwerke erstellen können, die eine beliebige GNU/Linux-Distribution enthalten. Der Code ist in der POSIX-Shell geschrieben und vertrieben von lizenziert unter GPLv3.

Alle mit Booty gebooteten Distributionen führen entweder SHMFS (tmpfs) oder SquashFS + Overlay FS aus, je nach Wahl des Benutzers. Die Distribution wird einmal erstellt und während des Bootvorgangs werden Parameter ausgewählt, die es Ihnen ermöglichen, reine tmpfs für das Root zu verwenden oder eine Kombination aus Overlay FS + SquashFS mit Aufzeichnung von Änderungen in tmpfs. Es ist möglich, das herunterladbare Distributionskit vorab in den RAM zu kopieren, sodass Sie das USB-Laufwerk nach dem Herunterladen und Kopieren des Distributionskits in den Speicher trennen können.

Zunächst generiert Booty ein eigenes initrd-Image, das native Dienstprogramme des aktuellen Systems oder der Busybox verwenden kann. Es ist möglich, die gesamte im Verzeichnis (chroot) installierte Distribution in initramfs einzubinden (zu packen). Dies kann nützlich sein, wenn Sie ein System mit kexec aktualisieren müssen: Laden Sie einfach die initrd mit einem neuen Kernel und einem neuen System innerhalb der initrd neu.

Erstellen eines Booty-spezifischen initrd-Images:

mkdir initramfs/
mkinitramfs initramfs/ --output initrd

Erstellen eines initrd-Images inklusive der Distribution aus dem Verzeichnis „gentoo/“:

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

Danach ist dieses initrd-Image vollständig zum Laden bereit, beispielsweise über PXE oder über kexec.

Als nächstes generiert Booty Bilder mit dem als „Overlays“ angegebenen System. Sie können beispielsweise ein bedingtes Gentoo in einem separaten Verzeichnis installieren (das Archiv entpacken), woraufhin mit Booty ein CPIO-Archiv oder ein SquashFS-Image mit diesem System generiert wird. Sie können die Verteilung auch in einem separaten Verzeichnis konfigurieren und Ihre persönlichen Einstellungen in ein anderes Verzeichnis kopieren. Alle diese „Ebenen“ werden nacheinander übereinander geladen und bilden ein einziges funktionierendes System.

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --overlay Settings/ --overlay Documents/ --squashfs --output initrd

Letztendlich können Sie mit Booty bootfähige ISO-Images sowie USB-, HDD-, SSD- und andere Laufwerke erstellen, indem Sie das oben genannte System von Images installieren. Beute unterstützt die Erstellung von BIOS- und UEFI-Bootsystemen. GRUB2- und SYSLINUX-Bootloader werden unterstützt. Bootloader können kombiniert werden, zum Beispiel mit SYSLINUX zum Booten ins BIOS und mit GRUB2 für UEFI. Um ISO-Images zu erstellen, benötigen Sie zusätzlich das Paket cdrkit (genisoimage) oder xorriso (xorrisofs) zur Auswahl.

Die einzige zusätzliche erforderliche Aktion besteht darin, den Kernel (vmlinuz) vorab für den Start vorzubereiten. Der Autor (Spoofing) empfiehlt die Verwendung von „make defconfig“. Bevor Sie das Image erstellen, müssen Sie ein Verzeichnis vorbereiten, indem Sie den vmlinuz-Kernel und die zuvor vorbereitete „leere“ initrd platzieren, die im ersten Beispiel erstellt wurde.

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

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

Der folgende Befehl erstellt ein ISO-Image, kein bootfähiges, sondern nur ein ISO:

mkdir iso/
mkbootisofs iso/ --output archive.iso

Um ein Boot-Image zu erstellen, müssen Sie die Option „--legacy-boot“ für BIOS bzw. „--efi“ für UEFI angeben; die Optionen verwenden entweder grub2 oder syslinux als Parameter; Sie können auch nur eine Option angeben ( Beispielsweise ist die UEFI-Boot-Unterstützung nicht erforderlich und kann daher nicht angegeben 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 genau wie zuvor wurden Bilder mit dem System in die initrd eingebunden, Sie können sie in die ISO einbinden.

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

Nach diesem Befehl wird ein bootfähiges BIOS/UEFI-ISO-Image generiert, das Gentoo mithilfe von Overlay FS in das SquashFS-Image lädt und tmpfs für die Datenspeicherung verwendet. Der Kernel muss mit Overlay FS-Unterstützung mit SquashFS erstellt werden. Wenn dies jedoch aus irgendeinem Grund nicht erforderlich ist, können Sie die Option „—cpio“ anstelle von „squashfs“ verwenden, um gentoo/ als cpio-Archiv zu packen. In diesem Fall wird das Archiv beim Booten direkt in tmpfs entpackt, Hauptsache ist, dass zum Entpacken des Systems tmpfs genügend RAM hatte.

Interessante Tatsache: Wenn ein mit der Option „—efi“ erstelltes ISO-Image durch einfaches Kopieren von Dateien (cp -r) auf ein FAT32-Flash-Laufwerk entpackt wird, startet das Flash-Laufwerk aufgrund der Besonderheiten ohne vorherige Vorbereitung im UEFI-Modus von UEFI-Downloadern.

Zusätzlich zu bootfähigen ISOs kann jedes beliebige bootfähige Laufwerk mit denselben Parametern erstellt werden: USB, HDD, SSD usw., und dieses Laufwerk kann weiterhin für seinen vorgesehenen Zweck verwendet werden. Dazu müssen Sie beispielsweise ein USB-Gerät mounten und mkbootisofs darauf ausführen. Fügen Sie einfach eine Option „—bootable“ hinzu, damit das Laufwerk, auf dem sich das angegebene Verzeichnis befindet, bootfähig wird.

mounten Sie /dev/sdb1 /mnt
mkbootisofs /mnt --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --bootable

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

Wenn das Laufwerk aus irgendeinem Grund nicht in /mnt gemountet wurde und sich herausstellt, dass sich /mnt auf dem Hauptgerät /dev/sda befindet, wird der Bootloader nach /dev/sda neu geschrieben. Sie sollten bei der Angabe der Option --bootable vorsichtig sein.

Während des Bootvorgangs unterstützt Booty eine Reihe von Optionen, die an den Bootloader grub.cfg oder syslinux.cfg übergeben werden können. Standardmäßig werden ohne Optionen alle Overlays in tmpfs geladen und entpackt (Standardoption ooty.use-shmfs). Um Overlay FS zu verwenden, muss die Option booty.use-overlayfs verwendet werden. Die Option booty.copy-to-ram kopiert zunächst Overlays nach tmpfs, verbindet sie anschließend nur noch und lädt sie. Nach dem Kopieren kann das USB-Gerät (oder ein anderes Speichergerät) entfernt werden.

Source: opennet.ru

Kommentar hinzufügen