Creazione di immagini bootstrap v1.2


Creazione di immagini bootstrap v1.2

Dopo solo un mese Dopo un lento sviluppo, è stato rilasciato boobstrap v1.2, un set di strumenti sulla shell POSIX per la creazione di immagini e unità di avvio.

Boobstrap ti consente di eseguire un solo comando:

  • Crea un'immagine initramfs, includendo qualsiasi distribuzione GNU/Linux al suo interno.
  • Crea immagini ISO avviabili con qualsiasi distribuzione GNU/Linux.
  • Crea unità USB, HDD, SSD avviabili con qualsiasi distribuzione GNU/Linux.

La particolarità è che dopo aver caricato GNU/Linux funzionerà completamente in puro tmpfs, oppure utilizzando immagini Overlay FS e SquashFS, a tua scelta. Installi qualsiasi distribuzione GNU/Linux in una directory, effettui tutte le impostazioni necessarie (possibilmente in una directory separata), dopodiché crei un dispositivo di avvio con un solo comando, sia esso un'immagine ISO, USB, HDD, unità SSD o puoi creare un'immagine initrd con system. Il sistema sarà sempre nello stesso stato e in caso di guasto sarà possibile tornare allo stato originale premendo un pulsante Reset. Vuoi trasferire il sistema su un altro host o creare un sistema da un container esistente? Boobstrap lo farà.

Tra le principali modifiche:

  • Aggiunto il supporto per il bootloader syslinux, oltre al già esistente grub2. Ora puoi scegliere di utilizzare grub2, syslinux o entrambi quando crei un dispositivo di avvio o un'immagine ISO rispettivamente con le opzioni --legacy-boot syslinux e --efi grub2 e puoi anche scegliere quali modalità Il download supporterà l'ISO Immagine.
  • Aggiunta l'opzione --bootable, che rende avviabile qualsiasi dispositivo a blocchi. Per creare immagini ISO è necessario utilizzare l'opzione --iso-9660.
  • Aggiunte opzioni di avvio del kernel boobs.use-shmfs per copiare il contenuto di tutti gli overlay su tmpfs, boobs.use-overlayfs per eseguire l'avvio utilizzando Overlay FS, boobs.search-rootfs per selezionare una fonte con il sistema, boobs.copy-to-ram per copiare il sistema in memoria e quindi spegnere il dispositivo.
  • L'unica dipendenza richiesta affinché boobstrap funzioni è cpio. Il resto delle dipendenze sono facoltative: grub2, syslinux - necessario per creare un supporto di avvio, cdrkit o xorriso tra cui scegliere - per creare un ISO, squashfs-tools per creare SquashFS, ma nulla impedisce di utilizzare l'opzione -cpio invece di - squashfs per impacchettare la distribuzione in un archivio. busybox verrà utilizzato solo se è installato, ma in caso contrario verranno copiate tutte le utilità necessarie dal sistema. Pertanto, il senape è garantito per funzionare quasi ovunque.

Ad esempio, il comando seguente creerà un'immagine initrd che include un sistema gentoo-chroot/ impacchettato come immagine SquashFS, che si avvierà correttamente dopo il caricamento dell'initrd stesso. Lascia che ti ricordi che per usare Overlay FS insieme a SquashFS, devi passare l'opzione del kernel boobs.use-overlayfs, altrimenti il ​​sistema verrà decompresso 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

Un'immagine initrd con un sistema al suo interno è utile quando è necessario distribuire rapidamente un sistema, ad esempio, tramite PXE o su un sistema caricato passare a initrd utilizzando il comando kexec -l /boot/vmlinuz-* —initrd=./initrd && kexec -e, beh oppure, essendo nell'interfaccia della macchina virtuale QEMU (possibilmente anche Proxmox), avvia da una fonte remota utilizzando tre comandi IPXE: kernel http://[...]/vmlinuz, initrd http://[ ...]/initrd, boot. Come puoi vedere, anche un normale initrd con il tuo sistema al suo interno ha molti usi.

Per creare unità e immagini avviabili, viene utilizzato il comando mkbootisofs, ad esempio, ecco come appare la creazione di un'immagine ISO con l'opzione -iso-9660 utilizzando syslinux per avviare in modalità Legacy (BIOS) e grub2 per avviare in EFI- modalità (UEFI).

