Искам да представя на вашето внимание фреймуърк на име boobstrap, написан на POSIX shell, за създаване на загрузъчни образи с дистрибуции на GNU/Linux. Фреймуъркът позволява да преминете през целия процес в три прости стъпки: от инсталирането на системата в chroot, създаването на initramfs образ, включващо системата от chroot, и в крайна сметка загрузъчния ISO образ. boobstrap включва три утилити: mkbootstrap, mkinitramfs и mkbootisofs съответно.
mkbootstrap инсталира системата в отделна директория, има нативна поддръжка за CRUX, а в случай на Arch Linux / Manjaro и дистрибуции на базата на Debian трябва да се използват външни утилити pacstrap, basestrap и debootstrap съответно.
mkinitramfs създава initramfs образ, можете да използвате инсталираната система в директорията като "оверлей", компресиран с помощта на SquashFS, или да стартирате системата директно в tmpfs. Например, командата mkinitramfs `mktemp -d` —overlay "arch-chroot/" —overlay "\/home" —squashfs-xz —output initrd ще създаде initrd файл, включващ два оверлея с "arch-chroot/" системата и вашия "\/home", компресирани с помощта на SquashFS, който по-късно можете да заредите чрез PXE в tmpfs или да създадете загрузъчен ISO образ с този initrd.
mkbootisofs създава BIOS / UEFI загрузъчен ISO образ от указаната директория. В директорията е достатъчно да поставите \/boot\/vmlinuz и \/boot\/initrd.
boobstrap не използва busybox, а за създаване на работна среда initramfs копира минимален набор от програми с помощта на ldd, необходими за зареждане и превключване в системата. Списъкът с програми за копиране, както и всичко останало, може да се настрои чрез конфигурационния файл \/etc\/boobstrap\/boobstrap.conf. Можете също така да инсталирате всяка минималистична дистрибуция в отделен chroot, от който след това да създадете вече пълноценна initramfs среда. Като такава минималистична, но в същото време пълноценна среда се предлага шаблонът "crux_gnulinux-embedded", който след xz заема компромисни 37 MB. busybox, освен размера си, 3-5 MB спрямо 30-50 MB пълноценно GNU/Linux среди, не предлага никакви допълнителни предимства, по този начин използването на busybox в проекта не се вижда като целесъобразно.
Как бързо да проверите работоспособността и да започнете работа? Инсталирайте и стартирайте.
# git clone https://github.com/sp00f1ng/boobstrap.git
# cd boobstrap
# make install# boobstrap/tests/crux_gnulinux-download-and-build
Също така е необходимо да инсталирате зависимости, а именно: cpio, grub, grub-efi, dosfstools, xorriso. Използването на squashfs-tools не е задължително, можете да работите в tmpfs при подходящ обем оперативна памет. В случай, че в системата липсва нещо, boobstrap ще ви уведоми при стартиране.
За опростяване на създаването на конфигурации boobstrap предлага да се използват „шаблони“ и „системи“, чиято същност е да използвате „шаблони“ (bootstrap-templates/) за бързо инсталиране на системи от файл, а самите „системи“ (bootstrap-systems/) да се използват за настройка на финални конфигурации.
Например, стартирането на скрипта boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild ще инсталира минимална конфигурация на системата CRUX GNU/Linux и ще я запази в файла crux_gnulinux-embedded.rootfs, след което стартирате boobstrap/bootstrap-systems/default/crux_gnulinux.bbuild, който ще зареди първоначалната конфигурация от споменатия файл, ще извърши необходимото настройване и ще подготви зареждаща ISO. Това е удобно, когато например много системи използват еднотипна конфигурация: вместо всеки път да описвате същия набор от пакети, използвате един шаблон, на базата на който след това създавате зареждащи изображения на системи с финална конфигурация.
Къде да използвате всичко това?
Настройвате системата в файл веднъж и със стартирането му извършвате изграждането и/или обновяването ѝ. Системата работи в tmpfs, което я прави еднократна по същество. В случай на повреда на системата, с едно натискане на бутона Reset се връщате в първоначалното състояние. Можете спокойно да изпълните rm -rf /.
Можете да настройвате конфигурациите на всичките си системи локално, да създавате изображения, да ги тествате в виртуална машина или на отделно „желязо“, след което да ги заредите на отдалечен сървър и с изпълнението на два команди kexec -l /vmlinuz —initrd=/initrd && kexec -e да обновите цялата система веднага, презареждайки я в tmpfs.
По подобен начин можете да прехвърлите всички системи, например на VDS, да работите в tmpfs и да криптирате диска /dev/vda, използвайки го само за данни, без да е необходимо да държите операционната система на него. Единствената „точка на leakage на информация“ в такъв случай ще бъде само „студеният дамп“ на паметта на вашата виртуална машина, а в случай на компрометиране на системата (например чрез подбиране на парола за ssh или уязвимост в exim), можете да заредите нов ISO чрез „панела за управление“ на вашия доставчик, за да върнете VDS в действие, като не забравите да редактирате конфигурацията на системата, затваряйки всички уязвимости. Това е по-бързо от преинсталирането, последващата настройка и/или възстановяването от бекъп, тъй като по същество зареждането на ISO с вашата система е вашият бекъп. „Седем бедствия – един Reset.“
В крайна сметка, можете да създадете всякакъв дистрибутив за вашите нужди, да го запишете на USB флашка и да работите с него, актуализирайки го при необходимост и отново записвайки го на USB флашка. Всички данни да се съхраняват в „облака“. Няма нужда повече да се притеснявате за запазването на системата и да правите бекъп, когато системата, повтарям, по същество стана „еднократна“.
Вашите желания, предложения и коментари са добре дошли.
В хранилището по следната връзка има подробен README файл (на английски) с описание на всяка утилита и примери за използване, както и подробна документация на руски и история на развитието, налични по следната връзка: Комплекс от стартови скриптове boobstrap.
Източник: linux.org.ru

