Спустя несколько дней активной разработки состоялся релиз boobstrap v1.1 — набор POSIX shell скриптов для создания загрузочных носителей с ОС GNU/Linux.
Что нового в этой версии?
- Добавлена поддержка busybox, оно не обязательно, но если оно установлено в вашей системе, — оно будет использовано при создании initrd образов. Если нет, то по прежнему весь необходимый набор утилит будет скопирован с вашей системы.
- Оверлеи (образы систем) теперь можно хранить на любых устройствах хранения данных. В версии 1.0 при создании загрузочного образ система с дистрибутивом линукса «вшивалась» прямо в initrd, в результате чего initrd мог получиться больших размеров и не на всех системах загружаться, но теперь благодаря busybox стало возможным хранить образы на любых накопителях информации. Оверлеи можно хранить на том же ISO образе или на других накопителях отдельно.
- Добавлена отдельная утилита
mkoverlayfs
для создания оверлеев, а именно это могут быть директории, cpio-архивы, squashfs-образы. Это удобно для ручного создания оверлеев с последующим их перемещением на initd-образ или создаваемый загрузочный ISO-образ. - Утилита
mkbootisofs
теперь поддерживает все те же опции что иmkinitramfs
, так например при создании оверлеев черезmkbootisofs `mktemp -d` --overlay rootfs-system/ --overlay rootfs-changes/ --squashfs > boot.iso
перечисленные оверлеи будут добавлены на сам ISO-образ. Больше нет необходимости создавать и загружать initrd огромных размеров. - Создаваемый initrd теперь может работать сам по себе
mkinitramfs `mktemp -d` > initrd.img
без необходимости переключаться в какую-либо систему. initrd будет сам пытаться найти систему из оверлеев на всех доступных накопителях и переключаться в неё. Для работы этой функции потребуется наличие busybox. - Обеспечена полная обратная совместимость, таким образом, что не имеет значение, откуда и как вы загружаетесь и какими инструментами пользуетесь. Больше нет обязательных к установке программ-зависимостей (кроме как для создания ISO). Загружаемый initrd прекрасно работает при использовании нативных утилит из вашей хост-системы, либо же при использовании busybox. Так же без разницы, где итоговая система будет распологаться, на самом initrd или на отдельном устройстве накопителе информации (ISO, USB, HDD/SSD, CD-ROM...). initrd загрузится в любом случае, если найдёт куда.
- Добавлена возможность загружать систему в SHMFS (tmpfs, ramfs) и переключаться в чистое окружение tmpfs без использования OVERLAY_FS. Таким образом обеспечена работа с ванильным ядром, просто
make defconfig && make
и у вас всё будет работать. Стоит при этом учесть, что система может занимать много места в оперативной памяти, подробнее уточняйте у вашегоdu -csh your-gentoo-chroot/
. Так же, теперь использование SHMFS это поводение загрузчика initrd по-умолчанию, и если вы хотите продолжить использование оверлеев, необходимо принудительно их включить. - Добавлены следующие опции для передачи ядру Linux при загрузке.
- boobs.use-shmfs — при использовании данной опции данные со всех оверлеев будут скопированы в одну tmpfs папку, после чего система будет полностью загружена и работать прямиком из чистого tmpfs. Используйте данную опцию с осторожностью. Так например, если ваша система распологается внутри initrd-образа, к примеру, хранится как rootfs.cpio-архив, и размер данного архива 1ГБ, то прежде чем система будет окончательно загружена, она должна быть распакована из архива, а для этого потребуется ещё 1ГБ памяти помимо уже загруженого initrd, и плюс ещё немножко на запущенные программы. И только после того как система будет окончательно загужена, первичный rootfs.cpio-архив будет удалён из памяти и 1ГБ памяти будет освобождён. Учитывайте такие нюансы. Если же система в rootfs.cpio-архиве хранится на каком-либо носителе, например ISO на USB, то тогда потребуется всего 1ГБ памяти для распаковки системы в память. Так же учитывайте, что это поведение по-умолчанию, поскольку SHMFS поддерживается ванильным ядром «из коробки», а CONFIG_OVERLAY_FS нужно включать, что может быть не дружелюбно к пользователю,
как женщины не дружелюбны ко мне. - boobs.use-overlayfs — опция, при которой будет использована файловая система Overlay FS для монтирования, загрузки и дальнейшей работы всех образов с оверлеями. Например, SquashFS-образ с системой будет смонтирован в папку, после чего система будет загружена и работать из данного SquashFS-образа с использованием Overlay FS. При использовании оверлеев так же добавлена возможность сохранения всех изменений сделанных в системе. Вся история изменений сохраняется в папке /mnt/overlays/rootfs-changes. Например, когда вы загрузились в свою систему, запускаются различные демоны, которые вносят свои данные в корень файловой системы, или например вы создаёте файлы, и так далее и тому подобное. Все эти изменения, внесённые в систему, доступны через папку /mnt/overlays/rootfs-changes. Вы можете её архировать и сохранять с последующей загрузкой как оверлей.
- boobs.copy-to-ram — опция позволяет скопировать образы с оверлеями в память, прежде чем система будет с ними работать. Например, когда вы загрузились с USB-флешки, все образы соответственно будут смонтированы с данной USB-флешки и система будет загружена и работать с неё. Однако, указав данную опцию, все образы с оверлеями будут предварительно скопированы с USB-флешки в память, и только затем подключены, и система будет окончательно загружена, после чего USB-флешку можно отключить от вашего устройства.
- boobs.search-rootfs — по-умолчанию все созданные оверлеи сохраняются в папке /system/overlays, но вы можете указать любую свою папку на выбор или даже просто файл, где следует искать и откуда загружать оверлеи с вашей системой. Так например, указав опцию для ядра boobs.search-rootfs=/filesystem.squashfs, и далее создав утилитой mkoverlayfs свой оверлей с системой, положив его в корень любого вашего накопителя информации, будь то диск, флешка... initrd будет искать данный образ в корне каждого накопителя информации, и в случае успеха оверлей с системой будет загружен. Опять же, если вы хотите загрузить несколько оверлеев наложенных друг поверх друга, то укажите, внезапно, директорию!
- boobs.use-shmfs — при использовании данной опции данные со всех оверлеев будут скопированы в одну tmpfs папку, после чего система будет полностью загружена и работать прямиком из чистого tmpfs. Используйте данную опцию с осторожностью. Так например, если ваша система распологается внутри initrd-образа, к примеру, хранится как rootfs.cpio-архив, и размер данного архива 1ГБ, то прежде чем система будет окончательно загружена, она должна быть распакована из архива, а для этого потребуется ещё 1ГБ памяти помимо уже загруженого initrd, и плюс ещё немножко на запущенные программы. И только после того как система будет окончательно загужена, первичный rootfs.cpio-архив будет удалён из памяти и 1ГБ памяти будет освобождён. Учитывайте такие нюансы. Если же система в rootfs.cpio-архиве хранится на каком-либо носителе, например ISO на USB, то тогда потребуется всего 1ГБ памяти для распаковки системы в память. Так же учитывайте, что это поведение по-умолчанию, поскольку SHMFS поддерживается ванильным ядром «из коробки», а CONFIG_OVERLAY_FS нужно включать, что может быть не дружелюбно к пользователю,
- Ну и, конечно же, обновлена документация, за что отдельное спасибо камраду Difrex за перевод файла README в формат Markdown.
Так же, товарищем @swine с IRC-канала #lor @ freenode поступил запрос загружать оверлей не с initrd, не с iso-образа, а именно с жёсткого диска. В качестве примера рассмотрю эту ситацию и опишу как это делается.
Прежде всего, у вас должна быть подготовлена ваша система в отдельной директории, разверните какой-нибудь чрут, да хоть ту же Gentoo скачайте и распакуйте в директорию (шутки кончились, да, теперь всё сульёзна!). Допустим, в gentoo/.
Далее создадим оверлей как SquashFS-образ. И сохраним образ в корень любого вашего накопителя, текущего жёсткого диска, в качестве примера.
# mkoverlayfs gentoo/ --squashfs-xz --output /gentoo.squashfs
Теперь создадим «фирменный» initrd-образ, обычный, без ничего.
# mkinitramfs `mktemp -d` > /boot/initrd
Для загрузки осталось лишь обновить загрузчик и указать загрузку ядра со следеующими опциями:
linux /boot/vmlinuz boobs.use-overlayfs boobs.search-rootfs=/gentoo.squashfs
initrd /boot/initrd
Всё, перезагружаем компьютер, выбираем в загрузчике наши опции и получаем на выходе работающий /gentoo.squashfs через Overlay FS, сохраняющий все изменения в памяти (tmpfs).
При желании можете добавить опцию boobs.copy-to-ram и отнести жёсткий диск на свалку истории, личная рекомендация от Спуфаря.