# mkdir initrd/
# mkinitramfs initrd/ > initrd
#immagineisomkdir/
# immagine iso mkdir/boot
# cp /boot/vmlinuz-* isoimage/boot/vmlinuz
# cp initrd immagine iso/boot/initrd
# mkbootisofs isoimage/ —iso-9660 —legacy-boot syslinux —efi grub2 —output boot.iso
--overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs

È possibile specificare una delle modalità di avvio o non specificarle affatto, l'immagine ISO corrispondente verrà creata con successo.

L'installazione su qualsiasi unità e il successivo avvio da essa vengono eseguiti utilizzando l'opzione --bootable. È necessario creare personalmente le partizioni sull'unità (fdisk) e formattarle (mkdosfs, mke2fs, ecc.), quindi montare il dispositivo in una directory.

# monta /dev/sdb1 /mnt/unità/
# mkbootisofs /mnt/unità/ --bootable --legacy-boot grub2 --efi grub2
--overlay gentoo-chroot/ --overlay gentoo-settings/ --squashfs

Attenzione! L'opzione --bootable determina da quale dispositivo a blocchi è montata la directory e installa il bootloader su questo dispositivo. Se si dimentica di montare il dispositivo o si specifica erroneamente una directory che si trova, ad esempio, su /dev/sda, il bootloader su /dev/sda verrà sovrascritto di conseguenza. Utilizzare --bootable con cautela.

L'installazione di qualsiasi sistema GNU/Linux si riduce a un solo comando. L'installazione può essere eseguita su qualsiasi HDD, SSD e così via. Vale la pena ricordare che questo è ancora un sistema che funziona da Overlay FS / SquashFS o che viene caricato interamente in tmpfs, a tua scelta.

Tra le altre cose, il boobstrap ha una serie di caratteristiche interessanti e funzionalità aggiuntive!

Ad esempio, puoi creare un initrd boobstrap proprietario con il comando mkinitramfs `mktemp -d` > /boot/initrd e avviare il 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 domestico, sarà connesso come livello Overlay FS di sola lettura e tutte le modifiche apportate verranno scritte solo temporaneamente su tmpfs. Puoi aggiungere l'opzione boobs.copy-to-ram e quindi l'intero sistema verrà copiato nella RAM e il disco rigido potrà essere disconnesso dal computer. Utile quando è necessario interrompere qualcosa e puoi ripristinare le modifiche semplicemente riavviando. 🙂

Ma cosa succede se hai ancora bisogno di salvare tutte le modifiche nel sistema? Ad esempio, hai installato software o qualcos'altro. Quando si lavora in puro tmpfs, questo è purtroppo impossibile, ma se si avvia utilizzando Overlay FS, tutte le modifiche apportate al sistema vengono salvate in una directory tmpfs separata: /mnt/overlayfs/rootfs-changes! Lo scenario di utilizzo è molto semplice. Hai avviato il tuo sistema da un dispositivo USB, hai fatto un po' di lavoro e volevi salvare tutto ciò che è stato modificato, quindi creare un archivio cpio e inserirlo qui, sullo stesso dispositivo USB.

# cd /mnt/overlayfs/rootfs-changes
# Trovare . -stampa0 | cpio --create --format "newc" --null --quiet > /mnt/unità/rootfs-changes.cpio
# cd$VECCHIOPWD

È possibile posizionare l'archivio accanto ad altri "livelli" di SquashFS e cpio, quindi al successivo caricamento l'archivio verrà connesso come un altro livello di sola lettura. Per continuare a lavorare con le modifiche, utilizza l'opzione di caricamento boobs.rootfs-changes=/rootfs-changes.cpio. L'opzione boobs.rootfs-changes abilita il livello specificato con accesso alla modifica. Il livello può essere un dispositivo a blocchi, ad esempio puoi specificare /dev/sdb1, quindi tutte le modifiche apportate in Overlay FS verranno semplicemente salvate in /dev/sdb1.

Boobstrap, nonostante le ampie possibilità disponibili, è ancora in fase di sviluppo, tutti i tuoi commenti e suggerimenti verranno presi in considerazione!

Fonte: linux.org.ru

Aggiungi un commento