booty - утыліта для стварэння загрузных вобразаў і назапашвальнікаў

Прадстаўлена праграма Здабыча, якая дазваляе адной камандай ствараць загрузныя выявы initrd, файлы ISO ці назапашвальнікі, улучальныя ў сябе любы дыстрыбутыў GNU/Linux. Код напісаны на POSIX shell і распаўсюджваецца пад ліцэнзіяй GPLv3.

Усе дыстрыбутывы, загружаныя з выкарыстаннем Booty, працуюць альбо ў SHMFS (tmpfs), альбо ў SquashFS + Overlay FS, на выбар карыстача. Дыстрыбутыў ствараецца адзін раз, а падчас загрузкі выбіраюцца параметры, якія дазваляюць выкарыстоўваць чысты tmpfs для кораня, альбо звязак Overlay FS + SquashFS з запісам змен у tmpfs. Маецца магчымасць папярэдне скапіяваць загружаны дыстрыбутыў у АЗП, што дазваляе адключыць USB-назапашвальнік пасля загрузкі і капіяванні дыстрыбутыва ў памяць.

Перш за ўсё, Booty генеруе ўласны initrd выява, у якім могуць выкарыстоўвацца родныя ўтыліты з бягучай сістэмы або busybox. Маецца магчымасць уключыць (спакаваць) цалкам у initramfs усталяваны ў дырэкторыі дыстрыбутыў (chroot). Гэта можа быць карысна, калі неабходна абнавіць сістэму з выкарыстаннем 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 і іншыя назапашвальнікі, усталёўваючы вышэйапісаную сістэму з вобразаў. Здабыча падтрымлівае стварэнне загрузных сістэм 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

Пасля дадзенай каманды будзе сфарміраваны загрузны BIOS/UEFI ISO-выява, які загружае Gentoo у з SquashFS-выявы з выкарыстаннем Overlay FS, выкарыстоўвалы tmpfs для захоўвання дадзеных. Ядро павінна быць сабрана з падтрымкай Overlay FS з SquashFS. Аднак, калі гэта па нейкіх прычынах не патрабуецца, можна выкарыстоўваць опцыю «-cpio» замест -squashfs, для пакавання gentoo/ як cpio-архіва, у такім выпадку архіў будзе распакаваны наўпрост у tmpfs пры загрузцы, галоўнае, каб для распакавання сістэмы у tmpfs было дастаткова аператыўнай памяці.

Цікавы факт: калі ISO выява створаная з выкарыстаннем опцыі «—efi» распакаваць на FAT32-флэшку шляхам простага капіявання файлаў (cp -r), то Flash-назапашвальнік будзе загружацца ў UEFI-рэжыме без якой-небудзь папярэдняй падрыхтоўкі, дзякуючы спецыфіцы UEFI- загрузнікаў.

Апроч загрузных ISO з тымі ж параметрамі можа быць створаны любы загрузны назапашвальнік: USB, HDD, SSD і гэтак далей, пры гэтым дадзены назапашвальнік можа працягваць выкарыстоўвацца па сваім прамым прызначэнні. Для гэтага неабходна прымантаваць, напрыклад, USB-прылада і выканаць запуск mkbootisofs на ім. Толькі дадаць адну опцыю "-bootable", каб назапашвальнік, на якім знаходзіцца паказаная дырэкторыя, стаў загрузным.

змантаваць /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

Дадаць каментар