booty - pripomoček za ustvarjanje zagonskih slik in pogonov

Predstavljen program Booty, ki vam omogoča, da z enim ukazom ustvarite zagonske initrd slike, datoteke ISO ali pogone, ki vsebujejo katero koli distribucijo GNU/Linux. Koda je napisana v lupini POSIX in distributer licenciran pod GPLv3.

Vse distribucije, zagnane s programom Booty, izvajajo SHMFS (tmpfs) ali SquashFS + Overlay FS, po izbiri uporabnika. Distribucija se ustvari enkrat, med postopkom zagona pa se izberejo parametri, ki omogočajo uporabo čistega tmpfs za root ali kombinacijo Overlay FS + SquashFS s snemanjem sprememb v tmpfs. Prenosljivi distribucijski komplet je mogoče predhodno kopirati v RAM, kar vam omogoča, da po prenosu in kopiranju distribucijskega kompleta v pomnilnik odklopite pogon USB.

Prvič, Booty ustvari lastno sliko initrd, ki lahko uporablja izvorne pripomočke iz trenutnega sistema ali busyboxa. V initramfs je mogoče vključiti (pakirati) celoten distribucijski komplet, nameščen v imeniku (chroot). To je lahko koristno, ko morate nadgraditi sistem z uporabo kexeca: preprosto znova naložite initrd z novim jedrom in novim sistemom znotraj initrd.

Ustvarjanje začetne slike, specifične za Booty:

mkdir initramfs/
mkinitramfs initramfs/ --izhod initrd

Ustvarjanje initrd slike, vključno z distribucijo iz imenika “gentoo/”:

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

Po tem je ta initrd slika popolnoma pripravljena za nalaganje, na primer prek PXE ali prek kexeca.

Nato Booty generira slike s sistemom, ki je določen kot »prekrivne slike«. Na primer, lahko namestite (razpakirate arhiv) pogojni Gentoo v ločen imenik, po katerem bo s pomočjo Booty ustvarjen arhiv cpio ali slika SquashFS s tem sistemom. Prav tako lahko konfigurirate distribucijo v ločenem imeniku in kopirate svoje osebne nastavitve v drug imenik. Vse te "plasti" bodo zaporedno naložene ena na drugo in ustvarile en sam delovni sistem.

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

Konec koncev vam Booty omogoča ustvarjanje zagonskih slik ISO in pogonov USB, HDD, SSD in drugih pogonov z namestitvijo zgornjega sistema iz slik. Booty podpira ustvarjanje zagonskih sistemov BIOS in UEFI. Podprta sta zagonska nalagalnika GRUB2 in SYSLINUX. Zagonske nalagalnike je mogoče kombinirati, na primer uporabiti SYSLINUX za zagon v BIOS in GRUB2 za UEFI. Za ustvarjanje slik ISO boste dodatno potrebovali paket cdrkit (genisoimage) ali xorriso (xorrisofs), med katerima lahko izbirate.

Edino potrebno dodatno dejanje je vnaprejšnja priprava jedra (vmlinuz) za zagon. Avtor (Spoofing) priporoča uporabo "make defconfig". Preden ustvarite sliko, morate pripraviti imenik tako, da postavite jedro vmlinuz in predhodno pripravljen »prazen« initrd, ustvarjen v prvem primeru.

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

S tem je priprava končana, zdaj lahko ustvarimo ISO slike iz tega imenika.

Naslednji ukaz bo ustvaril sliko ISO, ne zagonsko, ampak samo ISO:

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

Če želite ustvariti zagonsko sliko, morate podati možnost »--legacy-boot« za BIOS oziroma »--efi« za UEFI; možnosti kot parametra sprejmeta bodisi grub2 ali syslinux; lahko določite tudi samo eno možnost ( na primer podpora za zagon UEFI ni potrebna, morda ni navedena).

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

In tako kot prej so bile slike s sistemom vključene v initrd, jih lahko vključite v ISO.

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

Po tem ukazu bo ustvarjena zagonska slika BIOS/UEFI ISO, ki naloži Gentoo v sliko SquashFS z uporabo Overlay FS z uporabo tmpfs za shranjevanje podatkov. Jedro mora biti zgrajeno s podporo za Overlay FS s SquashFS. Vendar, če iz nekega razloga to ni potrebno, lahko uporabite možnost “—cpio” namesto —squashfs za pakiranje gentoo/ kot arhiv cpio, v tem primeru bo arhiv razpakiran neposredno v tmpfs ob zagonu, glavna stvar je, da je imel tmpfs za razpakiranje sistema dovolj RAM-a.

Zanimivo dejstvo: če sliko ISO, ustvarjeno z možnostjo »—efi«, razpakirate na bliskovni pogon FAT32 s preprostim kopiranjem datotek (cp -r), se bo bliskovni pogon zagnal v načinu UEFI brez predhodne priprave, zahvaljujoč posebnostim prenosnikov UEFI.

Poleg zagonskih ISO-jev je mogoče ustvariti kateri koli zagonski pogon z enakimi parametri: USB, HDD, SSD itd., in ta pogon lahko še naprej uporabljate za predvideni namen. Če želite to narediti, morate na primer namestiti napravo USB in na njej zagnati mkbootisofs. Samo dodajte eno možnost »—bootable«, tako da pogon, na katerem se nahaja navedeni imenik, postane zagonski.

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

Po tem bo naprava USB postala zagonska s prekrivkom gentoo/ (ne pozabite kopirati datotek /boot/vmlinuz in /boot/initrd v napravo).

Če pogon iz nekega razloga ni bil nameščen v /mnt in se izkaže, da se /mnt nahaja na glavni napravi /dev/sda, bo zagonski nalagalnik prepisan v /dev/sda. Bodite previdni, ko podajate možnost --bootable.

Med postopkom zagona Booty podpira številne možnosti, ki jih je mogoče posredovati zagonskemu nalagalniku grub.cfg ali syslinux.cfg. Privzeto, brez kakršnih koli možnosti, se vse prekrivke naložijo in razpakirajo v tmpfs (privzeta možnost ooty.use-shmfs). Za uporabo Overlay FS morate uporabiti možnost booty.use-overlayfs. Opcija booty.copy-to-ram najprej skopira prekrivke v tmpfs, nato jih le poveže in naloži. Po kopiranju lahko napravo USB (ali drugo shranjevalno napravo) odstranite.

Vir: opennet.ru

Dodaj komentar