Леннарт Поттеринг представил mkosi, инструмент для генерации образов ОС

2 месяца ago admin 0

Следом за Casync Леннарт Поттеринг (Lennart Poettering) представил ещё один свой проект — mkosi (Make Operating System Image), в рамках которого подготовлен инструментарий для генерации загрузочных образов операционных систем. Проект написан на языке Python, распространяется под лицензией LGPL 2.1 и представляет собой обвязку над такими утилитами, как dnf (режим «—installroot»), debootstrap, pacstrap и zypper, предоставляющую унифицирванный интерфейс для создания образов, независимый от используемого дистрибутива.

Mkosi позиционируется как legacy-free, т.е. поддерживает только актуальные в современных реалиях технологии. Например, образы могут генерироваться только с таблицами разделов GPT (MBR не поддерживает), только на основе systemd и только для загрузки на системах с EFI (системы с BIOS не поддерживаются). Для корневого раздела могут применяться ФС ext4, btrfs и squashfs. Дополнительно в образ могут включаться раздел подкачки, /srv и /home. Для данных в разделах может быть включено шифрование через LUKS и верификация целостности при помощи dm-verity. Также возможна генерация системного образа в виде каталога в текущей ФС (OS tree), tar-архива или подразделов Btrfs.

Поддерживается создание образов на базе дистрибутивов Fedora, Debian, Ubuntu, Arch Linux и openSUSE. В качестве хост-системы для сборки образов может применяться любой дистрибутив, в котором может выполняться debootstrap (Debian), dnf (Fedora ), pacstrap (Arch) или zypper (openSUSE). Для ускорения повторных сборок может применяться кэш пакетов RPM и DEB. Созданный образ может быть запущен в виде контейнера командой «systemd-nspawn -bi image.raw». Системная начинка определяется через файл конфигурации mkosi.default, в котором можно выбрать тип дистрибутива для построения образа и список устанавливаемых пакетов.

Подразумевается, что разработчики приложений смогут включить в состав своего проекта файл mkosi.default, который позволит пользователям быстро сгенерировать системный образ для запуска данного приложения в контейнере под управлением systemd-nspawn или развёртывания в облаке или IoT-устройстве при помощи casync. При этом для создания образа не требуется изучение специфики сборочных инструментов для разных дистрибутивов.


Source: pirates.in.ua