Na slechts een maand onlangs is de release van boobstrap v1.2 aangekondigd - een set tools op POSIX shell voor het maken van opstartbare image- en opslagapparaten.
Boobstrap stelt je in staat om met slechts één commando:
- Een initramfs-image te creëren, inclusief elke GNU/Linux-distributie.
- Opstartbare ISO-images te maken met elke GNU/Linux-distributie.
- Opstartbare USB-, HDD-, SSD-apparaten te creëren met elke GNU/Linux-distributie.
De functie is dat na het opstarten GNU/Linux of volledig in een schone tmpfs zal draaien, of gebruikmaakt van Overlay FS en SquashFS-images, afhankelijk van jouw keuze. Je installeert elke GNU/Linux-distributie in een map, voert alle noodzakelijke configuraties uit (kan in een aparte map), waarna je met slechts één commando een opstartapparaat creëert, of het nu een ISO-image, USB, HDD, SSD-opslag is, of je kunt ook een initrd-image met het systeem maken. Het systeem bevindt zich altijd in dezelfde staat en in het geval van een storing kun je met één druk op de Reset-knop terugkeren naar de oorspronkelijke staat. Wil je het systeem naar een andere host verplaatsen, of vanuit een bestaande container een systeem creëren? Boobstrap regelt dit.
De belangrijkste veranderingen:
- Er is ondersteuning toegevoegd voor de bootloader syslinux, naast de al bestaande grub2. Nu kun je kiezen tussen grub2, syslinux, of beide samen gebruiken wanneer je een opstartapparaat of ISO-image maakt, waarvoor de opties —legacy-boot syslinux en —efi grub2 verantwoordelijk zijn, en je kunt ook kiezen welke opstartmodi het ISO-image zal ondersteunen.
- Er is een optie —bootable toegevoegd die elk blockapparaat opstartbaar maakt. Voor het maken van ISO-images moet de optie —iso-9660 worden gebruikt.
- Er zijn kernel-opstartopties toegevoegd: boobs.use-shmfs voor het kopiëren van de inhoud van alle overlays naar tmpfs, boobs.use-overlayfs voor opstarten met Overlay FS, boobs.search-rootfs voor het selecteren van de bron met het systeem, boobs.copy-to-ram voor het kopiëren van het systeem naar het geheugen met daarna het uitschakelen van het apparaat.
- De enige verplichte afhankelijkheid voor het werken met boobstrap is alleen cpio. De overige afhankelijkheden zijn optioneel: grub2, syslinux - vereist voor het maken van opstartmedia, cdrkit of xorriso naar keuze - voor het maken van ISO's, squashfs-tools voor het maken van SquashFS, maar niets weerhoudt je ervan om de optie —cpio in plaats van —squashfs te gebruiken voor het pakket jouw distributie in een archief. busybox zal alleen worden gebruikt als het is geïnstalleerd, maar als dat niet het geval is, worden alle benodigde hulpprogramma's uit jouw systeem gekopieerd. Op deze manier is het werk van boobstrap bijna overal gegarandeerd.
Bijvoorbeeld, de volgende opdracht zal een initrd-afbeelding maken door het gentoo-chroot/-systeem, verpakt als een SquashFS-afbeelding, op te nemen die succesvol zal worden geladen na het opstarten van de initrd zelf. Vergeet niet dat je de optie boobs.use-overlayfs aan de kernel moet doorgeven om Overlay FS samen met SquashFS te gebruiken, anders zal het systeem worden uitgepakt naar tmpfs. Alle extra instellingen kunnen worden uitgevoerd in een aparte directory, bijvoorbeeld gentoo-settings/
# mkdir initramfs/
# mkinitramfs initramfs/ —overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs > initrd
Een initrd-afbeelding met een systeem erin is handig wanneer je snel een systeem moet opstarten, bijvoorbeeld via PXE, of om tijdens een lopend systeem over te schakelen naar initrd met behulp van de opdracht kexec -l /boot/vmlinuz-* --initrd=./initrd && kexec -e, of wanneer je in de interface van een virtuele machine QEMU (mogelijk zelfs Proxmox) zit, op te starten vanaf een externe bron met behulp van drie IPXE-commando's: kernel http://[…] /vmlinuz, initrd http://[…] /initrd, boot. Zoals je ziet, zelfs een gewone initrd met jouw systeem erin heeft veel gebruiksmogelijkheden.
Voor het maken van opstartmedia en afbeeldingen wordt de opdracht mkbootisofs gebruikt; bijvoorbeeld, zo ziet het creëren van een ISO-afbeelding eruit met de optie —iso-9660, gebruikmakend van syslinux voor opstarten in Legacy-mode (BIOS) en grub2 voor opstarten in EFI-mode (UEFI).
# 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
Je kunt een van de opstartmodi opgeven, of ze helemaal niet opgeven; de bijbehorende ISO-afbeelding zal succesvol worden gemaakt.
Installatie op elk opslagmedium met daaropvolgend opstarten vanaf dit medium gebeurt met de optie --bootable. Je moet zelf de partities op het opslagmedium aanmaken (fdisk) en deze formatteren (mkdosfs, mke2fs, enzovoort), waarna je het apparaat in een directory moet monteren.
# mount /dev/sdb1 /mnt/drive/
# mkbootisofs /mnt/drive/ —bootable —legacy-boot grub2 —efi grub2
--overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs
Wees voorzichtig! De optie —bootable bepaalt van welk blokapparaat de directory is gemonteerd en installeert de bootloader op dit apparaat. Als u vergeet het apparaat te monteren of per ongeluk een directory opgeeft die bijvoorbeeld op /dev/sda staat, zal de bootloader op /dev/sda worden overschreven. Gebruik —bootable met voorzichtigheid.
De installatie van elk GNU/Linux-systeem komt neer op één enkele opdracht. Installatie kan plaatsvinden op elke HDD, SSD, enzovoort. Het is belangrijk te vermelden dat dit nog steeds een systeem is dat werkt vanuit Overlay FS / SquashFS, of volledig geladen in tmpfs, afhankelijk van uw keuze.
Naast alles heeft boobstrap een aantal interessante eigenschappen en extra mogelijkheden!
Bijvoorbeeld, u kunt een aangepaste boobstrap initrd maken met het commando mkinitramfs `mktemp -d` > /boot/initrd en opstarten in uw systeem met deze initrd, door de kernelopties boobs.use-overlayfs boobs.search-rootfs=/dev/sda1 op te geven. In dit geval wordt /dev/sda1, waar uw thuisomgeving is geïnstalleerd, gekoppeld als een alleen-lezen laag van Overlay FS, en alle wijzigingen die u aanbrengt, worden tijdelijk opgeslagen in tmpfs. U kunt de optie boobs.copy-to-ram toevoegen en dan wordt uw hele systeem in RAM gekopieerd, terwijl de harde schijf van de computer kan worden losgekoppeld. Dit is handig wanneer u iets wilt breken, en de wijzigingen kunnen eenvoudig worden teruggedraaid door opnieuw op te starten. 🙂
Maar wat als u toch alle wijzigingen in het systeem wilt behouden? Bijvoorbeeld, u hebt software geïnstalleerd of iets anders. Bij het werken in een schone tmpfs is dit helaas niet mogelijk, maar als u opstart met Overlay FS, worden alle wijzigingen die in het systeem plaatsvinden, opgeslagen in een aparte tmpfs-directory: /mnt/overlayfs/rootfs-changes! Het gebruiksscenario is heel eenvoudig. U heeft uw systeem opgestart vanaf een USB-apparaat, is aan het werk geweest en wilt alles wat veranderd is opslaan, maak dan een cpio-archief en plaats dit ook op hetzelfde USB-apparaat.
# cd /mnt/overlayfs/rootfs-changes
# find . -print0 | cpio —create —format "newc" —null —quiet > /mnt/drive/rootfs-changes.cpio
# cd $OLDPWD
U kunt een archief naast andere SquashFS- en cpio "lagen" plaatsen, zodat het archief bij een volgende opstart wordt aangesloten als een extra read-only laag. Om te blijven werken met wijzigingen, gebruikt u de opstartoptie boobs.rootfs-changes=\/rootfs-changes.cpio. De optie boobs.rootfs-changes sluit de opgegeven laag in met wijzingsrechten. Een laag kan een blokapparaat zijn; bijvoorbeeld kunt u \/dev\/sdb1 opgeven, zodat alle wijzigingen die in Overlay FS zijn aangebracht, simpelweg op \/dev\/sdb1 worden opgeslagen.
Boobstrap, ondanks de uitgebreide mogelijkheden, bevindt zich nog in de ontwikkelingsfase; al uw opmerkingen en suggesties worden in overweging genomen!
Bron: linux.org.ru

