Vreau să vă prezint un framework numit boobstrap, scris în POSIX shell, pentru crearea imaginilor de boot cu distribuții GNU/Linux. Framework-ul permite să parcurgi întreaga cale în trei pași simpli: de la desfășurarea sistemului în chroot, crearea imaginii initramfs care include sistemul din chroot și, în final, imaginea ISO de boot. boobstrap include trei utilitare mkbootstrap, mkinitramfs și mkbootisofs, respectiv.
mkbootstrap instalează sistemul într-un director separat, având suport nativ pentru CRUX, iar în cazul Arch Linux / Manjaro și distribuțiilor bazate pe Debian trebuie folosite utilitare externe pacstrap, basestrap și debootstrap, respectiv.
mkinitramfs creează imaginea initramfs, poți folosi sistemul instalat în director ca «overlay», comprimat cu SquashFS, sau poți porni direct în sistem lucrând în tmpfs. De exemplu, comanda mkinitramfs `mktemp -d` —overlay "arch-chroot/" —overlay "home" —squashfs-xz —output initrd va crea un fișier initrd, incluzând două overlay-uri cu sistemul „arch-chroot/” și cu „home”-ul tău, comprimate cu SquashFS, pe care ulterior poți să-l încarci prin PXE în tmpfs sau să creezi o imagine ISO de boot cu acest initrd.
mkbootisofs creează o imagine ISO de boot BIOS/UEFI din directorul specificat. Este suficient să plasezi în director fișierele /boot/vmlinuz și /boot/initrd.
boobstrap nu folosește busybox, iar pentru crearea mediului de lucru initramfs este copiat un set minim de programe folosind ldd, necesare pentru bootare și comutare în sistem. Lista programelor de copiat, la fel ca tot restul, poate fi configurată prin fișierul de configurare /etc/boobstrap/boobstrap.conf. De asemenea, poți instala orice distribuție minimalistă într-un chroot separat, din care apoi să creezi un mediu initramfs complet. Ca astfel de mediu minimalist, dar totuși complet, se propune utilizarea șablonului „crux_gnulinux-embedded”, care după xz ocupă un compromis de 37mb. busybox, în afară de dimensiunea sa, 3-5mb comparativ cu 30-50mb pentru un mediu GNU/Linux complet, nu oferă alte avantaje, astfel încât utilizarea busybox în proiect nu este văzută ca fiind utilă.
Cum să verifici rapid funcționalitatea și să începi munca? Instalează și pornește.
# git clone https://github.com/sp00f1ng/boobstrap.git
# cd boobstrap
# make install# boobstrap/tests/crux_gnulinux-download-and-build
De asemenea, trebuie să instalați dependențele, și anume: cpio, grub, grub-efi, dosfstools, xorriso. Utilizarea squashfs-tools nu este obligatorie, puteți lucra în tmpfs având memoria RAM corespunzătoare. În cazul în care lipsește ceva din sistem, boobstrap vă va anunța la pornire.
Pentru a simplifica crearea configurațiilor, boobstrap oferă posibilitatea de a folosi „șabloane” și „sisteme”, esența acestora fiind utilizarea „șabloanelor” (bootstrap-templates/) pentru instalarea rapidă a sistemelor dintr-un fișier, iar „sistemele” (bootstrap-systems/) pentru configurările finale.
Astfel, de exemplu, rularea scriptului boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild va instala o configurație minimă a sistemului CRUX GNU/Linux și o va salva în fișierul crux_gnulinux-embedded.rootfs. Apoi, rulați boobstrap/bootstrap-systems/default/crux_gnulinux.bbuild care va încărca configurația inițială din fișierul menționat, va efectua toate setările necesare și va pregăti ISO-ul de bootare. Este convenabil, de exemplu, când mai multe sisteme folosesc o configurație asemănătoare: pentru a nu descrie de fiecare dată același set de pachete, folosiți un șablon pe baza căruia creați imagini de bootare pentru sistemele cu configurația finală.
Unde se poate folosi toate acestea?
Configurați sistemul într-un fișier odată și cu un singur apel realizați construcția și/sau actualizarea acestuia. Sistemul funcționează în tmpfs, ceea ce îl face de unică folosință, în esență. În cazul în care sistemul se defectează, printr-o simplă apăsare a butonului Reset reveniți la starea inițială. Puteți executa liniștit rm -rf /.
Puteți configura toate sistemele dvs. local, crea imagini, testa-le într-o mașină virtuală sau pe un hardware separat, apoi încărcați-le pe un server la distanță și cu doar două comenzi kexec -l /vmlinuz —initrd=/initrd && kexec -e actualizați întregul sistem, repornind-l în tmpfs.
În mod similar, puteți traduce toate sistemele, de exemplu, pe VDS, pentru a rula în tmpfs, și să criptați discul /dev/vda utilizându-l doar pentru date, fără a necesita păstrarea sistemului de operare pe el. Singurul „punct de scurgere a informațiilor” în acest caz va fi doar „dump-ul rece” al memoriei mașinii dvs. virtuale, iar în cazul compromiterii sistemului (de exemplu, printr-o crackare a parolei SSH sau o vulnerabilitate în Exim), puteți încărca un nou ISO prin „panoul de control” al furnizorului dvs. pentru a readuce VDS-ul în funcțiune, fără a uita să editați configurația sistemului pentru a închide toate vulnerabilitățile. Acest lucru este mai rapid decât reinstalarea, configurarea ulterioară și/sau recuperarea dintr-un backup, căci practic, ISO-ul descărcat cu sistemul dvs. este backup-ul dumneavoastră. „Șapte nenorociri - o resetare.”
În cele din urmă, puteți crea orice distribuție pentru nevoile dvs., să o salvați pe un stick USB și să lucrați cu ea, actualizând-o după cum este necesar și rescrierea ei pe stick-ul USB. Toate datele vor fi stocate în „cloud”. Nu mai este nevoie să vă faceți griji pentru integritatea sistemului și să faceți backup, când sistemul, repet, a devenit practic „de unică folosință”.
Sugestiile, propunerile și observațiile dvs. sunt binevenite.
În depozitul de mai jos, veți găsi un fișier README detaliat (în engleză) cu descrierea fiecărei utilități și exemple de utilizare, de asemenea există documentație detaliată în limba rusă și un istoric al dezvoltării, disponibile la link: Set de scripturi de boot boobstrap.
Sursa: linux.org.ru

