Het programma , waarmee je met één commando bootbare afbeeldingen initrd, ISO-bestanden of opslagapparaten kunt maken die elke GNU/Linux-distributie bevatten. De code is geschreven in POSIX-shell en onder GPLv3-licentie.
Alle distributies die zijn opgestart met Booty, werken ofwel in SHMFS (tmpfs), ofwel in SquashFS + Overlay FS, afhankelijk van de keuze van de gebruiker. De distributie wordt één keer aangemaakt, en tijdens het opstarten worden parameters gekozen waarmee een schone tmpfs voor de root kan worden gebruikt, of een combinatie van Overlay FS + SquashFS met schrijfwijzigingen in tmpfs. Er is ook de mogelijkheid om de opstartbare distributie vooraf in het RAM te kopiëren, zodat de USB-stick kan worden losgekoppeld na het opstarten en het kopiëren van de distributie naar het geheugen.
Allereerst genereert Booty zijn eigen initrd-image, waarin native hulpprogramma's uit het huidige systeem of busybox kunnen worden gebruikt. Er is ook de mogelijkheid om de volledige distributie die in de directory is geïnstalleerd (chroot) in initramfs op te nemen (in te pakken). Dit kan nuttig zijn wanneer het nodig is om het systeem bij te werken met behulp van kexec: je hoeft alleen maar de initrd opnieuw op te starten met een nieuwe kernel en een nieuw systeem binnen de initrd.
Het maken van een Booty-specifiek initrd-image:
mkdir initramfs/
mkinitramfs initramfs/ --output initrd
Het maken van een initrd-image met opname van de distributie uit de directory 'gentoo/':
mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --cpio --output initrd
Daarna is dit initrd-image volledig klaar om op te starten, bijvoorbeeld via PXE of via kexec.
Vervolgens genereert Booty images met het systeem dat als 'overlays' is opgegeven. Bijvoorbeeld, je kunt (een archief uitpakken) een hypothetische Gentoo in een aparte directory installeren, waarna met Booty een cpio-archive of SquashFS-image met dat systeem wordt aangemaakt. Ook kun je in een aparte directory de distributie configureren en in een andere directory je persoonlijke instellingen kopiëren. Al deze 'lagen' zullen achtereenvolgens bovenop elkaar worden geladen en een enkele werkende systeem creëren.
mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --overlay settings/ --overlay documents/ --squashfs --output initrd
Uiteindelijk stelt Booty je in staat om bootbare ISO-images en USB, HDD, SSD en andere opslagapparaten te maken, waarbij het hierboven beschreven systeem vanuit de images wordt geïnstalleerd. ondersteunt het maken van opstartsystemen voor BIOS en UEFI. Het ondersteunt de opstartlader GRUB2 en SYSLINUX. Opstartladers kunnen worden gecombineerd, bijvoorbeeld om voor BIOS SYSLINUX te gebruiken en voor UEFI GRUB2. Voor het maken van ISO-images is aanvullend het pakket cdrkit (genisoimage) of xorriso (xorrisofs) vereist, naar keuze.
De enige aanvullende actie die nodig is, is het vooraf voorbereiden van de kernel (vmlinuz) voor opstarten. De auteur (Spoofing) raadt aan om "make defconfig" te gebruiken. Voordat je het image maakt, moet je de directory voorbereiden door de kernel vmlinuz en een vooraf voorbereide "lege" initrd, gemaakt in het eerste voorbeeld, erin te plaatsen.
mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/boot/initrd
Nu is de voorbereiding voltooid, we kunnen ISO-images maken vanuit deze directory.
De volgende opdracht maakt een ISO-image, geen opstartimage, gewoon een ISO:
mkdir iso/
mkbootisofs iso/ —output archive.iso
Om een opstartimage te maken, moet je de optie "—legacy-boot" voor BIOS en "—efi" voor UEFI opgeven, respectievelijk kunnen de parameters van de optie ofwel grub2 of syslinux zijn, ook kan je slechts één optie opgeven (bijvoorbeeld, als je UEFI-opstartondersteuning niet nodig hebt, kan je het weglaten).
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
En net zoals de eerdere images met het systeem in initrd, kunnen ze ook in de ISO worden opgenomen.
mkbootisofs iso/ —overlay gentoo/ —squashfs —legacy-boot grub2 —efi grub2 —output gentoo.iso
Na deze opdracht zal er een opstartbare BIOS/UEFI ISO-image zijn gemaakt, die Gentoo opstart vanuit een SquashFS-image met Overlay FS, gebruikmakend van tmpfs voor gegevensopslag. De kernel moet zijn samengesteld met ondersteuning voor Overlay FS met SquashFS. Als dit om welke reden dan ook niet nodig is, kan de optie "—cpio" in plaats van —squashfs worden gebruikt, om gentoo/ als cpio-archief in te pakken; in dat geval wordt het archief direct in tmpfs uitgepakt tijdens het opstarten, zolang er maar genoeg RAM beschikbaar is voor het uitpakken van het systeem in tmpfs.
Interessant feit: als een ISO-image gemaakt met de optie "—efi" op een FAT32 USB-stick wordt uitgepakt door simpelweg de bestanden te kopiëren (cp -r), zal de flashdrijf opstarten in UEFI-modus zonder enige voorafgaande voorbereiding, dankzij de kenmerken van UEFI-opstartladers.
Naast opstart ISO's met dezelfde parameters kan elk opstartapparaat worden gemaakt: USB, HDD, SSD, enzovoort. Dit apparaat kan daarnaast worden gebruikt voor zijn oorspronkelijke doel. Hiervoor moet bijvoorbeeld een USB-apparaat worden gemonteerd en moet mkbootisofs op dat apparaat worden uitgevoerd. Voeg eenvoudig de optie '-bootable' toe, zodat het apparaat met de opgegeven directory opstartbaar wordt.
mount /dev/sdb1 /mnt
mkbootisofs /mnt --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --bootable
Daarna wordt het USB-apparaat opstartbaar met de overlay gentoo/ (vergeet niet de bestanden /boot/vmlinuz en /boot/initrd naar het apparaat te kopiëren).
Als het apparaat om welke reden dan ook niet in /mnt is gemonteerd, en /mnt op het hoofdapparaat /dev/sda staat, zal de bootloader respectievelijk op /dev/sda worden overschreven. Wees voorzichtig bij het gebruik van de optie --bootable.
Tijdens het opstarten ondersteunt Booty verschillende opties die kunnen worden opgegeven in de bootloader, grub.cfg of syslinux.cfg. Standaard zonder opties wordt alles opgestart en worden alle overlays in tmpfs uitgepakt (standaardoptie ooty.use-shmfs). Voor het gebruik van Overlay FS moet de optie booty.use-overlayfs worden gebruikt. De optie booty.copy-to-ram kopieert de overlays vooraf naar tmpfs, waarna ze alleen worden gemonteerd en geladen. Na het kopiëren kan het USB-apparaat (of een ander apparaat) worden verwijderd.
Bron: opennet.ru
