Skep bootstrap v1.0 beelde


Skep bootstrap v1.0 beelde

Ek wil graag 'n raamwerk genaamd boobstrap, geskryf in die POSIX-dop, vir die skep van selflaaibeelde met GNU/Linux-verspreidings aan u aandag gee. Die raamwerk laat jou toe om deur die hele proses te gaan in net drie eenvoudige stappe: van die implementering van die stelsel in 'n chroot, die skep van 'n initramfs-beeld wat die chroot-stelsel insluit, en uiteindelik 'n selflaaibare ISO-beeld. boobstrap bevat drie nutsprogramme mkbootstrap, mkinitramfs en mkbootisofs onderskeidelik.

mkbootstrap installeer die stelsel in 'n aparte gids, daar is inheemse ondersteuning vir CRUX, en in die geval van Arch Linux / Manjaro en Debian-gebaseerde verspreidings, moet derdeparty-nutsprogramme pacstrap, basestrap en debootstrap onderskeidelik gebruik word.

mkinitramfs skep 'n initramfs-beeld, jy kan die geïnstalleerde stelsel in die gids as 'n "overlay" gebruik, saamgepers met SquashFS, of nadat jy in die stelsel opgelaai het, direk in tmpfs werk. So byvoorbeeld, die opdrag mkinitramfs `mktemp -d` --overlay "arch-chroot/" --overlay "/home" --squashfs-xz --output initrd sal 'n initrd-lêer skep, insluitend twee oorleggings met "arch- chroot/"-stelsel en jou "/home", saamgepers met SquashFS, wat jy dan via PXE in tmpfs kan oplaai, of 'n selflaaibare ISO-beeld met hierdie initrd kan skep.

mkbootisofs skep 'n BIOS/UEFI-selflaaibare ISO-beeld vanaf die gespesifiseerde gids. Plaas net /boot/vmlinuz en /boot/initrd in die gids.

boobstrap gebruik nie busybox nie, en om 'n werkende initramfs-omgewing te skep, word 'n minimale stel programme met behulp van ldd gekopieer, wat nodig is om te begin en na die stelsel oor te skakel. Die lys programme om te kopieer, soos alles anders, kan gekonfigureer word deur die konfigurasielêer /etc/boobstrap/boobstrap.conf. U kan ook enige minimalistiese verspreiding in 'n aparte chroot/ installeer, waaruit u dan 'n volwaardige initramfs-omgewing kan skep. As so 'n minimalistiese, maar terselfdertyd volwaardige omgewing, word voorgestel om die "crux_gnulinux-embedded" sjabloon te gebruik, wat na xz 'n kompromie van 37 MB in beslag neem. busybox, behalwe sy grootte, 3-5 MB teenoor 30-50 MB van 'n volwaardige GNU/Linux-omgewing, bied nie meer enige voordele nie, so die gebruik van busybox in 'n projek lyk nie gepas nie.

Hoe om die funksionaliteit vinnig na te gaan en te begin? Installeer en hardloop.

# git kloon https://github.com/sp00f1ng/boobstrap.git
# cd boobstrap
# maak installeer# boobstrap/toetse/crux_gnulinux-download-and-build
# qemu-system-x86_64 -enable-kvm -m 1G -cdrom tmp.*/install.iso

Jy moet ook afhanklikhede installeer, naamlik: cpio, grub, grub-efi, dosfstools, xorriso. Die gebruik van squashfs-tools is nie nodig nie; jy kan in tmpfs werk met die toepaslike hoeveelheid RAM. As iets in die stelsel ontbreek, sal boobstrap dit by opstart rapporteer.

Om die skep van konfigurasies te vereenvoudig, stel boobstrap voor om "sjablone" en "stelsels" te gebruik, waarvan die essensie is om "sjablone" (bootstrap-templates/) te gebruik om stelsels vinnig vanaf 'n lêer te installeer, en direk "stelsels" (bootstrap- stelsels/) wat gebruik word om finale konfigurasies op te stel.

So byvoorbeeld, deur die script boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild te laat loop, sal die minimum konfigurasie van die CRUX GNU/Linux-stelsel geïnstalleer word en dit in die lêer crux_gnulinux-embedded.rootfs stoor, dan hardloop jy boobstrap/bootstrap-systems /default/crux_gnulinux.bbuild wat die primêre konfigurasie vanaf die genoemde lêer sal laai, al die nodige konfigurasie sal doen en 'n selflaaibare ISO sal voorberei. Dit is gerieflik wanneer, byvoorbeeld, baie stelsels dieselfde tipe konfigurasie gebruik: om nie elke keer dieselfde stel pakkette te beskryf nie, gebruik jy een sjabloon, op grond waarvan jy selflaaibeelde van stelsels met die finale konfigurasie skep.

Waar kan ek dit alles gebruik?

Jy konfigureer die stelsel een keer in 'n lêer en deur dit te laat loop bou en/of dateer jy dit op. Die stelsel loop in tmpfs, wat dit in wese weggooibaar maak. As die stelsel misluk, kan jy terugkeer na sy oorspronklike toestand met een klik van die Herstel-knoppie. Jy kan veilig hardloop rm -rf /.

U kan die konfigurasies van al u stelsels plaaslik konfigureer, beelde skep, dit in 'n virtuele masjien of aparte hardeware toets, dit dan na 'n afgeleë bediener oplaai en net twee opdragte uitvoer kexec -l /vmlinuz —initrd=/initrd && kexec -e om die hele stelsel op te dateer, herlaai dit in tmpfs.

Op dieselfde manier kan jy alle stelsels, byvoorbeeld op VDS, oordra om in tmpfs te werk, en die /dev/vda-skyf enkripteer en dit net vir data gebruik, sonder dat dit nodig is om die bedryfstelsel daarop te hou. Die enigste "punt van inligting lekkasie" in hierdie geval sal slegs die "koue stort" van die geheue van jou virtuele masjien wees, en in die geval van 'n kompromie van die stelsel (byvoorbeeld deur die ssh wagwoord te raai of 'n kwesbaarheid in Exim), kan jy 'n nuwe ISO aflaai deur die "kontrolepaneel" van jou verskaffer, om die VDS weer in werking te bring, sonder om te vergeet om die stelselkonfigurasie te wysig om alle kwesbaarhede te sluit. Dit is vinniger as om te herinstalleer, daaropvolgende konfigurasie en/of herstel vanaf 'n rugsteun, want in wese is die aflaaibare ISO met jou stelsel jou rugsteun. "Sewe probleme - een herstel."

Op die ou end kan jy enige verspreiding vir jou behoeftes skep, dit op 'n USB-stasie skryf en daarin werk, dit opdateer soos nodig en dit weer na die USB-stasie oorskryf. Alle data word in die wolke gestoor. Jy hoef nie meer bekommerd te wees oor die veiligheid van die stelsel en 'n rugsteun te maak wanneer die stelsel, ek herhaal, in wese "weggooibaar" geword het.

Jou wense, voorstelle en kommentaar is welkom.

In die bewaarplek by die skakel hieronder is daar 'n gedetailleerde README-lêer (in Engels) met 'n beskrywing van elke nut en voorbeelde van gebruik, daar is ook gedetailleerde dokumentasie in Russies en 'n ontwikkelingsgeskiedenis beskikbaar by die skakel: Boobstrap boot script kompleks.

Bron: linux.org.ru

Voeg 'n opmerking