booty: utilità per la creazione di immagini e unità di avvio

Programma presentato Bottino, che ti consente di creare immagini initrd avviabili, file ISO o unità contenenti qualsiasi distribuzione GNU/Linux con un solo comando. Il codice è scritto nella shell POSIX e distribuito da concesso in licenza con GPLv3.

Tutte le distribuzioni avviate utilizzando Booty eseguono SHMFS (tmpfs) o SquashFS + Overlay FS, a scelta dell'utente. La distribuzione viene creata una volta e durante il processo di avvio vengono selezionati i parametri che consentono di utilizzare tmpfs puro per il root o una combinazione di Overlay FS + SquashFS con la registrazione delle modifiche su tmpfs. È possibile pre-copiare il kit di distribuzione scaricabile nella RAM, cosa che consente di disconnettere l'unità USB dopo aver scaricato e copiato il kit di distribuzione in memoria.

Prima di tutto, Booty genera la propria immagine initrd, che può utilizzare le utilità native del sistema attuale o busybox. È possibile includere (pack) in initramfs l'intero kit di distribuzione installato nella directory (chroot). Questo può essere utile quando devi aggiornare un sistema usando kexec: ricarica semplicemente 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 inclusa la distribuzione dalla directory "gentoo/":

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

Dopodiché questa immagine initrd è completamente pronta per il caricamento, ad esempio tramite PXE o tramite kexec.

Successivamente, Booty genera immagini con il sistema specificato come "overlay". Ad esempio, è possibile installare (decomprimere l'archivio) un Gentoo condizionale in una directory separata, dopodiché verrà generato un archivio cpio o un'immagine SquashFS con questo sistema utilizzando Booty. Puoi anche configurare la distribuzione in una directory separata e copiare le tue impostazioni personali in un'altra directory. Tutti questi "strati" verranno caricati in sequenza uno sopra l'altro e creeranno un unico sistema di lavoro.

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

In definitiva, Booty ti consente di creare immagini ISO avviabili e unità USB, HDD, SSD e altre unità installando il sistema di cui sopra dalle immagini. Bottino supporta la creazione di sistemi di avvio BIOS e UEFI. Sono supportati i bootloader GRUB2 e SYSLINUX. I bootloader possono essere combinati, ad esempio, utilizzare SYSLINUX per avviare il BIOS e GRUB2 per UEFI. Per creare immagini ISO, avrai inoltre bisogno del pacchetto cdrkit (genisoimage) o xorriso (xorrisofs), tra cui scegliere.

L'unica azione aggiuntiva richiesta è preparare in anticipo il kernel (vmlinuz) per l'avvio. L'autore (Spoofing) consiglia di utilizzare "make defconfig". Prima di creare l'immagine è necessario preparare una directory inserendo il kernel vmlinuz e l'initrd “vuoto” precedentemente preparato e creato nel primo esempio.

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

Con questo la preparazione è completa, ora possiamo creare immagini ISO da questa directory.

Il seguente comando creerà un'immagine ISO, non avviabile, solo un ISO:

mkdir iso/
mkbootisofs iso/ --output archivio.iso

Per creare un'immagine di avvio, è necessario specificare rispettivamente l'opzione "-legacy-boot" per BIOS e "-efi" per UEFI; le opzioni accettano grub2 o syslinux come parametri; è anche possibile specificare solo un'opzione (ad esempio, Il supporto di avvio UEFI non è necessario, potrebbe non essere specificato).

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 proprio come prima, le immagini con il sistema erano incluse nell'initrd, puoi includerle nell'ISO.

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

Dopo questo comando, verrà generata un'immagine ISO BIOS/UEFI avviabile che carica Gentoo nell'immagine SquashFS utilizzando Overlay FS, utilizzando tmpfs per l'archiviazione dei dati. Il kernel deve essere creato con il supporto Overlay FS con SquashFS. Tuttavia, se per qualche motivo ciò non è richiesto, è possibile utilizzare l'opzione “—cpio” invece di —squashfs per impacchettare gentoo/ come archivio cpio, nel qual caso l'archivio verrà decompresso direttamente in tmpfs all'avvio, la cosa principale è che per decomprimere il sistema tmpfs aveva abbastanza RAM.

Fatto interessante: se un'immagine ISO creata utilizzando l'opzione "—efi" viene decompressa su un'unità flash FAT32 semplicemente copiando i file (cp -r), l'unità flash si avvierà in modalità UEFI senza alcuna preparazione preliminare, grazie alle specifiche dei downloader UEFI.

Oltre agli ISO avviabili, qualsiasi unità avviabile può essere creata con gli stessi parametri: USB, HDD, SSD e così via, e questa unità può continuare a essere utilizzata per lo scopo previsto. Per fare ciò, è necessario montare, ad esempio, un dispositivo USB ed eseguire mkbootisofs su di esso. Basta aggiungere un'opzione "—bootable" in modo che l'unità su cui si trova la directory specificata diventi avviabile.

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

Dopodiché, il dispositivo USB diventerà avviabile con gentoo/ overlay (non dimenticare di copiare i file /boot/vmlinuz e /boot/initrd sul dispositivo).

Se per qualche motivo l'unità non è stata montata in /mnt e risulta che /mnt si trova sul dispositivo principale /dev/sda, il bootloader verrà riscritto in /dev/sda. Dovresti fare attenzione quando specifichi l'opzione --bootable.

Durante il processo di avvio, Booty supporta una serie di opzioni che possono essere passate al boot loader, grub.cfg o syslinux.cfg. Per impostazione predefinita, senza alcuna opzione, tutti gli overlay vengono caricati e decompressi in tmpfs (opzione predefinita ooty.use-shmfs). Per utilizzare Overlay FS è necessario utilizzare l'opzione booty.use-overlayfs. L'opzione booty.copy-to-ram copia prima gli overlay su tmpfs, dopodiché li collega e li carica. Una volta copiato, il dispositivo USB (o altro dispositivo di archiviazione) può essere rimosso.

Fonte: opennet.ru

Aggiungi un commento