Створення завантажувальних образів boobstrap v1.0


Створення завантажувальних образів boobstrap v1.0

Хочу надати вашій увазі фреймворк під назвою 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 " "/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мб. busybox ж, крім свого розміру, 3-5мб проти 30-50мб повноцінного GNU/Linux оточення, жодних переваг більше не пропонує, таким чином використання busybox у проекті не є доцільним.

Як швидко перевірити працездатність та розпочати роботу? Встановіть та запустіть.

# git clone https://github.com/sp00f1ng/boobstrap.git
# cd boobstrap
# make install# boobstrap/tests/crux_gnulinux-download-and-build
# qemu-system-x86_64 -enable-kvm -m 1G -cdrom tmp.*/install.iso

Також вам необхідно доустановити залежності, а саме: 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, далі ви запускаєте boobstrapx/bootstrap/ru. завантажить первинну конфігурацію зі згаданого файлу, виконає всю необхідну настройку та підготує завантажувальний ISO. Це зручно, коли, наприклад, безліч систем використовують однотипну конфігурацію: щоб кожного разу не описувати однаковий набір пакетів, ви використовуєте один шаблон, на основі якого вже створюєте завантажувальні образи систем з кінцевою конфігурацією.

Де це все використовувати?

Ви налаштовуєте систему у файлі один раз і запуском його виконуєте її збирання та/або оновлення. Система працює в tmpfs, що робить її одноразовою, по суті. У разі виходу системи з ладу ви одним натисканням кнопки Reset повертаєтеся у вихідний стан. Ви можете спокійно виконати rm-rf/.

Ви можете налаштовувати конфігурації всіх ваших систем локально, створювати образи, тестувати їх у віртуальній машині або окремому залізі, далі завантажувати їх на віддалений сервер і запуском всього двох команд kexec -l /vmlinuz -initrd=/initrd && kexec -e оновлювати всю систему повністю, перезавантажуючи їх у tmpfs.

Аналогічно можна перевести всі системи, наприклад на VDS, на роботу в tmpfs, а диск /dev/vda зашифрувати і використовувати тільки під дані, без необхідності тримати операційну систему на ній. Єдиною «точкою витоку інформації» в такому випадку стане лише «холодний дамп» пам'яті вашої віртуальної машини, а у разі компрометації системи (наприклад, підбором пароля ssh або вразливості в exim), ви можете завантажити новий ISO через панель управління вашого провайдера, щоб знову повернути VDS в дію, не забувши при цьому, відредагувати конфігурацію системи, закривши всі вразливості. Це швидше, ніж переустановка, подальше налаштування та/або відновлення з бекапу, адже, по суті, ISO, що завантажується з вашою системою, це і є ваш бекап. "Сім бід - один Reset."

Зрештою, ви можете створити будь-який дистрибутив під свої завдання, записати його на USB-накопичувач і працювати в ньому, оновлюючи при необхідності і знову перезаписуючи його на USB-накопичувач. Усі дані зберігати у «хмарах». Більше не потрібно переживати за безпеку системи і робити її бекап, коли система, повторюся, насправді стала «одноразовою».

Ваші побажання, пропозиції та зауваження вітаються.

У репозиторії за посиланням далі докладний README-файл (англійською) з описом кожної утиліти та приклади використання, так само існує докладна документація російською та історія розвитку, доступні за посиланням: Комплекс завантажувальних скриптів boobstrap.

Джерело: linux.org.ru

Додати коментар або відгук