Oprettelse af bootable billeder bootstrap v1.0


Oprettelse af bootable billeder bootstrap v1.0

Jeg ønsker at præsentere et framework ved navn boobstrap, skrevet i POSIX shell, til at oprette bootable images med GNU/Linux distributioner. Frameworket gør det muligt at følge hele processen i tre enkle trin: fra deployment af systemet i chroot, til oprettelse af et initramfs-billede, der inkluderer systemet fra chroot, og til sidst et bootable ISO-billede. boobstrap inkluderer tre værktøjer: mkbootstrap, mkinitramfs og mkbootisofs.

mkbootstrap installer systemet i en separat mappe, med indbygget support til CRUX, mens man for Arch Linux / Manjaro og Debian-baserede distributioner skal bruge tredjeparts værktøjer pacstrap, basestrap og debootstrap henholdsvis.

mkinitramfs opretter et initramfs-billede, du kan bruge det installerede system i mappen som et "overlay", komprimeret med SquashFS, eller starte systemet direkte med tmpfs. For eksempel vil kommandoen mkinitramfs `mktemp -d` —overlay "arch-chroot/" —overlay "\/home" —squashfs-xz —output initrd oprette en initrd-fil, der inkluderer to overlays med "arch-chroot/" systemet og din "\/home", komprimeret med SquashFS, som du derefter kan starte via PXE i tmpfs, eller oprette et bootable ISO-billede med dette initrd.

mkbootisofs opretter et BIOS / UEFI bootable ISO-billede fra den angivne mappe. I mappen skal du blot placere \/boot\/vmlinuz og \/boot\/initrd.

boobstrap bruger ikke busybox, og for at oprette et funktionelt miljø i initramfs kopieres et minimalt sæt programmer ved hjælp af ldd, som er nødvendige for at boote og skifte til systemet. Listen over programmer til kopiering, ligesom alt andet, kan konfigureres via konfigurationsfilen \/etc\/boobstrap\/boobstrap.conf. Du kan også installere en hvilken som helst minimalistisk distribution i en separat chroot, hvorfra du derefter kan oprette et fuldt udstyret initramfs-miljø. Som et sådant minimalistisk, men dog fuldt funktionelt miljø anbefales skabelonen "crux_gnulinux-embedded", som efter xz tager en rimelig 37 MB. busybox tilbyder ikke flere fordele udover sin størrelse, 3-5 MB mod 30-50 MB for et fuldt GNU/Linux-miljø, således ses der ikke et formål i at bruge busybox i projektet.

Hvordan kan man hurtigt kontrollere funktionaliteten og komme i gang? Installer og kør.

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

Desuden skal du installere afhængigheder, nemlig: cpio, grub, grub-efi, dosfstools, xorriso. Brug af squashfs-tools er ikke nødvendigt; du kan arbejde i tmpfs, hvis du har tilstrækkelig RAM. Hvis systemet mangler noget, vil boobstrap informere om det ved opstart.

For at forenkle oprettelsen af konfigurationer tilbyder boobstrap at bruge "skabeloner" og "systemer", som går ud på at anvende "skabeloner" (bootstrap-templates/) til hurtigt at installere systemer fra en fil og direkte "systemer" (bootstrap-systems/) til at konfigurere de endelige indstillinger.

For eksempel, når du kører scriptet boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild, installeres en minimal konfiguration af systemet CRUX GNU/Linux og gemmes i filen crux_gnulinux-embedded.rootfs. Derefter kører du boobstrap/bootstrap-systems/default/crux_gnulinux.bbuild, som indlæser den primære konfiguration fra den nævnte fil, udfører al nødvendig konfiguration og forbereder en bootbar ISO. Dette er praktisk, når mange systemer bruger en ensartet konfiguration: for at undgå at skulle beskrive det samme sæt pakker hver gang, bruger du en skabelon, hvorpå du opretter bootbarer billeder af systemer med den endelige konfiguration.

Hvor skal alt dette bruges?

Du konfigurerer systemet i en fil én gang, og ved at køre den bygger og/eller opdaterer du det. Systemet kører i tmpfs, hvilket gør det engangs. Hvis systemet fejler, kan du med et tryk på Reset knappen vende tilbage til den oprindelige tilstand. Du kan trygt udføre rm -rf /.

Du kan konfigurere indstillingerne for alle dine systemer lokalt, oprette billeder, teste dem i en virtuel maskine eller på en separat hardwareenhed, og derefter uploade dem til en fjernserver. Ved at køre bare to kommandoer kexec -l /vmlinuz —initrd=/initrd && kexec -e kan du opdatere hele systemet, genstarte det i tmpfs.

På samme måde kan du overføre alle systemer, for eksempel til VDS, arbejde i tmpfs, og kryptere disken /dev/vda og kun bruge den til data, uden behov for at have operativsystemet på den. Den eneste "information lækage" i sådanne tilfælde vil kun være "kold dump" af hukommelsen på din virtuelle maskine, og i tilfælde af kompromittering af systemet (for eksempel ved brute-force af SSH-adgangskoden eller en sårbarhed i Exim), kan du geninstallere en ny ISO gennem din udbyders "kontrolpanel" for hurtigt at bringe VDS tilbage i drift, mens du husker at redigere systemkonfigurationen for at lukke alle sårbarheder. Dette er hurtigere end en geninstallation, efterfølgende opsætning og/eller gendannelse fra backup, da den ISO, der bliver indlæst med dit system, i realiteten er din backup. "Syv uheld - én nulstilling."

I sidste ende kan du oprette enhver distribution til dine opgaver, brænde den på en USB-nøgle og arbejde i den, opdatere den efter behov og igen overskrive den på USB-nøglen. Opbevar alle data i "skyerne". Du behøver ikke længere at bekymre dig om at beskytte systemet og tage backup, når systemet, som sagt, i realiteten er blevet "engangsbrug".

Dine ønsker, forslag og bemærkninger er velkomne.

I repository'et linket nedenfor er der en detaljeret README-fil (på engelsk) med beskrivelser af hver værktøj og eksempler på brug, derudover findes der en detaljeret dokumentation på russisk og udviklingshistorik, tilgængelig via linket: Sæt af boot scripts boobstrap.

Kilde: linux.org.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster