Programul a fost prezentat , care permite crearea imaginilor de boot initrd, fișierelor ISO sau unităților, incluzând orice distribuție GNU/Linux într-o singură comandă. Codul este scris în POSIX shell și sub licența GPLv3.
Toate distribuțiile încărcate folosind Booty funcționează fie în SHMFS (tmpfs), fie în SquashFS + Overlay FS, la alegerea utilizatorului. Distribuția este creată o singură dată, iar în timpul încărcării se aleg parametrii care permit utilizarea tmpfs curat pentru rădăcină, sau combinația Overlay FS + SquashFS cu scrierea modificărilor în tmpfs. Există posibilitatea de a copia anticipat distribuția încărcată în RAM, ceea ce permite deconectarea unității USB după încărcare și copierea distribuției în memorie.
În primul rând, Booty generează propria imagine initrd, în care pot fi utilizate utilitare native din sistemul curent sau busybox. Există posibilitatea de a include (a împacheta) întreaga distribuție aflată în directorul de distribuție (chroot) în initramfs. Acest lucru poate fi util atunci când este necesară actualizarea sistemului folosind kexec: pur și simplu reporniți initrd cu un nou nucleu și un nou sistem în interiorul initrd.
Crearea imaginii initrd specifice Booty:
mkdir initramfs/
mkinitramfs initramfs/ —output initrd
Crearea imaginii initrd cu includerea distribuției din directorul „gentoo/”:
mkdir initramfs/
mkinitramfs initramfs/ —overlay gentoo/ —cpio —output initrd
După care această imagine initrd este complet pregătită pentru încărcare, de exemplu, prin PXE sau prin kexec.
Apoi, Booty generează imagini cu sistemul indicat ca „overlay”. De exemplu, se poate instala (dezarhiva un arhiv) o distribuție Gentoo în directorul separat, după care, folosind Booty, va fi generat un arhiv cpio sau o imagine SquashFS cu acest sistem. De asemenea, se poate realiza configurarea distribuției într-un director separat, iar în alt director se pot copia setările personale. Toate aceste „straturi” vor fi încărcate succesiv unul peste altul și vor crea un sistem de lucru unitar.
mkdir initramfs/
mkinitramfs initramfs/ —overlay gentoo/ —overlay settings/ —overlay documents/ —squashfs —output initrd
În cele din urmă, Booty permite crearea imaginilor ISO bootabile și unități USB, HDD, SSD și alte medii de stocare, instalând sistemul descris mai sus din imagini. suportă crearea sistemelor de încărcare BIOS și UEFI. Se suportă încărcătoare GRUB2 și SYSLINUX. Încărcătoarele pot fi combinate, de exemplu, pentru a folosi SYSLINUX pentru BIOS și GRUB2 pentru UEFI. Pentru a crea imagini ISO, va fi necesar un pachet suplimentar cdrkit (genisoimage) sau xorriso (xorrisofs), la alegere.
Singura acțiune suplimentară necesară este pregătirea prealabilă a nucleului (vmlinuz) pentru încărcare. Autorul (Spoofing) recomandă utilizarea „make defconfig”. Înainte de a crea imaginea, trebuie să pregătiți directorul, plasând în el nucleul vmlinuz și un „initrd” „gol” pregătit anterior, creat în exemplul anterior.
mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/boot/initrd
Acum pregătirea este completă, putem crea imagini ISO din acest director.
Următoarea comandă va crea o imagine ISO, non-bootable, doar ISO:
mkdir iso/
mkbootisofs iso/ —output archive.iso
Pentru a crea o imagine bootable, trebuie să specificați opțiunea „—legacy-boot” pentru BIOS și „—efi” pentru UEFI, respectiv, ca parametri, opțiunile acceptă fie grub2, fie syslinux; de asemenea, poate fi specificată doar o opțiune (de exemplu, dacă suportul UEFI nu este necesar, poate fi omis).
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
Și, așa cum au fost incluse anterior imaginile cu sistemul în initrd, acestea pot fi incluse în ISO.
mkbootisofs iso/ —overlay gentoo/ —squashfs —legacy-boot grub2 —efi grub2 —output gentoo.iso
După această comandă va fi generată o imagine ISO bootable BIOS/UEFI, care va încărca Gentoo dintr-o imagine SquashFS folosind Overlay FS, folosind tmpfs pentru a stoca datele. Nucleul trebuie să fie compilat cu suport pentru Overlay FS cu SquashFS. Cu toate acestea, dacă acest lucru nu este necesar din anumite motive, se poate folosi opțiunea „—cpio” în loc de —squashfs, pentru a împacheta gentoo/ ca arhivă cpio, în acest caz arhiva va fi dezarhivată direct în tmpfs la pornire, important fiind să existe suficientă memorie RAM pentru a dezarhiva sistemul în tmpfs.
Un fapt interesant: dacă imaginea ISO creată utilizând opțiunea „—efi” este dezarhivată pe un stick USB FAT32 prin simpla copiere a fișierelor (cp -r), atunci unitatea flash va boota în modul UEFI fără nicio pregătire prealabilă, datorită specificului încărcătoarelor UEFI.
În plus față de imaginile ISO de boot cu aceleași specificații, poate fi creat orice mediu de boot: USB, HDD, SSD și așa mai departe, iar acest mediu poate continua să fie folosit conform scopului său principal. Pentru aceasta, este necesar să se monteze, de exemplu, un dispozitiv USB și să se execute comanda mkbootisofs pe acesta. Tot ce trebuie să faceți este să adăugați o opțiune „—bootable”, astfel încât mediul pe care se află directorul specificat să devină bootabil.
mount /dev/sdb1 /mnt
mkbootisofs /mnt —overlay gentoo/ —squashfs —legacy-boot grub2 —efi grub2 —bootable
După aceasta, dispozitivul USB va deveni bootabil cu overlay gentoo/ (nu uitați să copiați fișierele /boot/vmlinuz și /boot/initrd pe dispozitiv).
Dacă din diverse motive mediul nu a fost montat în /mnt, iar /mnt se află pe dispozitivul principal /dev/sda, atunci bootloader-ul va fi rescris pe /dev/sda. Trebuie să aveți grijă atunci când specificați opțiunea —bootable.
În timpul bootării, Booty acceptă o serie de opțiuni care pot fi transmise în bootloader, grub.cfg sau syslinux.cfg. Implicit, fără nicio opțiune, se efectuează bootarea și dezarhivarea tuturor overlay-urilor în tmpfs (opțiune implicită ooty.use-shmfs). Pentru a utiliza Overlay FS trebuie utilizată opțiunea booty.use-overlayfs. Opțiunea booty.copy-to-ram copiază în prealabil overlay-urile în tmpfs, după care le montează și le încarcă. După copiere, dispozitivul USB (sau alt mediu) poate fi extras.
Sursa: opennet.ro
