Igalia, known for its contributions to open source projects such as GNOME, GTK, WebKitGTK, Epiphany, Maemo, GStreamer, Wine, Mesa, and freedesktop.org, has unveiled the Moonforge project, which simplifies the creation and maintenance of custom Linux distributions for various devices and embedded systems. The distribution's core components are based on build tools and package metadata from the OpenEmbedded and Yocto projects. Project-specific developments are distributed under the MIT license.
Moonforge provides developers and system integrators with a framework, a set of configuration files, and a collection of components for creating atomically updatable system images based on proven and widely used industry technologies, such as yocto, bitbake, and kas. The resulting images support a simplified update process and a long-term maintenance cycle. The project's primary goal is to provide embedded system developers with a user-friendly toolkit, allowing them to focus on developing product-specific functionality and avoiding the time associated with distribution creation and maintenance.
The system image is built from a set of ready-made Yocto modules. Each module is responsible for a specific feature or support for a specific target hardware platform. For example, modules are available for Docker, QEMU, or Podman support, update management via RAUC, and the creation of a graphical interface based on composite. Server Weston, launching a Webkit-based browser interface for internet kiosks and building for Raspberry Pi 4 and 5 boards.
Three release distribution channels are supported: stable (the stable LTS branch), next (the branch where the next LTS release is developed), and main (the experimental branch where development occurs). Each branch is tied to its own version of the Yocto component set. The stable branch is updated monthly and corresponds to Yocto LTS releases.
Updates are delivered over-the-air (OTA) using Mender tools and are installed atomically, replacing the entire system. Two identical root partitions are created on the drive—active and passive. The new update is installed on the passive partition, without affecting the active one. After a reboot, the partitions swap—the partition with the new update becomes active, and the previously active partition is switched to passive mode and awaits the next update. If something goes wrong after the update, the system is rolled back to the previous version.
BitBake is used to create system images, while kas is used to generate configurations and ensure reproducible builds. Builds, updates, vulnerability reports, and SBOM (Software Bill of Materials) metadata are automatically collected and published using continuous integration and continuous deployment (CI/CD) systems. The Moonforge-based build infrastructure can be deployed on both local and remote servers. серверах, both in public and private cloud environments.
To ensure transparency and predictability in the development of derivative products, the distribution maintains a strict separation between upstream and downstream components, allowing developers to add additional functionality on top of the base package as needed. Configuration is defined declaratively using the YAML format and covers areas such as connecting external repositories, activating Yocto modules, managing dependencies between distribution components, applying additional patches, and changing default system settings.
Source: opennet.ru
