booty - utility para sa paglikha ng mga boot image at drive

Programang ipinakita nadambong, na nagbibigay-daan sa iyong lumikha ng mga bootable initrd na imahe, mga ISO file o mga drive na naglalaman ng anumang pamamahagi ng GNU/Linux na may isang command. Ang code ay nakasulat sa POSIX shell at ipinamahagi ni lisensyado sa ilalim ng GPLv3.

Ang lahat ng mga distribusyon ay na-boot gamit ang Booty run alinman sa SHMFS (tmpfs) o SquashFS + Overlay FS, ang pinili ng user. Ang pamamahagi ay ginawa nang isang beses, at sa panahon ng proseso ng pag-boot, pinipili ang mga parameter na nagbibigay-daan sa iyong gumamit ng purong tmpfs para sa ugat, o isang kumbinasyon ng Overlay FS + SquashFS na may mga pagbabago sa pagtatala sa tmpfs. Posibleng paunang kopyahin ang nada-download na distribution kit sa RAM, na nagbibigay-daan sa iyong idiskonekta ang USB drive pagkatapos i-download at kopyahin ang distribution kit sa memorya.

Una sa lahat, ang Booty ay bumubuo ng sarili nitong initrd na imahe, na maaaring gumamit ng mga katutubong kagamitan mula sa kasalukuyang sistema o busybox. Posibleng isama (pack) ang buong distribution kit na naka-install sa direktoryo (chroot) sa initramfs. Maaari itong maging kapaki-pakinabang kapag kailangan mong mag-upgrade ng system gamit ang kexec: i-reload lang ang initrd gamit ang bagong kernel at bagong system sa loob ng initrd.

Paglikha ng initrd na imaheng partikular sa Booty:

mkdir initramfs/
mkinitramfs initramfs/ --output initrd

Paglikha ng isang initrd na imahe kasama ang pamamahagi mula sa direktoryo ng "gentoo/":

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

Pagkatapos kung saan ang initrd na imaheng ito ay ganap na handa para sa paglo-load, halimbawa, sa pamamagitan ng PXE o sa pamamagitan ng kexec.

Susunod, ang Booty ay bumubuo ng mga imahe gamit ang system na tinukoy bilang "mga overlay". Halimbawa, maaari kang mag-install (i-unpack ang archive) ng isang conditional na Gentoo sa isang hiwalay na direktoryo, pagkatapos nito ay bubuo ng cpio archive o SquashFS na imahe na may ganitong sistema gamit ang Booty. Maaari mo ring i-configure ang pamamahagi sa isang hiwalay na direktoryo, at kopyahin ang iyong mga personal na setting sa ibang direktoryo. Ang lahat ng mga "layer" na ito ay magkakasunod na ilo-load sa ibabaw ng bawat isa at lilikha ng isang solong gumaganang sistema.

mkdir initramfs/
mkinitramfs initramfs/ --overlay gentoo/ --overlay settings/ --overlay na mga dokumento/ --squashfs --output initrd

Sa huli, pinapayagan ka ng Booty na lumikha ng mga bootable na ISO na imahe at USB, HDD, SSD at iba pang mga drive sa pamamagitan ng pag-install ng system sa itaas mula sa mga imahe. nadambong sumusuporta sa paglikha ng BIOS at UEFI boot system. Ang GRUB2 at SYSLINUX bootloader ay suportado. Maaaring pagsamahin ang mga bootloader, halimbawa, gumamit ng SYSLINUX para mag-boot sa BIOS, at GRUB2 para sa UEFI. Upang lumikha ng mga imaheng ISO, kakailanganin mo ang cdrkit (genisoimage) o xorriso (xorrisofs) na pakete, upang pumili mula sa.

Ang tanging karagdagang aksyon na kinakailangan ay ihanda ang kernel (vmlinuz) para sa boot nang maaga. Inirerekomenda ng may-akda (Spoofing) ang paggamit ng "make defconfig". Bago lumikha ng imahe, kailangan mong maghanda ng isang direktoryo sa pamamagitan ng paglalagay ng vmlinuz kernel at ang dating inihanda na "walang laman" initrd na nilikha sa unang halimbawa.

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

