Vorrei presentarvi un framework chiamato boobstrap, scritto in POSIX shell, per la creazione di immagini di avvio con distribuzioni GNU/Linux. Il framework permette di seguire l'intero processo in tre semplici passi: dal dispiegamento del sistema in chroot, alla creazione dell'immagine initramfs che include il sistema da chroot, e infine all'immagine ISO di avvio. Boobstrap include tre utilità: mkbootstrap, mkinitramfs e mkbootisofs.
mkbootstrap installa il sistema in una directory separata, con supporto nativo per CRUX, mentre per Arch Linux / Manjaro e le distribuzioni basate su Debian è necessario utilizzare strumenti di terze parti come pacstrap, basestrap e debootstrap.
mkinitramfs crea un'immagine initramfs; puoi usare il sistema installato nella directory come "overlay", compresso con SquashFS, o avviando direttamente nella sistema operativo in tmpfs. Ad esempio, il comando mkinitramfs `mktemp -d` —overlay "arch-chroot/" —overlay "\/home" —squashfs-xz —output initrd creerà un file initrd, includendo due overlay con il sistema "arch-chroot/" e il tuo "\/home", compressi con SquashFS, che puoi poi caricare tramite PXE in tmpfs o creare un'immagine ISO di avvio con questo initrd.
mkbootisofs crea un'immagine ISO di avvio BIOS / UEFI dalla directory specificata. Nella directory è sufficiente posizionare \/boot\/vmlinuz e \/boot\/initrd.
Boobstrap non utilizza busybox, e per creare un ambiente di lavoro per initramfs viene coperta una minima selezione di programmi usando ldd, necessari per il caricamento e il passaggio al sistema. L'elenco dei programmi da copiare, come tutto il resto, può essere configurato tramite il file di configurazione \/etc\/boobstrap\/boobstrap.conf. Inoltre, puoi installare qualsiasi distribuzione minimalista in un chroot separato, da cui poi creare un ambiente initramfs completo. Come tale, si suggerisce di utilizzare il modello "crux_gnulinux-embedded", che dopo la compressione xz occupa un compromettente 37mb. Busybox, oltre alla sua dimensione, che è di 3-5mb contro i 30-50mb di un ambiente GNU/Linux completo, non offre ulteriori vantaggi, rendendo quindi l'uso di busybox nel progetto non giustificato.
Come controllare rapidamente la funzionalità e iniziare a lavorare? Installa e avvia.
# git clone https://github.com/sp00f1ng/boobstrap.git
# cd boobstrap
# make install# boobstrap/tests/crux_gnulinux-download-and-build
È inoltre necessario installare le dipendenze, ovvero: cpio, grub, grub-efi, dosfstools, xorriso. L'uso di squashfs-tools non è obbligatorio, puoi lavorare in tmpfs a condizione che ci sia una quantità sufficiente di memoria RAM. Se qualcosa manca nel sistema, boobstrap lo segnalerà all'avvio.
Per semplificare la creazione delle configurazioni, boobstrap offre di utilizzare "templates" e "systems", il cui scopo è quello di utilizzare "templates" (bootstrap-templates/) per una rapida installazione dei sistemi da un file, e i "systems" (bootstrap-systems/) per configurare le configurazioni finali.
Ad esempio, l'esecuzione dello script boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild installerà una configurazione minima del sistema CRUX GNU/Linux e la salverà nel file crux_gnulinux-embedded.rootfs, poi esegui boobstrap/bootstrap-systems/default/crux_gnulinux.bbuild che caricherà la configurazione primaria dal file menzionato, eseguirà tutta la configurazione necessaria e preparerà l'ISO di avvio. Questo è utile quando, ad esempio, molti sistemi utilizzano configurazioni simili: per non dover descrivere ogni volta lo stesso insieme di pacchetti, utilizzi un template, da cui poi crei le immagini di avvio dei sistemi con configurazione finale.
Dove usare tutto questo?
Configuri il sistema in un file una sola volta e con l'esecuzione di quest'ultimo esegui la sua build e/o aggiornamento. Il sistema funziona in tmpfs, il che lo rende essenzialmente monouso. In caso di malfunzionamento del sistema, con un semplice tocco del pulsante di Reset torni allo stato originale. Puoi tranquillamente eseguire rm -rf /.
Puoi configurare localmente le configurazioni di tutti i tuoi sistemi, creare immagini, testarle in una macchina virtuale o su un "hardware" separato, e poi caricarle su un server remoto ed eseguendo solo due comandi kexec -l /vmlinuz —initrd=/initrd && kexec -e aggiornare l'intero sistema, riavviandolo in tmpfs.
In modo analogo, puoi trasferire tutti i sistemi, ad esempio su VDS, per lavorare in tmpfs, e criptare il disco /dev/vda utilizzandolo esclusivamente per i dati, senza la necessità di mantenere il sistema operativo su di esso. L'unico "punto di fuga delle informazioni" in tal caso sarà solo il "dump a freddo" della memoria della tua macchina virtuale, e in caso di compromissione del sistema (ad esempio, tramite forza bruta della password ssh o vulnerabilità in exim), puoi caricare un nuovo ISO tramite il "pannello di controllo" del tuo provider per ripristinare il VDS, ricordando di modificare la configurazione del sistema per chiudere tutte le vulnerabilità. Questo è più veloce che una reinstallazione, una successiva configurazione e/o un ripristino da backup, poiché fondamentalmente, l'ISO caricato con il tuo sistema è anche il tuo backup. "Sette mali - un reset."
Alla fine, puoi creare qualsiasi distribuzione per le tue esigenze, scriverla su una chiavetta USB e lavorarci sopra, aggiornando quando necessario e riscrivendola di nuovo sulla chiavetta USB. Conserva tutti i dati nel "cloud". Non c'è più bisogno di preoccuparsi per la sicurezza del sistema e di fare backup, poiché il sistema, ripeto, è diventato fondamentalmente "usa e getta".
Le tue richieste, suggerimenti e commenti sono benvenuti.
Nel repository al link seguente trovi un dettagliato README file (in inglese) con la descrizione di ciascun'utilità e esempi di utilizzo; esiste inoltre una documentazione dettagliata in russo e la storia dello sviluppo, disponibili al link: Complesso di script di avvio boobstrap.
Fonte: linux.org.ru

