Společnost Igalia, známá svým podílem na vývoji svobodných projektů jako GNOME, GTK, WebKitGTK, Epiphany, Maemo, GStreamer, Wine, Mesa a freedesktop.org, představila projekt Moonforge, který usnadňuje vytváření a údržbu vlastních Linuxových distribucí pro různá zařízení a vestavěné systémy. Obsah distribuce je tvořen na základě stavebních nástrojů a metadat balíků z projektů OpenEmbedded a Yocto. Specifické pro projekt výstupy jsou distribuovány pod licencí MIT.
Moonforge poskytuje vývojářům a systémovým integrátorům rámec, soubor konfiguračních souborů a sbírku komponentů pro tvorbu atomárně aktualizovatelných systémových obrazů, které využívají už osvědčené a rozšířené technologie v průmyslu, jako jsou yocto, bitbake a kas. U vytvořených obrazů je podporován zjednodušený proces instalace aktualizací a zajištěn dlouhý cyklus údržby. Hlavním cílem projektu je poskytnout vývojářům vestavěných systémů pohodlné nástroje, které jim umožní soustředit se na rozvoj specifické funkcionality jejich produktu, a neplýtvat časem na úkoly spojené se sestavováním a údržbou distribucí.
Systémový obraz je sestavován z jednotlivých připravených modulů Yocto. Každý modul odpovídá za určitou funkčnost nebo podporu konkrétní cílové hardwarové platformy. Například jsou k dispozici moduly pro podporu Dockeru, QEMU nebo Podman, správu aktualizací prostřednictvím RAUC, a vytváření grafického rozhraní na bázi kompozitního serveru Westonu, spouštění webového rozhraní na bázi Webkitu pro internetové kiosky a sestavení pro desky Raspberry Pi 4 a 5.
Podporují se tři kanály distribuce releasů: stable (stabilní LTS větev), next (větev, ve které se vyvíjí další LTS release) a main (experimentální větev, ve které se provádí vývoj). Každá větev je vázána na svou verzi sady komponentů Yocto. Stabilní větev se aktualizuje jednou měsíčně a odpovídá LTS releasům Yocto.
Aktualizace jsou doručovány pomocí OTA (Over-The-Air) pomocí nástrojů Mender a instalují se atomicky nahrazením celého systému. Na úložném zařízení jsou vytvořeny dva identické kořenové oddíly - aktivní a pasivní. Nová aktualizace se instaluje do pasivního oddílu, aniž by to mělo vliv na provoz aktivního. Po restartu se oddíly vymění - oddíl s novou aktualizací se stává aktivním, zatímco předchozí aktivní oddíl se převede do pasivního režimu a čeká na instalaci další aktualizace. Pokud po aktualizaci dojde k problémům, provedeme zpětný návrat k předchozí verzi systému.
Pro vytváření systémových obrazů se používá nástroj BitBake, zatímco pro konfiguraci a zajištění reprodukovatelných sestavení se používá kas. Sestavení, aktualizace, zprávy o zranitelnostech a metadata SBOM (Software Bill of Materials) se automaticky shromažďují a publikují pomocí systémů kontinuální integrace a kontinuálního nasazení (CI/CD). Sestavovací infrastruktura na bázi Moonforge může být nasazena jak na lokálních serverech, tak v veřejných nebo soukromých cloudových prostředích.
Pro transparentnost a předvídatelnost procesů vytváření odvozených produktů se v distribuci používá přísné oddělení mezi upstream a downstream komponenty, což vývojářům umožňuje v případě potřeby přidávat dodatečné funkce nad základní funkcionalitu. Konfigurace je definována v deklarativním formátu pomocí YAML a zahrnuje oblasti jako připojení externích repozitářů, aktivaci modulů Yocto, správu závislostí mezi komponentami distribuce, aplikaci dodatečných patchů a změnu výchozích systémových nastavení.
Zdroj: opennet.ru
