booty — utile per creare immagini e dispositivi di avvio

È disponibile il programma Booty, che permette di creare con un solo comando immagini di avvio initrd, file ISO o dispositivi contenenti qualsiasi distribuzione GNU/Linux. Il codice è scritto in POSIX shell e distribuito sott Licenza GPLv3.

Tutte le distribuzioni caricate utilizzando Booty funzionano sia in SHMFS (tmpfs) sia in SquashFS + Overlay FS, a scelta dell'utente. La distribuzione viene creata una sola volta e, durante il processo di avvio, si possono selezionare le opzioni che consentono di utilizzare un tmpfs pulito per la radice, oppure una combinazione di Overlay FS + SquashFS con registrazione delle modifiche in tmpfs. È possibile copiare preventivamente la distribuzione avviata nella RAM, consentendo così di scollegare l'unità USB dopo l'avvio e la copia della distribuzione in memoria.

Prima di tutto, Booty genera la propria immagine initrd, nella quale possono essere utilizzati gli strumenti nativi dell'attuale sistema o busybox. È possibile includere (impacchettare) completamente la distribuzione installata nella directory (chroot) nell'initramfs. 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 dell'immagine initrd includendo la distribuzione dalla directory «gentoo/»:

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

Dopo di che, quest'immagine initrd è completamente pronta per il boot, ad esempio tramite PXE o kexec.

Successivamente, Booty genera immagini con il sistema specificato come «overlay». Ad esempio, è possibile installare (decomprimere un archivio) una versione di Gentoo in una directory separata, dopodiché, usando Booty, verrà generato un archivio cpio o un'immagine SquashFS con questo sistema. Inoltre, si può configurare un sistema in una directory separata e copiare impostazioni personali in un'altra directory. Tutti questi «livelli» verranno caricati in sequenza l'uno sopra l'altro, creando un sistema operativo unico e funzionante.

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

In definitiva, Booty consente di creare immagini ISO avviabili e supporti USB, HDD, SSD e altri, installando il sistema descritto dalle immagini. Booty supporta la creazione di sistemi di avvio BIOS e UEFI. Supporta i caricatori GRUB2 e SYSLINUX. I caricatori possono essere combinati, ad esempio usando SYSLINUX per l'avvio in BIOS e GRUB2 per UEFI. Per la creazione di immagini ISO è necessario un pacchetto aggiuntivo come cdrkit (genisoimage) o xorriso (xorrisofs), a scelta.

L'unica azione aggiuntiva richiesta è preparare in anticipo il kernel (vmlinuz) per il boot. L'autore (Spoofing) raccomanda di usare "make defconfig". Prima di creare l'immagine, è necessario preparare la directory, inserendo al suo interno il kernel vmlinuz e un initrd "vuoto" preparato nell'esempio precedente.

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

La preparazione è completata, ora possiamo creare le immagini ISO da questa directory.

Il comando seguente 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. Come parametri, le opzioni accettano o grub2 o syslinux, ed è possibile specificarne anche solo una (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

Inoltre, come in precedenza sono state incluse le immagini del sistema in initrd, è possibile includerle 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 l'Overlay FS, che utilizza tmpfs per la memorizzazione dei dati. Il kernel deve essere compilato con supporto per Overlay FS e SquashFS. Tuttavia, se per qualche motivo ciò non è necessario, è possibile utilizzare l'opzione «—cpio» invece di —squashfs, per imballare gentoo/ come archivio cpio; in questo caso, l'archivio verrà estratto direttamente in tmpfs all'avvio, a condizione che ci sia sufficiente memoria RAM per estrarre il sistema in tmpfs.

Curiosità: se l'immagine ISO creata utilizzando l'opzione «—efi» viene estratta su una chiavetta USB FAT32 mediante semplice copia dei file (cp -r), la chiavetta Flash si avvierà in modalità UEFI senza alcuna preparazione preliminare, grazie alle specificità dei caricatori di avvio UEFI.

Oltre a ISO di avvio con le stesse specifiche, è possibile creare qualsiasi dispositivo di avvio: USB, HDD, SSD e così via, e questo dispositivo può continuare a essere utilizzato per il suo scopo principale. Per farlo, è necessario montare, ad esempio, il dispositivo USB ed eseguire mkbootisofs su di esso. Basta aggiungere un'opzione «—bootable» per rendere il dispositivo in cui si trova la directory indicata avviabile.

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

Dopo di ciò, il dispositivo USB diventerà avviabile con l'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 caricatore di avvio verrà quindi sovrascritto su /dev/sda. È necessario prestare attenzione quando si specifica l'opzione —bootable.

Durante il caricamento, Booty supporta diverse opzioni che possono essere specificate nel bootloader, grub.cfg o syslinux.cfg. Di default, senza alcuna opzione, vengono avviati e decompressi 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 precedentemente gli overlay in tmpfs, dopodiché li monta e li avvia. Dopo la copia, il dispositivo USB (o un altro supporto) può essere estratto.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster