booty - nástroj pro vytváření spouštěcích obrazů a jednotek

Prezentován program Kořist, který vám umožňuje vytvořit zaváděcí obrazy initrd, soubory ISO nebo jednotky obsahující jakoukoli distribuci GNU/Linux jedním příkazem. Kód je napsán v shellu POSIX a distribuovány pod licencí GPLv3.

Všechny distribuce spouštěné pomocí Booty běží buď SHMFS (tmpfs) nebo SquashFS + Overlay FS, podle volby uživatele. Distribuce se vytvoří jednou a během bootovacího procesu se vyberou parametry, které umožňují použít čisté tmpfs pro root, nebo kombinaci Overlay FS + SquashFS se záznamem změn do tmpfs. Stahovatelnou distribuční sadu je možné předem zkopírovat do paměti RAM, což umožňuje odpojit USB disk po stažení a zkopírování distribuční sady do paměti.

Za prvé, Booty vygeneruje svůj vlastní initrd image, který může používat nativní utility z aktuálního systému nebo busyboxu. Do initramfs je možné zahrnout (zabalit) celý distribuční kit nainstalovaný v adresáři (chroot). To může být užitečné, když potřebujete upgradovat systém pomocí kexec: jednoduše znovu načtěte initrd s novým jádrem a novým systémem uvnitř initrd.

Vytvoření obrazu initrd specifického pro Booty:

mkdir initramfs/
mkinitramfs initramfs/ --output initrd

Vytvoření obrazu initrd včetně distribuce z adresáře „gentoo/“:

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

Poté je tento initrd image zcela připraven k načtení, například přes PXE nebo přes kexec.

Dále Booty generuje obrazy se systémem zadaným jako „overlays“. Například můžete nainstalovat (rozbalit archiv) podmíněné Gentoo do samostatného adresáře, po kterém se pomocí Booty vygeneruje cpio archiv nebo obraz SquashFS s tímto systémem. Můžete také nakonfigurovat distribuci v samostatném adresáři a zkopírovat svá osobní nastavení do jiného adresáře. Všechny tyto „vrstvy“ se budou postupně načítat jedna na druhou a vytvoří jeden pracovní systém.

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --overlay settings/ --overlay documents/ --squashfs --output initrd

Nakonec vám Booty umožňuje vytvářet bootovatelné ISO obrazy a USB, HDD, SSD a další disky instalací výše uvedeného systému z obrazů. Kořist podporuje tvorbu spouštěcích systémů BIOS a UEFI. Podporovány jsou bootloadery GRUB2 a SYSLINUX. Bootloadery lze kombinovat, například použijte SYSLINUX pro zavedení do BIOSu a GRUB2 pro UEFI. K vytvoření ISO obrazů budete navíc potřebovat balíček cdrkit (genisoimage) nebo xorriso (xorrisofs), ze kterého si můžete vybrat.

Jedinou další potřebnou akcí je připravit jádro (vmlinuz) na zavedení předem. Autor (Spoofing) doporučuje použít "make defconfig". Před vytvořením obrazu je třeba připravit adresář umístěním jádra vmlinuz a dříve připraveného „prázdného“ initrd vytvořeného v prvním příkladu.

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

Tím je příprava dokončena, nyní můžeme z tohoto adresáře vytvářet obrazy ISO.

Následující příkaz vytvoří obraz ISO, nikoli zaváděcí, pouze ISO:

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

Chcete-li vytvořit spouštěcí bitovou kopii, musíte zadat volbu „--legacy-boot“ pro BIOS a „--efi“ pro UEFI; tyto možnosti berou jako parametry buď grub2 nebo syslinux; můžete také zadat pouze jednu možnost ( například není potřeba podpora spouštění UEFI, nemusí být specifikována).

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

A stejně jako dříve byly obrázky se systémem zahrnuty do initrd, můžete je zahrnout do ISO.

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

Po tomto příkazu bude vygenerován bootovatelný BIOS/UEFI ISO obraz, který načte Gentoo do obrazu SquashFS pomocí Overlay FS s použitím tmpfs pro ukládání dat. Jádro musí být sestaveno s podporou Overlay FS s SquashFS. Pokud to však z nějakého důvodu není vyžadováno, můžete místo —squashfs zabalit gentoo/ jako archiv cpio použít volbu „—cpio“, v takovém případě bude archiv rozbalen přímo do tmpfs při startu, hlavní věc je, že pro rozbalení systému měl tmpfs dostatek RAM.

Zajímavost: pokud je obraz ISO vytvořený pomocí možnosti „—efi“ rozbalen na flash disk FAT32 pouhým zkopírováním souborů (cp -r), pak se flash disk nabootuje v režimu UEFI bez jakékoli předběžné přípravy, díky specifikám stahovačů UEFI.

Kromě zaváděcích ISO lze vytvořit libovolnou zaváděcí jednotku se stejnými parametry: USB, HDD, SSD atd., přičemž tuto jednotku lze nadále používat pro zamýšlený účel. K tomu je potřeba připojit např. USB zařízení a spustit na něm mkbootisofs. Stačí přidat jednu možnost „—bootable“, aby se jednotka, na které je zadaný adresář umístěn, stala zaváděcí.

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

Poté se USB zařízení stane bootovatelným s překrytím gentoo/ (nezapomeňte do zařízení zkopírovat soubory /boot/vmlinuz a /boot/initrd).

Pokud z nějakého důvodu nebyl disk připojen do /mnt a ukázalo se, že /mnt je umístěn na hlavním zařízení /dev/sda, bude bootloader přepsán na /dev/sda. Při zadávání volby --bootable byste měli být opatrní.

Během procesu zavádění podporuje Booty řadu voleb, které lze předat zavaděči, grub.cfg nebo syslinux.cfg. Ve výchozím nastavení, bez jakýchkoli voleb, jsou všechny překryvy načteny a rozbaleny do tmpfs (výchozí volba ooty.use-shmfs). Chcete-li použít Overlay FS, musíte použít volbu booty.use-overlayfs. Volba booty.copy-to-ram nejprve zkopíruje překryvy do tmpfs, poté je pouze připojí a načte. Po zkopírování lze USB zařízení (nebo jiné úložné zařízení) odebrat.

Zdroj: opennet.ru

Přidat komentář