Die Firma Igalia, bekannt fĂŒr ihre Beteiligung an der Entwicklung freier Projekte wie GNOME, GTK, WebKitGTK, Epiphany, Maemo, GStreamer, Wine, Mesa und freedesktop.org, hat das Projekt Moonforge vorgestellt, das die Erstellung und Wartung eigener Linux-Distributionen fĂŒr verschiedene GerĂ€te und eingebettete Systeme vereinfacht. Der Inhalt der Distribution wird auf der Grundlage von Build-Tools und Metadaten 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 Systemabbilder, die auf bewĂ€hrten und in der Industrie verbreiteten Technologien wie Yocto, Bitbake und Kas basieren. FĂŒr erstellte Abbilder wird ein vereinfachter Installationsprozess fĂŒr Updates unterstĂŒtzt und es wird ein langfristiger Supportzyklus garantiert. Das Hauptziel des Projekts besteht darin, Embedded-Entwicklern ein benutzerfreundliches Werkzeug bereitzustellen, das es ihnen ermöglicht, sich auf die Entwicklung produktspezifischer Funktionen zu konzentrieren, ohne Zeit mit der Erstellung und Wartung der Distribution zu verschwenden.
Das Systemabbild setzt sich aus einer Reihe von fertigen Yocto-Modulen zusammen. Jedes Modul ist fĂŒr eine bestimmte FunktionalitĂ€t oder die UnterstĂŒtzung einer bestimmten Zielhardware-Plattform verantwortlich. Beispielsweise werden Module zur UnterstĂŒtzung von Docker, QEMU oder Podman, zum Management von Updates ĂŒber RAUC und zur Erstellung von grafischen BenutzeroberflĂ€chen auf Basis von Composite Server Weston, der Browser-OberflĂ€che auf der Basis von Webkit fĂŒr Internetkioske und dem Build fĂŒr die Raspberry Pi 4 und 5-Plattformen angeboten.
Es werden drei KanĂ€le fĂŒr die Veröffentlichung von Releases unterstĂŒtzt: stable (stabile LTS-Version), next (Branch, in dem der nĂ€chste LTS-Release entwickelt wird) und main (experimenteller Branch, in dem die Entwicklung stattfindet). Jeder Branch ist an seine eigene Version des Yocto-Komponentenpakets gebunden. Der stabile Branch wird monatlich aktualisiert und entspricht den LTS-Releases von Yocto.
Updates werden Over-The-Air (OTA) mit dem Mender-Toolset bereitgestellt und atomar durch vollstĂ€ndigen Austausch des gesamten Systems installiert. Auf dem Speichermedium werden zwei identische Root-Partitionen erstellt â eine aktive und eine passive. Das neue Update wird in der passiven Partition installiert, ohne die FunktionalitĂ€t der aktiven zu beeintrĂ€chtigen. Nach einem Neustart tauschen die Partitionen ihre PlĂ€tze â die Partition mit dem neuen Update wird aktiv, wĂ€hrend die zuvor aktive Partition in den passiven Modus versetzt wird und auf die Installation des nĂ€chsten Updates wartet. Wenn nach dem Update etwas schiefgeht, wird auf die vorherige Systemversion zurĂŒckgesetzt.
Zur Erstellung von Systemabbildern wird das Toolset BitBake eingesetzt, wĂ€hrend kas fĂŒr die Erstellung von Konfigurationen und die GewĂ€hrleistung reproduzierbarer Builds verwendet wird. Builds, Updates, Berichte ĂŒber SicherheitsanfĂ€lligkeiten und SBOM-Metadaten (Software Bill of Materials) werden automatisch mit Hilfe von Continuous Integration und Continuous Deployment (CI/CD) erstellt und veröffentlicht. Die Build-Infrastruktur auf Basis von Moonforge kann sowohl lokal Servern, als auch in öffentlichen oder privaten Cloud-Umgebungen bereitgestellt werden.
Um die Transparenz und Vorhersehbarkeit der Prozesse zur Erstellung von Derivaten im Distributionspaket zu gewĂ€hrleisten, wird eine strikte Trennung zwischen Upstream- und Downstream-Komponenten angewendet, die es Entwicklern ermöglicht, bei Bedarf zusĂ€tzliche FunktionalitĂ€ten ĂŒber die Basiskomponenten hinweg hinzuzufĂŒgen. Die Konfiguration wird in einer deklarativen Darstellung unter Verwendung des YAML-Formats festgelegt und umfasst Bereiche wie das Anbinden externer Repositories, die Aktivierung von Yocto-Modulen, das Management von AbhĂ€ngigkeiten zwischen den Distributionskomponenten, das Anwenden zusĂ€tzlicher Patches und das Ăndern der standardmĂ€Ăigen Systemkonfigurationen.
Quelle: opennet.ru
