booty — инструмент за създаване на стартиращи образи и носители

Представена програма Booty, която позволява с една команда да създадете зареждащи образи initrd, ISO файлове или носители, включващи всяко разпространение на GNU/Linux. Кодът е написан на POSIX shell и се разпространява е с лиценз GPLv3.

Всички разпространения, заредени с използването на Booty, работят или в SHMFS (tmpfs), или в SquashFS + Overlay FS, по избор на потребителя. Разпространението се създава веднъж, а в процеса на зареждане се избират параметри, които позволяват да се използва чист tmpfs за корен, или комбинация Overlay FS + SquashFS с запис на промените в tmpfs. Има възможност предварително да се копира зарежданото разпространение в RAM, което позволява да се изключи USB носителя след зареждане и копиране на разпространението в паметта.

Първо, Booty генерира свой собствен initrd образ, в който могат да бъдат използвани оригинални утилити от текущата система или busybox. Има възможност да се включи (опакова) целия разпространение, инсталирано в директория (chroot) в initramfs. Това може да е полезно, когато трябва да се обнови системата с използване на kexec: просто се презарежда initrd с новото ядро и новата система вътре в initrd.

Създаване на Booty-специфичен initrd образ:

mkdir initramfs/
mkinitramfs initramfs/ —output initrd

Създаване на initrd образ с включване на дистрибутива от директорията «gentoo/»:

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

След това този initrd образ е напълно готов за зареждане, например, през PXE или чрез kexec.

След това Booty генерира образи с системата, указана като «оверлей». Например, може да се инсталира (разопакова архив) условен Gentoo в отделна директория, след което с помощта на Booty ще бъде генериран cpio-архив или SquashFS образ с тази система. Също така може да се извърши настройка на дистрибутива в отделна директория, а в друга директория да се копират лични настройки. Всички тези «слоеве» ще бъдат последователно заредени един върху друг и ще създадат единна работна система.

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

В крайна сметка, Booty позволява да се създават зареждащи ISO-образи и USB, HDD, SSD и други носители, инсталирайки по-гореописаната система от образи. Booty поддържа създаването на зареждащи системи BIOS и UEFI. Поддържат се зареждачи GRUB2 и SYSLINUX. Зареждачите могат да се комбинират, например за зареждане в BIOS да се използва SYSLINUX, а за UEFI — GRUB2. За създаването на ISO-образи допълнително ще е необходим пакет cdrkit (genisoimage) или xorriso (xorrisofs), по избор.

Единственото допълнително действие, което ще е необходимо, е предварително да се подготви ядрото (vmlinuz) за зареждане. Авторът (Spoofing) препоръчва да се използва «make defconfig». Преди да се създаде образът, е необходимо да се подготви директория, в която да се постави ядрото vmlinuz и предварително подготвения «празен» initrd, създаден в първия пример.

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

Сега подготовката е завършена, можем да създадем ISO образи от тази директория.

Следващата команда ще създаде ISO образ, не зареждащ, просто ISO:

mkdir iso/
mkbootisofs iso/ —output archive.iso

За създаването на зареждащ образ е необходимо да се укаже опцията «—legacy-boot» за BIOS и «—efi» за UEFI, като параметри на опцията приемат либо grub2, либо syslinux, така също може да се укаже само една опция (например, ако не е необходима поддръжка за UEFI зареждане, тя може да не бъде указана).

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

И също така, както преди бяха включени образите с системата в initrd, могат да бъдат включени и в ISO.

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

След тази команда ще бъде създаден начален ISO образ на BIOS/UEFI, който зарежда Gentoo от SquashFS образ, използвайки Overlay FS, който използва tmpfs за съхранение на данни. Ядро трябва да бъде компилирано с поддръжка на Overlay FS с SquashFS. Въпреки това, ако по някаква причина това не е необходимо, можете да използвате опцията «—cpio» вместо —squashfs, за опаковане на gentoo/ като cpio архив. В този случай архивът ще бъде разопакован директно в tmpfs при зареждане, важно е да има достатъчно оперативна памет за разопаковане на системата в tmpfs.

Интересен факт: ако ISO образът, създаден с опцията «—efi», бъде разопакован на FAT32 флашка чрез простото копиране на файлове (cp -r), то флашката ще се зарежда в UEFI режим без никаква предварителна подготовка, благодарение на спецификата на UEFI зареждачи.

В допълнение към зареждащи ISO с идентични параметри, може да бъде създаден всеки зареждащ носител: USB, HDD, SSD и т.н., като този носител може да продължи да се използва по свое първоначално предназначение. За целта е необходимо да се монтира, например, USB устройство и да се стартира mkbootisofs на него. Просто добавете една опция «—bootable», за да стане носителят, на който се намира указаната директория, зареждащ.

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

След което USB устройството ще стане стартово с оверлей gentoo/ (не забравяйте да копирате файловете /boot/vmlinuz и /boot/initrd на устройството).

Ако по някаква причина носителят не е бил монтиран в /mnt, и се окаже, че /mnt е на основното устройство /dev/sda, то съответно зареждачът ще бъде презаписан на /dev/sda. Трябва да се проявява внимание при указване на опцията —bootable.

В процеса на зареждане Booty поддържа редица опции, които могат да бъдат посочени в зареждача, grub.cfg или syslinux.cfg. По подразбиране, без никакви опции, се извършва зареждане и разопаковане на всички оверлеи в tmpfs (опция по подразбиране ooty.use-shmfs). За да се използва Overlay FS, трябва да бъде зададена опцията booty.use-overlayfs. Опцията booty.copy-to-ram предварително копира оверлеите в tmpfs, след което само ги свързва и зарежда. След копирането USB устройството (или друг носител) може да бъде изтеглено.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster