Compania Igalia, cunoscută pentru participarea sa în dezvoltarea unor proiecte open source precum GNOME, GTK, WebKitGTK, Epiphany, Maemo, GStreamer, Wine, Mesa și freedesktop.org, a prezentat proiectul Moonforge, care simplifică crearea și întreținerea distribuțiilor Linux proprii pentru diverse dispozitive și sisteme încorporate. Conținutul distribuției este format pe baza instrumentarului de construire și a metadatelor pachetelor provenite din proiectele OpenEmbedded și Yocto. Contribuțiile specifice proiectului sunt distribuite sub licența MIT.
Moonforge oferă dezvoltatorilor și integratorilor de sisteme un cadru, un set de fișiere de configurare și o colecție de componente pentru formarea imaginilor sistemice care pot fi actualizate atomic, bazate pe utilizarea unor tehnologii deja verificate și răspândite în industrie, cum ar fi Yocto, BitBake și Kas. Pentru imaginile create, se suportă un proces simplificat de instalare a actualizărilor și se asigură un ciclu de întreținere îndelungat. Obiectivul principal al proiectului este de a oferi dezvoltatorilor de sisteme încorporate un instrumentar convenabil, care să le permită să se concentreze pe dezvoltarea funcționalității specifice produsului lor, fără a pierde timp cu sarcinile legate de formarea și întreținerea distribuției.
Imaginea de sistem este compusă dintr-un set de module Yocto gata de utilizare. Fiecare modul este responsabil pentru o anumită capacitate sau suport pentru o platformă hardware țintă specifică. De exemplu, sunt disponibile module pentru suportul Docker, QEMU sau Podman, gestionarea actualizărilor prin RAUC, crearea unei interfețe grafice bazate pe compozit. server Weston, lansarea unei interfețe browser pe baza Webkit pentru chioșcuri internet și compilarea pentru plăci Raspberry Pi 4 și 5.
Se suportă trei canale de distribuire a lansărilor: stable (ramura stabilă LTS), next (ramura în care se dezvoltă următoarea lansare LTS) și main (ramura experimentală, în care se desfășoară dezvoltarea). Fiecare ramură este legată de propria versiune a setului de componente Yocto. Ramura stabilă se actualizează o dată pe lună și corespunde lansărilor LTS ale Yocto.
Actualizările sunt furnizate în mod OTA (Over-The-Air) folosind instrumentele Mender și sunt instalate atomic prin înlocuirea întregului sistem. Pe unitate sunt create două partiții rădăcină identice - activă și pasivă. Noua actualizare este instalată în partiția pasivă, fără a afecta funcționarea celei active. După repornire, partițiile își schimbă locul - partiția cu noua actualizare devine activă, iar vechea partiție activă este trecută în modul pasiv și așteaptă instalarea următoarei actualizări. Dacă după actualizare ceva nu merge bine, sistemul poate fi revertit la versiunea anterioară.
Pentru crearea imaginilor de sistem este folosit instrumentul BitBake, iar pentru generarea configurației și asigurarea unor build-uri reproducibile - kas. Build-urile, actualizările, rapoartele de vulnerabilitate și metadatele SBOM (Software Bill of Materials) sunt adunate și publicate automat folosind sisteme de integrare continuă și livrare continuă (CI/CD). Infrastructura de build bazată pe Moonforge poate fi desfășurată atât pe locale servere, cât și în medii de cloud public sau privat.
Pentru transparența și previzibilitatea proceselor de creare a produselor derivate în distribuție se aplică o separare strictă între componentele upstream și downstream, permițând dezvoltatorilor să adauge funcționalitate suplimentară pe deasupra bazei de cod, dacă este necesar. Configurația este definită într-o prezentare declarativă, folosind formatul YAML, și acoperă domenii precum conectarea la repository-uri externe, activarea modulelor Yocto, gestionarea dependențelor între componentele distribuției, aplicarea de patch-uri suplimentare și modificarea setărilor sistemului implicite.
Sursa: opennet.ro
