Creazione di immagini di avvio bootstrap v1.2


Creazione di immagini di avvio bootstrap v1.2

Dopo solo un mese di sviluppo tranquillo, è stato rilasciato boobstrap v1.2 — un insieme di strumenti per POSIX shell per la creazione di immagini di avvio e supporti.

Boobstrap consente con un solo comando:

  • Creare un'immagine initramfs, includendo qualsiasi distribuzione GNU/Linux.
  • Creare immagini ISO di avvio con qualsiasi distribuzione GNU/Linux.
  • Creare supporti di avvio USB, HDD, SSD con qualsiasi distribuzione GNU/Linux.

La peculiarità è che dopo l'avvio, GNU/Linux funzionerà completamente in tmpfs pulito o utilizzando Overlay FS e immagini SquashFS, a tua scelta. Installi qualsiasi distribuzione GNU/Linux in una directory, esegui tutte le configurazioni necessarie (anche in una directory separata), dopodiché con un solo comando crei il dispositivo di avvio, sia esso un'immagine ISO, USB, HDD, SSD, oppure puoi creare anche un'immagine initrd con il sistema. Il sistema sarà sempre in uno stato uniforme e in caso di malfunzionamenti puoi tornare allo stato originale premendo un solo pulsante di Reset. Vuoi trasferire il sistema su un altro host, oppure creare un sistema da un contenitore esistente? Boobstrap lo farà.

Tra i cambiamenti chiave:

  • È stato aggiunto il supporto per il bootloader syslinux, oltre a grub2 già presente. Ora puoi scegliere di utilizzare grub2, syslinux, oppure entrambi insieme, quando crei un dispositivo di avvio o un'immagine ISO, per i quali sono responsabili le opzioni —legacy-boot syslinux e —efi grub2 rispettivamente, e puoi anche scegliere quali modalità di avvio supporterebbe l'immagine ISO.
  • È stata aggiunta l'opzione —bootable, che rende qualsiasi dispositivo a blocchi avviabile. Per la creazione di immagini ISO, deve essere utilizzata l'opzione —iso-9660.
  • Sono state aggiunte opzioni per il caricamento del kernel boobs.use-shmfs per copiare il contenuto di tutti i sovrapposizioni 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 disattivando successivamente il dispositivo.
  • L'unica dipendenza obbligatoria per il funzionamento di boobstrap è cpio. Le altre dipendenze sono opzionali: grub2 e syslinux sono necessari per creare supporti di avvio, cdrkit o xorriso a scelta per creare ISO, squashfs-tools per creare SquashFS, ma nulla impedisce di utilizzare l'opzione —cpio invece di —squashfs per impacchettare la tua distribuzione in un archivio. busybox sarà utilizzato solo se installato, altrimenti verranno copiati 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 il sistema gentoo-chroot/ impacchettato come immagine SquashFS, che sarà caricata con successo dopo il caricamento stesso di initrd. Ricordo 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, ad esempio gentoo-settings/

# mkdir initramfs/
# mkinitramfs initramfs/ —overlay gentoo-chroot/ —overlay gentoo-settings/ —squashfs > initrd

L'immagine initrd con il sistema integrato è comoda quando è necessario avviare rapidamente un sistema, ad esempio tramite PXE, oppure su un sistema avviato passare a initrd utilizzando il comando kexec -l /boot/vmlinuz-* —initrd=./initrd && kexec -e, oppure, trovandosi 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 comune initrd con il tuo sistema all'interno ha molteplici possibilità di utilizzo.

Per creare supporti di avvio e immagini si utilizza il comando mkbootisofs, ad esempio, così appare la creazione di un'immagine ISO con l'opzione —iso-9660 utilizzando syslinux per l'avvio in modalità Legacy (BIOS) e grub2 per l'avvio in modalità EFI (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 uno dei modi di avvio, oppure non specificarli affatto; l'immagine ISO corrispondente sarà creata con successo.

L'installazione su qualsiasi supporto con successivo avvio da esso avviene con l'opzione —bootable. È necessario creare autonomamente le partizioni sul supporto (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 definisce da quale dispositivo a blocchi è montato il directory e installa il bootloader su questo dispositivo. Se dimenticate di montare il dispositivo o specificate erroneamente una directory che si trova, per esempio, su /dev/sda, il bootloader su /dev/sda verrà sovrascritto. Usate —bootable con attenzione.

L'installazione di qualsiasi sistema GNU/Linux si riduce a un solo comando. Può essere eseguita su qualsiasi HDD, SSD e così via. Vale la pena ricordare che si tratta comunque di un sistema che opera tramite Overlay FS / SquashFS, oppure completamente caricato in tmpfs, a scelta.

Oltre a tutto, bootstrap ha una serie di caratteristiche interessanti e funzionalità aggiuntive!

Ad esempio, puoi creare un initrd personalizzato di bootstrap con 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 tal caso, /dev/sda1, dove è installato il tuo sistema domestico, sarà montato come strato read-only di Overlay FS, e tutte le modifiche che apporterai verranno scritte solamente temporaneamente in tmpfs. Puoi aggiungere l'opzione boobs.copy-to-ram e così l'intero sistema verrà copiato in RAM, mentre il disco rigido può essere disconnesso dal computer. Comodo, quando hai bisogno di rompere qualcosa, e per annullare le modifiche basta riavviare. 🙂

Ma cosa fare se hai bisogno di salvare tutte le modifiche nel sistema? Ad esempio, hai installato software o qualcos'altro. Lavorando in un tmpfs pulito, questo purtroppo non è possibile, ma se hai avviato utilizzando Overlay FS, allora tutte le modifiche che avvengono nel sistema vengono salvate in una directory tmpfs separata: /mnt/overlayfs/rootfs-changes! Lo scenario d'uso è molto semplice. Hai avviato il tuo sistema da un dispositivo USB, hai lavorato, hai voluto salvare tutto ciò che è stato modificato, quindi crea un archivio cpio e mettilo qui, su questo 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, quindi durante il successivo avvio l'archivio verrà montato come un altro strato di sola lettura. Per continuare a lavorare con le modifiche, usa l'opzione di caricamento boobs.rootfs-changes=\/rootfs-changes.cpio. L'opzione boobs.rootfs-changes monta lo strato specificato con accesso in scrittura. Lo strato può essere un dispositivo a blocchi, ad esempio puoi specificare \/dev\/sdb1, in tal caso tutte le modifiche apportate in Overlay FS verranno semplicemente salvate su \/dev\/sdb1.

Nonostante le sue ampie funzionalità, Boobstrap è ancora in fase di sviluppo e tutti i vostri commenti e suggerimenti sono apprezzati!

Fonte: linux.org.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