Erstellung von Boot-Images boobstrap v1.2


Erstellung von Boot-Images boobstrap v1.2

Nach einem Monat langsame Entwicklung wurde die Veröffentlichung von boobstrap v1.2 realisiert – ein Toolkit auf POSIX-Shell fĂŒr die Erstellung von Boot-Images und Speichermedien.

Boobstrap ermöglicht es mit nur einem Befehl:

  • Ein initramfs-Image zu erstellen, das jede GNU/Linux-Distribution enthĂ€lt.
  • BootfĂ€hige ISO-Images mit jeder GNU/Linux-Distribution zu erstellen.
  • BootfĂ€hige USB-, HDD-, SSD-Medien mit jeder GNU/Linux-Distribution zu erstellen.

Das Besondere ist, dass nach dem Booten GNU/Linux entweder vollstĂ€ndig in einem reinen tmpfs lĂ€uft oder mit Overlay FS und SquashFS-Images genutzt werden kann, ganz nach Ihrer Wahl. Sie installieren jede GNU/Linux-Distribution in ein Verzeichnis, nehmen alle notwendigen Einstellungen vor (auch in einem separaten Verzeichnis), und erstellen dann mit nur einem Befehl ein bootfĂ€higes Medium, sei es ein ISO-Image, USB, HDD, SSD, oder Sie können auch ein initrd-Image mit dem System erstellen. Das System befindet sich immer im gleichen Zustand, und im Falle eines Ausfalls können Sie mit einem einzigen Druck auf die Reset-Taste zum ursprĂŒnglichen Zustand zurĂŒckkehren. Möchten Sie das System auf einen anderen Host ĂŒbertragen oder aus einem vorhandenen Container ein System erstellen? Boobstrap erledigt das.

Zu den wichtigsten Änderungen gehören:

  • Die UnterstĂŒtzung des Bootloaders syslinux wurde hinzugefĂŒgt, neben dem bereits vorhandenen grub2. Jetzt können Sie entweder grub2, syslinux oder beides verwenden, wenn Sie ein bootfĂ€higes Medium oder ein ISO-Image erstellen, wobei die Optionen —legacy-boot fĂŒr syslinux und —efi fĂŒr grub2 verantwortlich sind. Sie können auch auswĂ€hlen, welche Bootmodi das ISO-Image unterstĂŒtzen wird.
  • Die Option —bootable wurde hinzugefĂŒgt, die jedes BlockgerĂ€t bootfĂ€hig macht. FĂŒr die Erstellung von ISO-Images muss die Option —iso-9660 verwendet werden.
  • Es wurden Boot-Optionen fĂŒr den Kernel hinzugefĂŒgt: boobs.use-shmfs zum Kopieren des Inhalts aller Overlay in tmpfs, boobs.use-overlayfs zum Booten mit Overlay FS, boobs.search-rootfs zur Auswahl der Quelle mit dem System, boobs.copy-to-ram zum Kopieren des Systems ins RAM mit anschließendem deaktivieren des GerĂ€ts.
  • Die einzige zwingende AbhĂ€ngigkeit fĂŒr die Verwendung von boobstrap ist cpio. Die anderen AbhĂ€ngigkeiten sind optional: grub2, syslinux – erforderlich fĂŒr die Erstellung von Bootmedien, cdrkit oder xorriso zur Auswahl – zur Erstellung von ISO, squashfs-tools zur Erstellung von SquashFS. Nichts hindert jedoch daran, die Option —cpio anstelle von —squashfs zur Verpackung Ihrer Distribution in ein Archiv zu verwenden. busybox wird nur verwendet, wenn es installiert ist, andernfalls werden alle erforderlichen Utilities aus Ihrem System kopiert. Somit ist die Verwendung von boobstrap nahezu ĂŒberall garantiert.

Zum Beispiel erzeugt der folgende Befehl ein initrd-Image, das das gentoo-chroot/ System enthĂ€lt, das als SquashFS-Image verpackt ist und nach dem Booten des initrd erfolgreich geladen wird. Ich erinnere daran, dass zur Verwendung von Overlay FS zusammen mit SquashFS die Option boobs.use-overlayfs an den Kernel ĂŒbergeben werden muss, andernfalls wird das System in tmpfs entpackt. Alle zusĂ€tzlichen Einstellungen können in einem separaten Verzeichnis, z.B. gentoo-settings/, vorgenommen werden.

# mkdir initramfs/
# mkinitramfs initramfs/ —overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs > initrd

Ein initrd-Image mit dem System darin ist praktisch, wenn das System schnell bereitgestellt werden muss, z.B. ĂŒber PXE, oder wenn man auf einem laufenden System mit dem Befehl kexec -l /boot/vmlinuz-* —initrd=./initrd && kexec -e ins initrd wechseln möchte. Alternativ kann man im Interface einer virtuellen Maschine wie QEMU (möglicherweise sogar Proxmox) von einer Remote-Quelle mit drei IPXE-Befehlen booten: kernel http://[
] /vmlinuz, initrd http://[
] /initrd, boot. Wie Sie sehen, hat selbst ein einfaches initrd mit Ihrem System zahlreiche Anwendungsmöglichkeiten.

