booty - verktøy for å lage oppstartsbilder og stasjoner

Program presentert Booty, som lar deg lage oppstartbare initrd-bilder, ISO-filer eller stasjoner som inneholder en hvilken som helst GNU/Linux-distribusjon med én kommando. Koden er skrevet i POSIX-skall og distribuert av lisensiert under GPLv3.

Alle distribusjoner som starter opp med Booty kjører enten SHMFS (tmpfs) eller SquashFS + Overlay FS, brukerens valg. Distribusjonen opprettes én gang, og under oppstartsprosessen velges parametere som lar deg bruke rene tmpfs for roten, eller en kombinasjon av Overlay FS + SquashFS med opptaksendringer til tmpfs. Det er mulig å forhåndskopiere det nedlastbare distribusjonssettet til RAM, som lar deg koble fra USB-stasjonen etter nedlasting og kopiering av distribusjonssettet til minnet.

Først og fremst genererer Booty sitt eget initrd-bilde, som kan bruke native verktøy fra gjeldende system eller busybox. Det er mulig å inkludere (pakke) hele distribusjonssettet installert i katalogen (chroot) i initramfs. Dette kan være nyttig når du trenger å oppgradere et system ved å bruke kexec: bare last initrd på nytt med en ny kjerne og et nytt system inne i initrd.

Opprette et Booty-spesifikt initrd-bilde:

mkdir initramfs/
mkinitramfs initramfs/ --output initrd

Opprette et initrd-bilde inkludert distribusjonen fra "gentoo/"-katalogen:

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --cpio --output initrd

Deretter er dette initrd-bildet helt klart for lasting, for eksempel via PXE eller via kexec.

Deretter genererer Booty bilder med systemet spesifisert som "overlegg". For eksempel kan du installere (pakke ut arkivet) en betinget Gentoo i en separat katalog, hvoretter et cpio-arkiv eller SquashFS-bilde med dette systemet vil bli generert ved hjelp av Booty. Du kan også konfigurere distribusjonen i en egen katalog, og kopiere dine personlige innstillinger til en annen katalog. Alle disse "lagene" vil bli sekvensielt lastet oppå hverandre og skape et enkelt arbeidssystem.

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --overlay settings/ --overlay documents/ --squashfs --output initrd

Til syvende og sist lar Booty deg lage oppstartbare ISO-bilder og USB, HDD, SSD og andre stasjoner ved å installere systemet ovenfor fra bilder. Booty støtter oppretting av BIOS- og UEFI-oppstartssystemer. GRUB2 og SYSLINUX oppstartslastere støttes. Bootloadere kan kombineres, for eksempel bruk SYSLINUX for å starte opp i BIOS, og GRUB2 for UEFI. For å lage ISO-bilder trenger du i tillegg pakken cdrkit (genisoimage) eller xorriso (xorrisofs) å velge mellom.

Den eneste ekstra handlingen som kreves er å forberede kjernen (vmlinuz) for oppstart på forhånd. Forfatteren (spoofing) anbefaler å bruke "make defconfig". Før du oppretter bildet, må du forberede en katalog ved å plassere vmlinuz-kjernen og den tidligere forberedte "tomme" initrd opprettet i det første eksemplet.

mkdir iso/
cp /boot/vmlinuz-* iso/boot/vmlinuz
cp initrd iso/boot/initrd

Med dette er forberedelsene fullført, vi kan nå lage ISO-bilder fra denne katalogen.

Følgende kommando vil lage et ISO-bilde, ikke et oppstartbart, bare en ISO:

mkdir iso/
mkbootisofs iso/ --output archive.iso

For å lage et oppstartsbilde må du spesifisere alternativet "--legacy-boot" for henholdsvis BIOS og "--efi" for UEFI; alternativene tar enten grub2 eller syslinux som parametere; du kan også spesifisere bare ett alternativ ( for eksempel er UEFI-oppstartsstøtte ikke nødvendig , det er kanskje ikke spesifisert).

mkbootisofs iso/ --legacy-boot syslinux --output boot-biosonly.iso

mkbootisofs iso/ --legacy-boot syslinux --efi grub2 --output boot-bios-uefi.iso

mkbootisofs iso/ --efi grub2 --output boot-uefionly.iso

Og akkurat som før ble bilder med systemet inkludert i initrd, du kan inkludere dem i ISO.

mkbootisofs iso/ --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --output gentoo.iso

Etter denne kommandoen vil et oppstartbart BIOS/UEFI ISO-bilde bli generert som laster Gentoo inn i SquashFS-bildet ved å bruke Overlay FS, ved å bruke tmpfs for datalagring. Kjernen må bygges med Overlay FS-støtte med SquashFS. Men hvis dette av en eller annen grunn ikke er nødvendig, kan du bruke "—cpio"-alternativet i stedet for —squashfs for å pakke gentoo/ som et cpio-arkiv, i så fall vil arkivet bli pakket ut direkte i tmpfs ved oppstart, det viktigste er at for å pakke ut systemet hadde tmpfs nok RAM.

Interessant faktum: hvis et ISO-bilde opprettet ved hjelp av "—efi"-alternativet pakkes ut på en FAT32-flash-stasjon ved ganske enkelt å kopiere filer (cp -r), vil Flash-stasjonen starte i UEFI-modus uten noen foreløpig forberedelse, takket være spesifikasjonene av UEFI-nedlastere.

I tillegg til oppstartbare ISO-er, kan enhver oppstartbar stasjon opprettes med de samme parameterne: USB, HDD, SSD og så videre, og denne stasjonen kan fortsette å brukes til det tiltenkte formålet. For å gjøre dette må du montere for eksempel en USB-enhet og kjøre mkbootisofs på den. Bare legg til ett alternativ "—bootable" slik at stasjonen som den angitte katalogen ligger på blir oppstartbar.

monter /dev/sdb1 /mnt
mkbootisofs /mnt --overlay gentoo/ --squashfs --legacy-boot grub2 --efi grub2 --bootable

Etter det vil USB-enheten bli oppstartbar med gentoo/-overlegget (ikke glem å kopiere filene /boot/vmlinuz og /boot/initrd til enheten).

Hvis stasjonen av en eller annen grunn ikke var montert i /mnt, og det viser seg at /mnt er plassert på hovedenheten /dev/sda, vil oppstartslasteren skrives om til /dev/sda. Du bør være forsiktig når du spesifiserer --bootable-alternativet.

Under oppstartsprosessen støtter Booty en rekke alternativer som kan sendes til oppstartslasteren, grub.cfg eller syslinux.cfg. Som standard, uten noen alternativer, lastes og pakkes alle overlegg inn i tmpfs (standardalternativ ooty.use-shmfs). For å bruke Overlay FS må alternativet booty.use-overlayfs brukes. Booty.copy-to-ram-alternativet kopierer først overlegg til tmpfs, hvoretter det bare kobler dem og laster dem. Når den er kopiert, kan USB-enheten (eller annen lagringsenhet) fjernes.

Kilde: opennet.ru

Legg til en kommentar