Igalia, bekannt fĂŒr die Mitwirkung an der Entwicklung freier Projekte wie GNOME, GTK, WebKitGTK, Epiphany, Maemo, GStreamer, Wine, Mesa und freedesktop.org, hat das Projekt Moonforge vorgestellt. Dieses erleichtert die Erstellung und Pflege individueller Linux-Distributionen fĂŒr verschiedene GerĂ€te und eingebettete Systeme. Der Inhalt der Distribution wird auf der Grundlage von Build-Tools und Metadatenpaketen aus den Projekten OpenEmbedded und Yocto erstellt. Projektspezifische Entwicklungen werden unter der MIT-Lizenz veröffentlicht.
Moonforge bietet Entwicklern und Systemintegratoren ein Framework, eine Sammlung von Konfigurationsdateien und eine Sammlung von Komponenten zur Erstellung atomar aktualisierbarer Systembilder. Diese basieren auf bewĂ€hrten, in der Branche verbreiteten Technologien wie Yocto, BitBake und KAS. FĂŒr die erstellten Bilder wird ein vereinfachter Aktualisierungsprozess unterstĂŒtzt, und es wird ein langfristiger Support-Zyklus gewĂ€hrleistet. Das Hauptziel des Projekts ist es, Entwicklern eingebetteter Systeme ein praktisches Werkzeug an die Hand zu geben, damit sie sich auf die Entwicklung produkt-spezifischer Funktionen konzentrieren können, ohne Zeit mit der Erstellung und Pflege eines Distributionspakets zu verlieren.
Das Systembild wird aus einer Reihe vorgefertigter Yocto-Module zusammengesetzt. Jedes Modul ist fĂŒr eine bestimmte FunktionalitĂ€t oder die UnterstĂŒtzung einer bestimmten Zielhardware-Plattform verantwortlich. Beispielsweise gibt es Module zur UnterstĂŒtzung von Docker, QEMU oder Podman, zur Verwaltung von Updates ĂŒber RAUC und zur Erstellung von grafischen BenutzeroberflĂ€chen auf Basis von Komposit. Server Weston, ein auf Webkit basierendes Browser-Interface fĂŒr Internet-Kioske und Builds fĂŒr die Platinen Raspberry Pi 4 und 5.
Es werden drei Release-KanĂ€le unterstĂŒtzt: stable (stabile LTS-Zweige), next (Zweig, in dem die nĂ€chste LTS-Version entwickelt wird) und main (experimenteller Zweig, in dem die Entwicklung stattfindet). Jeder Zweig ist an seine eigene Version des Yocto-Komponenten-Stapels gebunden. Der stabile Zweig wird einmal im Monat aktualisiert und entspricht den LTS-Versionen von Yocto.
Updates werden Over-The-Air (OTA) mit Hilfe des Mender-Tools bereitgestellt und atomar durch den vollstĂ€ndigen Austausch des gesamten Systems installiert. Auf dem Speicher werden zwei identische Root-Partitionen erstellt â aktiv und passiv. Ein neues Update wird in der passiven Partition installiert, ohne die Funktion der aktiven zu beeintrĂ€chtigen. Nach dem Neustart werden die Partitionen getauscht â die Partition mit dem neuen Update wird aktiv, wĂ€hrend die vorher aktive Partition in den passiven Modus versetzt wird und auf die Installation des nĂ€chsten Updates wartet. Falls nach dem Update etwas schiefgeht, wird auf die letzte Systemversion zurĂŒckgesetzt.
FĂŒr die Erstellung von Systemabbildern wird das BitBake-Toolset verwendet, wĂ€hrend fĂŒr die Konfiguration und die Sicherstellung reproduzierbarer Builds kas zum Einsatz kommt. Builds, Updates, Berichte ĂŒber SicherheitsanfĂ€lligkeiten und Metadaten der SBOM (Software Bill of Materials) werden automatisch mithilfe von Continuous Integration und Continuous Deployment (CI/CD) Systemen gesammelt und veröffentlicht. Die Build-Infrastruktur auf Basis von Moonforge kann sowohl in lokalen Servern, als auch in öffentlichen oder privaten Cloud-Umgebungen bereitgestellt werden.
Um die Transparenz und Vorhersehbarkeit der Prozesse zur Erstellung von abgeleiteten Produkten im Distributionssystem zu gewĂ€hrleisten, wird eine strikte Trennung zwischen Upstream- und Downstream-Komponenten angewendet, die Entwicklern ermöglicht, bei Bedarf zusĂ€tzliche FunktionalitĂ€ten auf der Basisversion hinzuzufĂŒgen. Die Konfiguration wird in einer deklarativen Darstellung definiert, die das YAML-Format verwendet, und umfasst Bereiche wie die Anbindung externen Repositories, die Aktivierung von Yocto-Modulen, das Management der AbhĂ€ngigkeiten zwischen den Komponenten der Distribution, die Anwendung zusĂ€tzlicher Patches und die Anpassung der standardmĂ€Ăigen Systemeinstellungen.
Quelle: opennet.ru
