È stato presentato il programma , che consente di creare immagini di avvio initrd, file ISO o unità con qualsiasi distribuzione GNU/Linux con un solo comando. Il codice è scritto in POSIX shell e sotto licenza GPLv3.
Tutte le distribuzioni caricate utilizzando Booty funzionano sia in SHMFS (tmpfs) che in SquashFS + Overlay FS, a scelta dell'utente. La distribuzione viene creata una volta e durante il processo di avvio si scelgono i parametri che consentono di utilizzare un tmpfs pulito come radice o la combinazione Overlay FS + SquashFS con scrittura delle modifiche in tmpfs. C'è anche la possibilità di copiare preventivamente la distribuzione avviabile in RAM, il che consente di scollegare l'unità USB dopo il caricamento e la copia della distribuzione in memoria.
Prima di tutto, Booty genera un'immagine initrd propria, in cui possono essere utilizzati strumenti nativi del sistema attuale o busybox. È possibile includere (impacchettare) l'intera distribuzione installata nella directory nel initramfs (chroot). Questo può essere utile quando è necessario aggiornare il sistema utilizzando kexec: basta riavviare l'initrd con un nuovo kernel e un nuovo sistema all'interno dell'initrd.
Creazione di un'immagine initrd specifica per Booty:
mkdir initramfs/
mkinitramfs initramfs/ —output initrd
Creazione di un'immagine initrd includendo la distribuzione dalla directory “gentoo/":
mkdir initramfs/
mkinitramfs initramfs/ —overlay gentoo/ —cpio —output initrd
Dopo di che, questa immagine initrd è completamente pronta per l'avvio, ad esempio, tramite PXE o tramite kexec.
In seguito, Booty genera immagini con il sistema indicato come “overlay”. Ad esempio, è possibile installare (decomprimere l'archivio) una distribuzione ipotetica Gentoo in una directory separata, dopodiché utilizzando Booty viene generato un archivio cpio o un'immagine SquashFS con questo sistema. È anche possibile configurare la distribuzione in una directory separata e copiare le impostazioni personali in un'altra directory. Tutti questi “livelli” verranno caricati uno sopra l'altro per creare un unico sistema di lavoro.
mkdir initramfs/
mkinitramfs initramfs/ —overlay gentoo/ —overlay settings/ —overlay documents/ —squashfs —output initrd
In definitiva, Booty consente di creare immagini ISO avviabili e unità USB, HDD, SSD e altre unità, installando il sistema descritto sopra dalle immagini. supporta la creazione di sistemi di avvio BIOS e UEFI. Sono supportati i caricamenti GRUB2 e SYSLINUX. I caricamenti possono essere combinati, ad esempio per l'avvio in BIOS utilizzare SYSLINUX e per UEFI — GRUB2. Per creare immagini ISO, sarà necessario il pacchetto cdrkit (genisoimage) oppure xorriso (xorrisofs), a scelta.
L'unica azione aggiuntiva necessaria è preparare in anticipo il kernel (vmlinuz) per l'avvio. L'autore (Spoofing) consiglia di utilizzare 'make defconfig'. Prima di creare l'immagine, è necessario preparare la directory, posizionando in essa il kernel vmlinuz e un 'initrd' 'vuoto' preparato in precedenza nel primo esempio.
mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/boot/initrd
A questo punto la preparazione è completata, ora possiamo creare immagini ISO da questa directory.
Il comando successivo creerà un'immagine ISO, non avviabile, semplicemente ISO:
mkdir iso/
mkbootisofs iso/ —output archive.iso
Per creare un'immagine avviabile, è necessario specificare l'opzione '—legacy-boot' per BIOS e '—efi' per UEFI, rispettivamente, come parametri accettano sia grub2 sia syslinux; è possibile indicare anche solo un'opzione (ad esempio, se non è necessaria la supporto per l'avvio UEFI, può essere omessa).
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
E inoltre, come in precedenza, le immagini con il sistema nell'initrd possono essere incluse nell'ISO.
mkbootisofs iso/ —overlay gentoo/ —squashfs —legacy-boot grub2 —efi grub2 —output gentoo.iso
Dopo questo comando verrà creato un'immagine ISO avviabile BIOS/UEFI, che avvia Gentoo da un'immagine SquashFS utilizzando Overlay FS, con tmpfs per la memorizzazione dei dati. Il kernel deve essere compilato con il supporto per Overlay FS con SquashFS. Tuttavia, se per qualche motivo non è necessario, è possibile utilizzare l'opzione '—cpio' invece di —squashfs, per impacchettare gentoo/ come archivio cpio; in tal caso, l'archivio verrà estratto direttamente in tmpfs all'avvio, purché ci sia sufficiente memoria disponibile per l'estrazione del sistema in tmpfs.
Fatto interessante: se l'immagine ISO creata con l'opzione '—efi' viene estratta su una chiavetta FAT32 semplicemente copiando i file (cp -r), la chiavetta Flash si avvierà in modalità UEFI senza alcuna preparazione preventiva, grazie alle peculiarità dei caricamenti UEFI.
Oltre alle ISO di avvio con le stesse impostazioni, è possibile creare qualsiasi dispositivo di avvio: USB, HDD, SSD, ecc.; questo dispositivo può continuare a essere utilizzato per il suo scopo originale. Per fare ciò, è necessario montare, ad esempio, il dispositivo USB ed eseguire il comando mkbootisofs su di esso. Basta aggiungere un'opzione «—bootable» affinché il dispositivo che contiene la directory specificata diventi avviabile.
mount /dev/sdb1 /mnt
mkbootisofs /mnt —overlay gentoo/ —squashfs —legacy-boot grub2 —efi grub2 —bootable
Dopo di che, il dispositivo USB diventerà avviabile con overlay gentoo/ (non dimenticare di copiare i file /boot/vmlinuz e /boot/initrd sul dispositivo).
Se per qualche motivo il dispositivo non è stato montato in /mnt, e risulta che /mnt si trovi sul dispositivo principale /dev/sda, il bootloader verrà quindi sovrascritto su /dev/sda. Si deve prestare attenzione quando si specifica l'opzione —bootable.
Durante il processo di avvio, Booty supporta una serie di opzioni che possono essere indicate nel bootloader, grub.cfg o syslinux.cfg. Per default, senza alcuna opzione, viene eseguito il caricamento e l'estrazione di tutti gli overlay in tmpfs (opzione predefinita ooty.use-shmfs). Per utilizzare Overlay FS, deve essere utilizzata l'opzione booty.use-overlayfs. L'opzione booty.copy-to-ram copia in anticipo gli overlay in tmpfs, dopo di che li monta e li carica. Dopo la copia, il dispositivo USB (o un altro supporto) può essere estratto.
Fonte: opennet.ru
