|
Компания Igalia, известная своим участием в разработке таких свободных проектов, как GNOME, GTK, WebKitGTK, Epiphany, Maemo, GStreamer, Wine, Mesa и freedesktop.org, представила проект Moonforge, упрощающий создание и сопровождение собственных Linux-дистрибутивов для различных устройств и встраиваемых систем. Начинка дистрибутива формируется на основе сборочного инструментария и метаданных пакетов от проектов OpenEmbedded и Yocto. Специфичные для проекта наработки распространяются под лицензией MIT.
Moonforge предоставляет разработчикам и системным интеграторам каркас, набор файлов конфигурации и коллекцию компонентов для формирования атомарно обновляемых системных образов, основанных на применении уже проверенных и распространённых в индустрии технологий, таких как yocto, bitbake и kas.
Для сформированных образов поддерживается упрощённый процесс установки обновлений и обеспечивается длительный цикл сопровождения. Основная цель проекта - предоставить разработчикам встраиваемых систем удобный инструментарий, дающий возможность сосредоточиться на развитии специфичной для их продукта функциональности и не тратить время на задачи, связанные с формированием и поддержанием дистрибутива.
Системный образ компонуется из набора готовых модулей Yocto. Каждый модуль отвечает за определённую возможность или поддержку конкретной целевой аппаратной платформы. Например, предлагаются модули для поддержки Docker, QEMU или Podman, управления обновлениями через RAUC, формирования графического интерфейса на базе композитного сервера Weston, запуска браузерного интерфейса на базе Webkit для интернет-киосков и сборки для плат Raspberri Pi 4 и 5.
Поддерживается три канала распространения релизов: stable (стабильная LTS-ветка), next (ветка, в которой развивается следующий LTS-релиз) и main (экспериментальная ветка, в которой ведётся разработка). Каждая ветка привязана к своей версии набора компонентов Yocto. Стабильная ветка обновляется раз в месяц и соответствует LTS-релизам Yocto.
Обновления доставляются в режиме OTA (Over-The-Air) с использованием инструментария Mender и устанавливаются атомарно через замену целиком всей системы. На накопителе создаётся два идентичных корневых раздела - активный и пассивный. Новое обновление устанавливается в пассивный раздел, никак не влияя на работу активного. После перезагрузки разделы меняются местами - раздел с новым обновлением становится активным, а прошлый активный раздел переводится в пассивный режим и ожидает установки следующего обновления. Если после обновления что-то пошло не так, осуществляется откат на прошлый вариант системы.
Для создания системных образов используется инструментарий BitBake, а для формирования конфигурации и обеспечения воспроизводимых сборок - kas. Сборки, обновления, отчёты об уязвимостях и метаданные SBOM (Software Bill of Materials) автоматически собираются и публикуются с использованием систем непрерывной интеграции и непрерывного развёртывания (CI/CD). Сборочная инфраструктура на базе Moonforge может быть развёрнута как на локальных серверах, так и в публичных или приватных облачных окружениях.
Для прозрачности и предсказуемости процессов создания производных продуктов в дистрибутиве применяется жёсткое разделение между upstream- и downstream-компонентами, позволяющее разработчикам при необходимости добавлять дополнительную функциональность поверх базовой начинки. Конфигурация определяется в декларативном представлении, используя формат YAML, и охватывает такие области как подключение внешних репозиториев, активация модулей Yocto, управление зависимостями между компонентами дистрибутива, применение дополнительных патчей и изменение применяемых по умолчанию системных настроек.
|