Zur Erstellung von Bootmedien und -images wird der Befehl mkbootisofs verwendet. So sieht beispielsweise die Erstellung eines ISO-Images mit der Option —iso-9660 aus, wobei syslinux fĂŒr das Booten im Legacy-Modus (BIOS) und grub2 fĂŒr das Booten im EFI-Modus (UEFI) verwendet wird.

# mkdir initrd/
# mkinitramfs initrd/ > initrd
# mkdir isoimage/
# mkdir isoimage/boot
# cp /boot/vmlinuz-* isoimage/boot/vmlinuz
# cp initrd isoimage/boot/initrd
# mkbootisofs isoimage/ —iso-9660 —legacy-boot syslinux —efi grub2 —output boot.iso
—overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs

Sie können einen der Bootmodus auswÀhlen oder sie ganz weglassen. Das entsprechende ISO-Image wird erfolgreich erstellt.

Die Installation auf einem beliebigen SpeichergerĂ€t mit anschließender Bootmöglichkeit erfolgt mit der Option —bootable. Sie mĂŒssen selbst die Partitionen auf dem SpeichergerĂ€t erstellen (fdisk) und diese formatieren (mkdosfs, mke2fs usw.), bevor Sie das GerĂ€t im Verzeichnis einhĂ€ngen.

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

Vorsicht! Die Option —bootable bestimmt, von welchem BlockgerĂ€t das Verzeichnis gemountet ist, und installiert den Bootloader auf diesem GerĂ€t. Wenn Sie vergessen, das GerĂ€t zu mounten oder versehentlich ein Verzeichnis angeben, das sich beispielsweise auf /dev/sda befindet, wird der Bootloader auf /dev/sda ĂŒberschrieben. Verwenden Sie —bootable mit Vorsicht.

Die Installation eines beliebigen GNU/Linux-Systems erfolgt mit nur einem Befehl. Die Installation kann auf jeder HDD, SSD usw. erfolgen. Es sei daran erinnert, dass dies nach wie vor ein System ist, das aus Overlay FS / SquashFS arbeitet oder vollstÀndig in tmpfs geladen wird, je nach Wahl.

Abgesehen von allem hat boobstrap eine Reihe von interessanten Merkmalen und zusÀtzlichen Möglichkeiten!

Zum Beispiel können Sie ein benutzerdefiniertes boobstrap initrd mit dem Befehl mkinitramfs `mktemp -d` > /boot/initrd erstellen und in Ihr System mit diesem initrd booten, indem Sie die Kernel-Optionen boobs.use-overlayfs boobs.search-rootfs=/dev/sda1 angeben. In diesem Fall wird /dev/sda1, wo Ihr Hauptsystem installiert ist, als Read-Only-Schicht des Overlay FS eingebunden, und alle Änderungen, die Sie vornehmen, werden nur vorĂŒbergehend in tmpfs gespeichert. Sie können die Option boobs.copy-to-ram hinzufĂŒgen, und dann wird Ihr gesamtes System in den RAM kopiert, sodass die Festplatte vom Computer getrennt werden kann. Praktisch, wenn Sie etwas kaputt machen mĂŒssen, da Änderungen einfach durch einen Neustart rĂŒckgĂ€ngig gemacht werden können. 🙂

Was ist aber, wenn Sie dennoch alle Änderungen im System speichern mĂŒssen? Zum Beispiel, wenn Sie Software oder etwas anderes installiert haben. Bei der Arbeit in reinem tmpfs ist das leider unmöglich, aber wenn Sie mit Overlay FS gebootet haben, werden alle Änderungen, die im System erfolgen, in einem separaten tmpfs-Verzeichnis gespeichert: /mnt/overlayfs/rootfs-changes! Das Nutzungsszenario ist sehr einfach. Sie haben Ihr System von einem USB-GerĂ€t gebootet, gearbeitet und wollten alles, was geĂ€ndert wurde, speichern, dann erstellen Sie ein cpio-Archiv und legen es hier auf dasselbe USB-GerĂ€t ab.

# cd /mnt/overlayfs/rootfs-changes
# find . -print0 | cpio —create —format "newc" —null —quiet > /mnt/drive/rootfs-changes.cpio
# cd $OLDPWD

Sie können das Archiv neben anderen SquashFS- und cpio „Schichten“ ablegen, sodass es beim nĂ€chsten Booten einfach als weitere schreibgeschĂŒtzte Schicht eingebunden wird. Um mit Änderungen fortzufahren, verwenden Sie die Boot-Option boobs.rootfs-changes=\/rootfs-changes.cpio. Die Option boobs.rootfs-changes bindet die angegebene Schicht mit Änderungszugriff ein. Eine Schicht kann ein BlockgerĂ€t sein; beispielsweise können Sie\/dev\/sdb1 angeben, sodass alle in Overlay FS vorgenommenen Änderungen einfach auf\/dev\/sdb1 gespeichert werden.

Boobstrap befindet sich trotz seiner umfangreichen Möglichkeiten immer noch in der Entwicklungsphase; Ihre Anmerkungen und VorschlĂ€ge werden berĂŒcksichtigt!

Quelle: linux.org.ru

60GB SSD 8Gb DDR4