booty - værktøj til at oprette boot-billeder og drev

Program præsenteret Booty, som giver dig mulighed for at oprette startbare initrd-billeder, ISO-filer eller drev, der indeholder enhver GNU/Linux-distribution med én kommando. Koden er skrevet i POSIX shell og distribueret af licenseret under GPLv3.

Alle distributioner, der er startet med Booty, kører enten SHMFS (tmpfs) eller SquashFS + Overlay FS, brugerens valg. Distributionen oprettes én gang, og under opstartsprocessen vælges parametre, der giver dig mulighed for at bruge rene tmpfs til roden, eller en kombination af Overlay FS + SquashFS med optagelsesændringer til tmpfs. Det er muligt at forhåndskopiere det downloadbare distributionssæt til RAM, hvilket giver dig mulighed for at frakoble USB-drevet efter at have downloadet og kopieret distributionssættet til hukommelsen.

Først og fremmest genererer Booty sit eget initrd-billede, som kan bruge native hjælpeprogrammer fra det nuværende system eller busybox. Det er muligt at inkludere (pakke) hele distributionssættet installeret i mappen (chroot) i initramfs. Dette kan være nyttigt, når du skal opgradere et system ved hjælp af kexec: genindlæs blot initrd'en med en ny kerne og et nyt system inde i initrd'en.

Oprettelse af et Booty-specifikt initrd-billede:

mkdir initramfs/
mkinitramfs initramfs/ --output initrd

Oprettelse af et initrd-billede inklusive distributionen fra "gentoo/"-mappen:

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

Hvorefter dette initrd-billede er helt klar til indlæsning, for eksempel via PXE eller via kexec.

Derefter genererer Booty billeder med systemet angivet som "overlays". For eksempel kan du installere (pakke arkivet ud) en betinget Gentoo i en separat mappe, hvorefter et cpio-arkiv eller SquashFS-billede med dette system vil blive genereret ved hjælp af Booty. Du kan også konfigurere distributionen i en separat mappe og kopiere dine personlige indstillinger til en anden mappe. Alle disse "lag" vil blive sekventielt indlæst oven på hinanden og skabe et enkelt arbejdssystem.

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --overlay indstillinger/ --overlay dokumenter/ --squashfs --output initrd

I sidste ende giver Booty dig mulighed for at oprette bootbare ISO-billeder og USB, HDD, SSD og andre drev ved at installere ovenstående system fra billeder. Booty understøtter oprettelsen af ​​BIOS- og UEFI-startsystemer. GRUB2 og SYSLINUX bootloadere er understøttet. Bootloadere kan kombineres, for eksempel brug SYSLINUX til at starte op i BIOS og GRUB2 til UEFI. For at oprette ISO-billeder skal du desuden bruge pakken cdrkit (genisoimage) eller xorriso (xorrisofs) at vælge imellem.

Den eneste yderligere handling, der kræves, er at forberede kernen (vmlinuz) til opstart på forhånd. Forfatteren (Spoofing) anbefaler at bruge "make defconfig". Før du opretter billedet, skal du forberede en mappe ved at placere vmlinuz-kernen og den tidligere forberedte "tomme" initrd oprettet i det første eksempel.

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

Med dette er forberedelsen færdig, vi kan nu oprette ISO-billeder fra denne mappe.

Følgende kommando vil oprette et ISO-billede, ikke et bootbart, kun et ISO:

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

For at oprette et opstartsbillede skal du angive "--legacy-boot"-indstillingen for henholdsvis BIOS og "--efi" for UEFI; indstillingerne tager enten grub2 eller syslinux som parametre; du kan også kun angive én mulighed ( for eksempel er UEFI-startunderstøttelse ikke nødvendig, den er muligvis ikke specificeret).

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 ligesom før var billeder med systemet inkluderet i initrd, du kan inkludere dem i ISO.

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

Efter denne kommando vil et bootbart BIOS/UEFI ISO-billede blive genereret, som indlæser Gentoo i SquashFS-billedet ved hjælp af Overlay FS, ved hjælp af tmpfs til datalagring. Kernen skal bygges med Overlay FS-understøttelse med SquashFS. Men hvis dette af en eller anden grund ikke er påkrævet, kan du bruge “—cpio”-indstillingen i stedet for —squashfs til at pakke gentoo/ som et cpio-arkiv, i hvilket tilfælde arkivet vil blive pakket direkte ud i tmpfs ved opstart, det vigtigste er, at for at udpakke systemet havde tmpfs nok RAM.

Interessant kendsgerning: Hvis et ISO-billede, der er oprettet ved hjælp af "—efi"-indstillingen, pakkes ud på et FAT32-flashdrev ved blot at kopiere filer (cp -r), så vil flashdrevet starte i UEFI-tilstand uden nogen foreløbig forberedelse, takket være detaljerne af UEFI-downloadere.

Ud over startbare ISO'er kan ethvert bootbart drev oprettes med de samme parametre: USB, HDD, SSD og så videre, og dette drev kan fortsætte med at blive brugt til det tilsigtede formål. For at gøre dette skal du montere for eksempel en USB-enhed og køre mkbootisofs på den. Bare tilføj en mulighed "—bootbar", så det drev, som det angivne bibliotek er placeret på, bliver bootbart.

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

Derefter vil USB-enheden blive bootbar med gentoo/-overlayet (glem ikke at kopiere /boot/vmlinuz- og /boot/initrd-filerne til enheden).

Hvis drevet af en eller anden grund ikke var monteret i /mnt, og det viser sig, at /mnt er placeret på hovedenheden /dev/sda, så vil bootloaderen blive omskrevet til /dev/sda. Du bør være forsigtig, når du angiver --bootable-indstillingen.

Under opstartsprocessen understøtter Booty en række muligheder, der kan overføres til opstartsindlæseren, grub.cfg eller syslinux.cfg. Som standard, uden nogen indstillinger, indlæses og pakkes alle overlejringer ud i tmpfs (standardindstilling ooty.use-shmfs). For at bruge Overlay FS skal muligheden booty.use-overlayfs bruges. Booty.copy-to-ram-indstillingen kopierer først overlays til tmpfs, hvorefter den kun forbinder dem og indlæser dem. Når den er kopieret, kan USB-enheden (eller anden lagerenhed) fjernes.

Kilde: opennet.ru

Tilføj en kommentar