Следом за 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 и проверка по цифровой подписи для UEFI SecureBoot. Также возможна генерация системного образа в виде каталога в текущей ФС (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, который позволит быстро сгенерировать системный образ для запуска данного приложения в локальном контейнере, развёртывания в облаке или на IoT-устройстве при помощи casync. При этом для создания образа не требуется изучение специфики сборочных инструментов для разных дистрибутивов.

Подготовленный образ может быть запущен напрямую на оборудовании, использован внутри виртуальной машины, запущен как контейнер при помощи systemd-nspawn или вызыван как сервис systemd (unit с "RootImage="). Для разработчиков встраиваемой техники mkosi даёт возможность легко организовать генерацию системных образов прошивки, защищённых от модификации посторонними лицами, благодаря применению dm-verity и UEFI SecureBoot.

Источник: http://www.opennet.ru/opennews/art.shtml?num=46773