Creazione di immagini bootstrap v1.0


Creazione di immagini bootstrap v1.0

Vorrei presentare alla vostra attenzione un framework chiamato boobstrap, scritto nella shell POSIX, per creare immagini di boot con distribuzioni GNU/Linux. Il framework ti consente di eseguire l'intero processo in soli tre semplici passaggi: dalla distribuzione del sistema in un chroot, alla creazione di un'immagine initramfs che include il sistema in chroot e infine un'immagine ISO avviabile. boobstrap include tre utilità rispettivamente mkbootstrap, mkinitramfs e mkbootisofs.

mkbootstrap installa il sistema in una directory separata, esiste il supporto nativo per CRUX e, nel caso di distribuzioni basate su Arch Linux / Manjaro e Debian, è necessario utilizzare rispettivamente utilità di terze parti pacstrap, basestrap e debootstrap.

mkinitramfs crea un'immagine initramfs, puoi utilizzare il sistema installato nella directory come "overlay", compresso utilizzando SquashFS o, dopo aver avviato il sistema, lavorare direttamente in tmpfs. Quindi, ad esempio, il comando mkinitramfs `mktemp -d` --overlay "arch-chroot/" --overlay "/home" --squashfs-xz --output initrd creerà un file initrd, inclusi due overlay con "arch- chroot/" e il tuo "/home", compresso utilizzando SquashFS, che puoi quindi avviare tramite PXE in tmpfs o creare un'immagine ISO avviabile con questo initrd.

mkbootisofs crea un'immagine ISO avviabile BIOS/UEFI dalla directory specificata. Basta inserire /boot/vmlinuz e /boot/initrd nella directory.

boobstrap non utilizza busybox e per creare un ambiente initramfs funzionante, viene copiato un set minimo di programmi utilizzando ldd, necessario per avviare e passare 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 puoi quindi creare un ambiente initramfs completo. In quanto ambiente così minimalista, ma allo stesso tempo completo, si propone di utilizzare il modello "crux_gnulinux-embedded", che dopo xz occupa un compromesso di 37 MB. busybox, oltre alle sue dimensioni, 3-5 MB contro 30-50 MB di un ambiente GNU/Linux completo, non offre più alcun vantaggio, quindi utilizzare busybox in un progetto non sembra appropriato.

Come verificare rapidamente la funzionalità e iniziare? Installa ed esegui.

# git clone https://github.com/sp00f1ng/boobstrap.git
# cinturino per cd
# make install# boobstrap/tests/crux_gnulinux-download-and-build
# qemu-system-x86_64 -enable-kvm -m 1G -cdrom tmp.*/install.iso

È inoltre necessario installare le dipendenze, vale a dire: cpio, grub, grub-efi, dosfstools, xorriso. L'uso di squashfs-tools non è necessario; puoi lavorare in tmpfs con la quantità adeguata di RAM. Se manca qualcosa nel sistema, boobstrap lo segnalerà all'avvio.

Per semplificare la creazione di configurazioni, boobstrap suggerisce di utilizzare "modelli" e "sistemi", la cui essenza è utilizzare "modelli" (bootstrap-templates/) per installare rapidamente i sistemi da un file e direttamente "sistemi" (bootstrap- Systems/) utilizzato per impostare le configurazioni finali.

Quindi, ad esempio, eseguendo lo script boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild installerà la configurazione minima del sistema CRUX GNU/Linux e la salverà nel file crux_gnulinux-embedded.rootfs, quindi eseguirai boobstrap/bootstrap-systems /default/crux_gnulinux.bbuild che caricherà la configurazione primaria dal file menzionato, eseguirà tutta la configurazione necessaria e preparerà un ISO avviabile. Ciò è comodo quando, ad esempio, molti sistemi utilizzano lo stesso tipo di configurazione: per non descrivere ogni volta lo stesso insieme di pacchetti, si utilizza un modello, in base al quale si creano immagini di avvio dei sistemi con la configurazione finale.

Dove posso usare tutto questo?

Si configura il sistema in un file una volta e, eseguendolo, lo si costruisce e/o si aggiorna. Il sistema funziona in tmpfs, il che lo rende essenzialmente usa e getta. Se il sistema fallisce, puoi tornare al suo stato originale con un clic sul pulsante Ripristina. Puoi tranquillamente eseguire rm -rf /.

Puoi configurare le configurazioni di tutti i tuoi sistemi localmente, creare immagini, testarle in una macchina virtuale o hardware separato, quindi caricarle su un server remoto ed eseguire solo due comandi kexec -l /vmlinuz —initrd=/initrd && kexec -e per aggiornare l'intero sistema, riavviandolo in tmpfs.

Allo stesso modo è possibile trasferire tutti i sistemi, ad esempio su VDS, affinché funzionino in tmpfs, e crittografare il disco /dev/vda e utilizzarlo solo per i dati, senza la necessità di mantenervi il sistema operativo. L'unico “punto di fuga di informazioni” in questo caso sarà solo il “cold dump” della memoria della vostra macchina virtuale, e in caso di compromissione del sistema (ad esempio, indovinando la password ssh o una vulnerabilità in Exim), potrete scaricare una nuova ISO attraverso il “pannello di controllo” del vostro provider, per riportare in funzione il VDS, senza dimenticare di modificare la configurazione del sistema per chiudere tutte le vulnerabilità. Questo è più veloce della reinstallazione, della successiva configurazione e/o del ripristino da un backup, perché in sostanza, l'ISO scaricabile con il tuo sistema è il tuo backup. "Sette problemi: un ripristino."

Alla fine, puoi creare qualsiasi distribuzione per le tue esigenze, scriverla su un'unità USB e lavorarci, aggiornandola secondo necessità e riscrivendola nuovamente sull'unità USB. Tutti i dati sono archiviati nei cloud. Non è più necessario preoccuparsi della sicurezza del sistema ed effettuare un backup quando il sistema, ripeto, è diventato sostanzialmente “usa e getta”.

I vostri desideri, suggerimenti e commenti sono benvenuti.

Nel repository al link sottostante c'è un file README dettagliato (in inglese) con la descrizione di ciascuna utilità ed esempi di utilizzo, c'è anche una documentazione dettagliata in russo e una cronologia di sviluppo disponibile al link: Complesso di script di avvio di Boobstrap.

Fonte: linux.org.ru

Aggiungi un commento