Искам да ви представя фреймворк на име 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 заема компромисни 37MB. busybox, освен своя размер, 3-5MB спрямо 30-50MB на пълноценно 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, използвайки го само за данни, без да е необходимо да имате операционната система на него. Единствената "точка на изтичане на информация" в такъв случай ще бъде единствено "студеното копие" на паметта на вашата виртуална машина, а в случай на компрометиране на системата (например, чрез подбиране на ssh паролата или уязвимост в exim), можете да заредите нов ISO чрез "управленската панел" на вашия доставчик, за да върнете VDS обратно в работа, не забравяйки при това да редактирате конфигурацията на системата, закривайки всички уязвимости. Това е по-бързо от преинсталиране, последваща настройка и/или възстановяване от резервно копие, тъй като по същество, зареденият ISO с вашата система е именно вашето резервно копие. "Седем беди - едно нулиране."
В крайна сметка можете да създадете всякакво дистрибуция, съобразена с вашите задачи, да я запишете на USB-накладка и да работите в нея, обновявайки при необходимост и отново записвайки на USB-накладка. Всички данни да бъдат съхранявани в "облака". Вече не е необходимо да се притеснявате за запазването на системата и да правите резервно копие, тъй като системата, отново подчертавам, по същество стана "еднократна".
Вашите желания, предложения и коментари са добре дошли.
В репозиториума по следната връзка има подробен README файл (на английски) с описание на всяка утилита и примери за използване, също така съществува подробна документация на руски и история на развитието, налични по връзката: Комплекс от стартови скриптове boobstrap.
Източник: linux.org.ru

