booty - hulpprogramma voor het maken van opstartimages en schijven

Programma gepresenteerd Buit, waarmee u met één opdracht opstartbare initrd-images, ISO-bestanden of schijven kunt maken die elke GNU/Linux-distributie bevatten. De code is geschreven in POSIX-shell en gedistribueerd door gelicentieerd onder GPLv3.

Alle distributies die met Booty worden opgestart, draaien SHMFS (tmpfs) of SquashFS + Overlay FS, naar keuze van de gebruiker. De distributie wordt één keer gemaakt en tijdens het opstartproces worden parameters geselecteerd waarmee u pure tmpfs voor de root kunt gebruiken, of een combinatie van Overlay FS + SquashFS met het vastleggen van wijzigingen in tmpfs. Het is mogelijk om de downloadbare distributiekit vooraf naar het RAM-geheugen te kopiëren, waardoor u de USB-drive kunt loskoppelen na het downloaden en de distributiekit naar het geheugen kunt kopiëren.

Allereerst genereert Booty zijn eigen initrd-image, die native hulpprogramma's van het huidige systeem of busybox kan gebruiken. Het is mogelijk om de volledige distributiekit die in de directory (chroot) is geïnstalleerd, op te nemen (in te pakken) in initramfs. Dit kan handig zijn als u een systeem moet upgraden met kexec: laad eenvoudigweg de initrd opnieuw met een nieuwe kernel en een nieuw systeem binnen de initrd.

Een Booty-specifieke initrd-afbeelding maken:

mkdir initramfs/
mkinitramfs initramfs/ --output initrd

Een initrd-image maken inclusief de distributie vanuit de map “gentoo/”:

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

Waarna deze initrd-image helemaal klaar is om te laden, bijvoorbeeld via PXE of via kexec.

Vervolgens genereert Booty afbeeldingen waarbij het systeem is opgegeven als “overlays”. U kunt bijvoorbeeld een voorwaardelijke Gentoo in een aparte map installeren (het archief uitpakken), waarna een cpio-archief of SquashFS-image met dit systeem wordt gegenereerd met behulp van Booty. U kunt de distributie ook in een aparte map configureren en uw persoonlijke instellingen naar een andere map kopiëren. Al deze “lagen” worden opeenvolgend op elkaar geladen en vormen één enkel werkend systeem.

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --overlay instellingen/ --overlay documenten/ --squashfs --output initrd

Uiteindelijk kunt u met Booty opstartbare ISO-images en USB-, HDD-, SSD- en andere schijven maken door het bovenstaande systeem vanaf images te installeren. Buit ondersteunt de creatie van BIOS- en UEFI-opstartsystemen. GRUB2- en SYSLINUX-bootloaders worden ondersteund. Bootloaders kunnen worden gecombineerd, gebruik bijvoorbeeld SYSLINUX om op te starten in het BIOS, en GRUB2 voor UEFI. Om ISO-images te maken, hebt u bovendien het pakket cdrkit (genisoimage) of xorriso (xorrisofs) nodig waaruit u kunt kiezen.

De enige aanvullende actie die nodig is, is het vooraf voorbereiden van de kernel (vmlinuz) voor het opstarten. De auteur (Spoofing) raadt aan om "make defconfig" te gebruiken. Voordat u de image maakt, moet u een map voorbereiden door de vmlinuz-kernel en de eerder voorbereide “lege” initrd, gemaakt in het eerste voorbeeld, te plaatsen.

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

Hiermee is de voorbereiding voltooid, we kunnen nu ISO-images vanuit deze map maken.

Met de volgende opdracht wordt een ISO-image gemaakt, geen opstartbare image, alleen een ISO:

mkdir iso/
mkbootisofs iso/ --output archief.iso

Om een ​​opstartimage te maken, moet u respectievelijk de optie “--legacy-boot” voor BIOS en “--efi” voor UEFI specificeren; de opties gebruiken grub2 of syslinux als parameters; u kunt ook slechts één optie opgeven ( UEFI-opstartondersteuning is bijvoorbeeld niet nodig, dit is mogelijk niet gespecificeerd).

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 als voorheen werden afbeeldingen met het systeem opgenomen in de initrd, je kunt ze opnemen in de ISO.

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

Na deze opdracht zal een opstartbare BIOS/UEFI ISO-image worden gegenereerd die Gentoo in de SquashFS-image laadt met behulp van Overlay FS, met behulp van tmpfs voor gegevensopslag. De kernel moet worden gebouwd met Overlay FS-ondersteuning met SquashFS. Als dit om de een of andere reden echter niet nodig is, kun je de optie “—cpio” gebruiken in plaats van —squashfs om gentoo/ te verpakken als een cpio-archief, in welk geval het archief bij het opstarten direct in tmpfs zal worden uitgepakt, het belangrijkste is dat voor het uitpakken van het systeem tmpfs voldoende RAM had.

Interessant feit: als een ISO-image gemaakt met de optie “—efi” wordt uitgepakt op een FAT32-flashdrive door simpelweg bestanden te kopiëren (cp -r), dan zal de flashdrive opstarten in UEFI-modus zonder enige voorafgaande voorbereiding, dankzij de specifieke kenmerken van UEFI-downloaders.

Naast opstartbare ISO's kan elke opstartbare schijf worden gemaakt met dezelfde parameters: USB, HDD, SSD, enzovoort, en deze schijf kan blijven worden gebruikt voor het beoogde doel. Om dit te doen, moet je bijvoorbeeld een USB-apparaat mounten en daarop mkbootisofs draaien. Voeg gewoon één optie “—bootable” toe, zodat de schijf waarop de opgegeven map zich bevindt, opstartbaar wordt.

koppel /dev/sdb1 /mnt
mkbootisofs /mnt --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --opstartbaar

Daarna zal het USB-apparaat opstartbaar worden met de gentoo/overlay (vergeet niet de bestanden /boot/vmlinuz en /boot/initrd naar het apparaat te kopiëren).

Als om wat voor reden dan ook de schijf niet in /mnt is aangekoppeld, en het blijkt dat /mnt zich op het hoofdapparaat /dev/sda bevindt, dan zal de bootloader herschreven worden naar /dev/sda. U moet voorzichtig zijn bij het opgeven van de optie --bootable.

Tijdens het opstartproces ondersteunt Booty een aantal opties die kunnen worden doorgegeven aan de bootloader, grub.cfg of syslinux.cfg. Standaard worden, zonder enige optie, alle overlays geladen en uitgepakt in tmpfs (standaardoptie ooty.use-shmfs). Om Overlay FS te gebruiken moet de optie booty.use-overlayfs worden gebruikt. De booty.copy-to-ram optie kopieert eerst overlays naar tmpfs, waarna deze ze alleen verbindt en laadt. Na het kopiëren kan het USB-apparaat (of een ander opslagapparaat) worden verwijderd.

Bron: opennet.ru

Voeg een reactie