Firma Igalia, znana ze swojego udziału w rozwoju takich projektów jak GNOME, GTK, WebKitGTK, Epiphany, Maemo, GStreamer, Wine, Mesa oraz freedesktop.org, zaprezentowała projekt Moonforge, który upraszcza tworzenie i utrzymanie własnych dystrybucji Linux dla różnych urządzeń i systemów wbudowanych. Zawartość dystrybucji jest tworzona na podstawie narzędzi budowlanych i metadanych pakietów z projektów OpenEmbedded i Yocto. Specyficzne dla projektu rozwiązania są udostępniane na licencji MIT.
Moonforge dostarcza deweloperom i integratorom systemów szkielet, zestaw plików konfiguracyjnych oraz kolekcję komponentów do formowania atomowo aktualizowalnych systemowych obrazów, opartych na korzystaniu z już sprawdzonych i powszechnie stosowanych w branży technologii, takich jak yocto, bitbake i kas. Umożliwia to uproszczony proces instalacji aktualizacji oraz zapewnia długi cykl wsparcia. Podstawowym celem projektu jest dostarczenie deweloperom systemów wbudowanych wygodnych narzędzi, które pozwalają skupić się na rozwoju specyficznej funkcjonalności ich produktów, bez marnowania czasu na zadania związane z tworzeniem i utrzymywaniem dystrybucji.
Obraz systemowy jest składany z zestawu gotowych modułów Yocto. Każdy moduł odpowiada za konkretne funkcjonalności lub wsparcie dla określonej platformy sprzętowej. Na przykład dostępne są moduły do wsparcia Docker, QEMU lub Podman, zarządzania aktualizacjami za pomocą RAUC, oraz tworzenia interfejsu graficznego oparty na kompozycji. serwera Weston, uruchamiający przeglądarkowy interfejs oparty na Webkit dla kiosków internetowych oraz kompilacji dla platform Raspberry Pi 4 i 5.
Obsługiwane są trzy kanały dystrybucji wydań: stable (stabilna gałąź LTS), next (gałąź, w której rozwijana jest następna wersja LTS) oraz main (eksperymentalna gałąź, w której prowadzony jest rozwój). Każda gałąź jest powiązana z konkretną wersją zestawu komponentów Yocto. Stabilna gałąź aktualizowana jest raz w miesiącu i odpowiada wydaniom LTS Yocto.
Aktualizacje są dostarczane w trybie OTA (Over-The-Air) przy użyciu narzędzi Mender i instalowane atomowo poprzez całkowitą wymianę całego systemu. Na dysku tworzone są dwie identyczne partycje główne — aktywna i pasywna. Nowa aktualizacja jest instalowana w partycji pasywnej, nie wpływając na działanie partycji aktywnej. Po ponownym uruchomieniu partycje zamieniają się miejscami — partycja z nową aktualizacją staje się aktywna, a przeszła aktywna partycja przechodzi w tryb pasywny i czeka na instalację następnej aktualizacji. Jeśli po aktualizacji coś pójdzie nie tak, następuje rollback do poprzedniej wersji systemu.
Do tworzenia obrazów systemowych wykorzystuje się narzędzie BitBake, a do formułowania konfiguracji i zapewnienia powtarzalnych kompilacji — kas. Kompilacje, aktualizacje, raporty o podatnościach i metadane SBOM (Software Bill of Materials) są automatycznie zbierane i publikowane przy użyciu systemów ciągłej integracji i ciągłego wdrażania (CI/CD). Infrastruktura kompilacji oparta na Moonforge może być wdrażana zarówno w lokalnych serwerach, jak i w publicznych lub prywatnych chmurach.
Aby zapewnić przejrzystość i przewidywalność procesów tworzenia produktów pochodnych, w dystrybucji stosuje się surowe rozdzielenie między komponentami upstream i downstream, co pozwala deweloperom na dodawanie dodatkowej funkcjonalności ponad podstawowe zasady. Konfiguracja określona jest w deklaratywnej prezentacji, wykorzystując format YAML, i obejmuje obszary takie jak podłączenie zewnętrznych repozytoriów, aktywację modułów Yocto, zarządzanie zależnościami między komponentami dystrybucji, stosowanie dodatkowych poprawek oraz modyfikację domyślnych ustawień systemowych.
Źródło: opennet.ru