Sa pamamagitan nito ay kumpleto na ang paghahanda, maaari na tayong lumikha ng mga imaheng ISO mula sa direktoryong ito.

Ang sumusunod na command ay lilikha ng isang ISO na imahe, hindi isang bootable, isang ISO lamang:

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

Upang lumikha ng isang imahe ng boot, kailangan mong tukuyin ang pagpipiliang "--legacy-boot" para sa BIOS at "--efi" para sa UEFI, ayon sa pagkakabanggit; ang mga pagpipilian ay kumukuha ng alinman sa grub2 o syslinux bilang mga parameter; maaari mo ring tukuyin ang isang pagpipilian lamang ( halimbawa, hindi kailangan ang suporta sa boot ng UEFI , maaaring hindi ito matukoy).

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

At tulad ng dati, ang mga imahe na may sistema ay kasama sa initrd, maaari mong isama ang mga ito sa ISO.

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

Pagkatapos ng command na ito, bubuo ang isang bootable na BIOS/UEFI ISO image na naglo-load ng Gentoo sa SquashFS image gamit ang Overlay FS, gamit ang tmpfs para sa data storage. Ang kernel ay dapat na binuo na may suporta sa Overlay FS na may SquashFS. Gayunpaman, kung sa ilang kadahilanan ay hindi ito kinakailangan, maaari mong gamitin ang opsyong “—cpio” sa halip na —squashfs upang i-package ang gentoo/ bilang isang archive ng cpio, kung saan ang archive ay direktang i-unpack sa tmpfs sa pag-boot, ang pangunahing bagay ay iyon para sa pag-unpack ng system tmpfs ay may sapat na RAM.

Kagiliw-giliw na katotohanan: kung ang isang imahe ng ISO na nilikha gamit ang pagpipiliang "—efi" ay na-unpack sa isang FAT32 flash drive sa pamamagitan lamang ng pagkopya ng mga file (cp -r), kung gayon ang Flash drive ay mag-boot sa UEFI mode nang walang anumang paunang paghahanda, salamat sa mga detalye ng mga UEFI- downloader.

Bilang karagdagan sa mga bootable na ISO, ang anumang bootable drive ay maaaring gawin gamit ang parehong mga parameter: USB, HDD, SSD, at iba pa, at ang drive na ito ay maaaring patuloy na gamitin para sa layunin nito. Upang gawin ito, kailangan mong i-mount, halimbawa, isang USB device at patakbuhin ang mga mkbootisof dito. Magdagdag lamang ng isang opsyon na "—bootable" upang ang drive kung saan matatagpuan ang tinukoy na direktoryo ay maging bootable.

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

Pagkatapos nito, magiging bootable ang USB device gamit ang gentoo/ overlay (huwag kalimutang kopyahin ang /boot/vmlinuz at /boot/initrd file sa device).

Kung sa ilang kadahilanan ay hindi naka-mount ang drive sa /mnt, at lumalabas na ang /mnt ay matatagpuan sa pangunahing aparato /dev/sda, ang bootloader ay muling isusulat sa /dev/sda. Dapat kang maging maingat kapag tinukoy ang --bootable na opsyon.

Sa panahon ng proseso ng boot, sinusuportahan ng Booty ang ilang mga opsyon na maaaring ipasa sa boot loader, grub.cfg o syslinux.cfg. Bilang default, nang walang anumang mga opsyon, ang lahat ng mga overlay ay nilo-load at na-unpack sa tmpfs (default na opsyon ooty.use-shmfs). Upang magamit ang Overlay FS ang booty.use-overlayfs na opsyon ay dapat gamitin. Ang booty.copy-to-ram na opsyon ay unang kinokopya ang mga overlay sa tmpfs, pagkatapos nito ay ikinokonekta lamang ang mga ito at nilo-load ang mga ito. Kapag nakopya na, maaaring alisin ang USB device (o iba pang storage device).

Pinagmulan: opennet.ru

Magdagdag ng komento