Dopo soli un mese di sviluppo tranquillo, è stato rilasciato boobstrap v1.2 — una suite di strumenti POSIX shell per creare immagini e dispositivi di avvio.
Boobstrap consente con un solo comando:
- Creare immagini initramfs, includendo qualsiasi distribuzione GNU/Linux.
- Creare immagini ISO avviabili con qualsiasi distribuzione GNU/Linux.
- Creare dispositivi USB, HDD, SSD avviabili con qualsiasi distribuzione GNU/Linux.
La funzionalità principale consiste nel fatto che, dopo l'avvio, GNU/Linux funzionerà completamente in tmpfs pulito o utilizzando Overlay FS e immagini SquashFS, a tua scelta. Devi installare qualsiasi distribuzione GNU/Linux in una directory, effettuare tutte le configurazioni necessarie (anche in una directory separata), e poi con un solo comando crei il dispositivo avviabile, che sia un'immagine ISO, USB, HDD o SSD, o puoi anche creare un'immagine initrd con il sistema. Il sistema sarà sempre in uno stato costante e, in caso di malfunzionamento, puoi tornare allo stato iniziale premendo un solo pulsante di Reset. Vuoi trasferire il sistema su un altro host o creare un sistema da un contenitore esistente? Boobstrap si occuperà di questo.
Tra le principali novità:
- Aggiunta la supporto per il bootloader syslinux, oltre a grub2 già presente. Ora puoi scegliere di utilizzare grub2, syslinux, o entrambi quando crei il dispositivo avviabile o l'immagine ISO, grazie alle opzioni —legacy-boot syslinux e —efi grub2, rispettivamente, e puoi anche scegliere quali modalità di avvio supporterà l'immagine ISO.
- Aggiunta l'opzione —bootable, che rende qualsiasi dispositivo di blocco avviabile. Per la creazione di immagini ISO, deve essere utilizzata l'opzione —iso-9660.
- Aggiunte le opzioni di avvio del kernel boobs.use-shmfs per copiare il contenuto di tutti i livelli in tmpfs, boobs.use-overlayfs per avviare utilizzando Overlay FS, boobs.search-rootfs per scegliere la fonte con il sistema, boobs.copy-to-ram per copiare il sistema in memoria disabilitando successivamente il dispositivo.
- L'unica dipendenza obbligatoria per il funzionamento di boobstrap è solo cpio. Le altre dipendenze sono opzionali: grub2, syslinux sono necessarie per la creazione di supporti avviabili, cdrkit o xorriso a scelta per la creazione di ISO, squashfs-tools per la creazione di SquashFS, ma nulla vieta di utilizzare l'opzione —cpio invece di —squashfs per impacchettare la tua distribuzione in un archivio. busybox sarà utilizzato solo se installato, altrimenti verranno coperti tutti gli strumenti necessari dal tuo sistema. In questo modo, il funzionamento di boobstrap è garantito praticamente ovunque.
Ad esempio, il seguente comando creerà un'immagine initrd includendo in essa il sistema gentoo-chroot/, impacchettato come immagine SquashFS, che verrà avviata correttamente dopo il caricamento del initrd stesso. Ricorda che per utilizzare Overlay FS insieme a SquashFS, è necessario passare l'opzione al kernel boobs.use-overlayfs, altrimenti il sistema verrà estratto in tmpfs. Tutte le impostazioni aggiuntive possono essere effettuate in una directory separata, per esempio gentoo-settings/
# mkdir initramfs/
# mkinitramfs initramfs/ —overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs > initrd
L'immagine initrd con il sistema all'interno è comoda quando è necessario distribuire rapidamente il sistema, ad esempio tramite PXE, oppure in un sistema avviato, è possibile passare a initrd utilizzando il comando kexec -l /boot/vmlinuz-* —initrd=./initrd && kexec -e, oppure, essendo nell'interfaccia di una macchina virtuale QEMU (forse anche Proxmox), avviarsi da una fonte remota utilizzando tre comandi IPXE: kernel http://[…]/vmlinuz, initrd http://[…]/initrd, boot. Come puoi vedere, anche un semplice initrd con il tuo sistema all'interno ha molte varianti di utilizzo.
Per creare supporti e immagini avviabili viene utilizzato il comando mkbootisofs, ad esempio, ecco come si presenta la creazione di un'immagine ISO con l'opzione —iso-9660 utilizzando syslinux per l'avvio in Legacy-mode (BIOS) e grub2 per l'avvio in EFI-mode (UEFI).
# mkdir initrd/
# mkinitramfs initrd/ > initrd
# mkdir isoimage/
# mkdir isoimage/boot
# cp /boot/vmlinuz-* isoimage/boot/vmlinuz
# cp initrd isoimage/boot/initrd
# mkbootisofs isoimage/ —iso-9660 —legacy-boot syslinux —efi grub2 —output boot.iso
—overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs
Puoi specificare una delle modalità di avvio o non specificarne affatto, e l'immagine ISO corrispondente verrà creata con successo.
L'installazione su qualsiasi dispositivo con successivo avvio da esso avviene con l'opzione —bootable. È necessario creare manualmente le partizioni sul dispositivo (fdisk) e formattarle (mkdosfs, mke2fs e così via), dopodiché montare il dispositivo in una directory.
# mount /dev/sdb1 /mnt/drive/
# mkbootisofs /mnt/drive/ —bootable —legacy-boot grub2 —efi grub2
—overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs
Attenzione! L'opzione —bootable determina da quale dispositivo di blocco è montata la directory, e installa il bootloader in quel dispositivo. Se dimentichi di montare il dispositivo o indichi erroneamente una directory che si trova, ad esempio, in /dev/sda, quindi il bootloader in /dev/sda verrà sovrascritto. Usa —bootable con cautela.
L'installazione di qualsiasi sistema GNU/Linux si riduce a un solo comando. L'installazione può avvenire su qualsiasi HDD, SSD e così via. Ricorda che questo è ancora un sistema che funziona da Overlay FS / SquashFS, oppure si carica completamente in tmpfs, a scelta.
Oltre a tutto, boobstrap ha una serie di interessanti caratteristiche e funzionalità aggiuntive!
Ad esempio, puoi generare un initrd personalizzato con boobstrap utilizzando il comando mkinitramfs `mktemp -d` > /boot/initrd e avviarti nel tuo sistema con questo initrd, specificando le opzioni del kernel boobs.use-overlayfs boobs.search-rootfs=/dev/sda1. In questo caso, /dev/sda1, dove è installato il tuo sistema principale, sarà montato come strato read-only di Overlay FS, e tutte le modifiche che apporterai saranno registrate temporaneamente in tmpfs. Puoi aggiungere l'opzione boobs.copy-to-ram e allora tutto il tuo sistema sarà copiato in RAM, mentre il disco rigido può essere scollegato dal computer. È utile quando hai bisogno di rompere qualcosa e puoi annullare le modifiche semplicemente riavviando. 🙂
Ma cosa succede se hai bisogno di salvare tutte le modifiche nel sistema? Ad esempio, hai installato software o altro. Lavorando in puro tmpfs, purtroppo, ciò non è possibile, ma se sei partito utilizzando Overlay FS, tutte le modifiche apportate nel sistema vengono salvate in una directory tmpfs separata: /mnt/overlayfs/rootfs-changes! Lo scenario d'uso è molto semplice. Sei entrato nel tuo sistema da un dispositivo USB, hai lavorato, e vuoi salvare tutto ciò che hai modificato, quindi crea un archivio cpio e mettilo qui, sullo stesso dispositivo USB.
# cd /mnt/overlayfs/rootfs-changes
# find . -print0 | cpio —create —format "newc" —null —quiet > /mnt/drive/rootfs-changes.cpio
# cd $OLDPWD
Puoi posizionare l'archivio accanto ad altri 'strati' SquashFS e cpio, così alla successiva avvio l'archivio sarà montato come un ulteriore strato read-only. Per continuare a lavorare con le modifiche, utilizza l'opzione di avvio boobs.rootfs-changes=/rootfs-changes.cpio. L'opzione boobs.rootfs-changes monta lo strato specificato con accesso in scrittura. Uno strato può essere un dispositivo a blocchi, ad esempio puoi specificare /dev/sdb1, quindi tutte le modifiche apportate in Overlay FS saranno semplicemente salvate su /dev/sdb1.
Nonostante tutte le possibilità, boobstrap è ancora in fase di sviluppo e tutte le tue osservazioni e suggerimenti sono benvenuti!
Fonte: linux.org.ru

