L'azienda Igalia, conosciuta per il suo coinvolgimento nello sviluppo di progetti open source come GNOME, GTK, WebKitGTK, Epiphany, Maemo, GStreamer, Wine, Mesa e freedesktop.org, ha presentato il progetto Moonforge, che semplifica la creazione e la manutenzione di distribuzioni Linux personalizzate per vari dispositivi e sistemi embedded. La struttura della distribuzione viene formata sulla base degli strumenti di build e dei metadati dei pacchetti dei progetti OpenEmbedded e Yocto. I risultati specifici del progetto sono distribuiti con licenza MIT.
Moonforge offre agli sviluppatori e agli integratori di sistemi un framework, un insieme di file di configurazione e una collezione di componenti per la creazione di immagini di sistema aggiornabili in modo atomico, basate su tecnologie già collaudate e diffuse nel settore, come yocto, bitbake e kas. Per le immagini generate è supportato un processo semplificato di installazione degli aggiornamenti e viene garantito un lungo ciclo di supporto. L'obiettivo principale del progetto è fornire agli sviluppatori di sistemi embedded strumenti comodi che consentano di concentrarsi sullo sviluppo delle funzionalità specifiche del loro prodotto, senza perdere tempo in attività legate alla creazione e alla manutenzione della distribuzione.
L'immagine di sistema è composta da un insieme di moduli Yocto pronti all'uso. Ogni modulo è responsabile di una specifica funzionalità o del supporto di una piattaforma hardware target. Ad esempio, sono disponibili moduli per il supporto di Docker, QEMU o Podman, gestione degli aggiornamenti tramite RAUC, e creazione di interfacce grafiche basate su compositing. server Weston, avvio di un'interfaccia browser basata su Webkit per chioschi internet e build per schede Raspberry Pi 4 e 5.
Sono supportati tre canali di distribuzione delle release: stable (ramo LTS stabile), next (ramo in cui si sviluppa la prossima release LTS) e main (ramo sperimentale in sviluppo). Ogni ramo è legato a una specifica versione del set di componenti Yocto. Il ramo stabile viene aggiornato mensilmente e corrisponde alle release LTS di Yocto.
Gli aggiornamenti vengono forniti in modalità OTA (Over-The-Air) utilizzando gli strumenti di Mender e vengono installati in modo atomico sostituendo l'intero sistema. Sul dispositivo di archiviazione vengono creati due file system radice identici — uno attivo e uno passivo. Il nuovo aggiornamento viene installato nella partizione passiva, senza influenzare il funzionamento di quella attiva. Dopo il riavvio, le partizioni vengono scambiate: la partizione con il nuovo aggiornamento diventa attiva, mentre la precedente partizione attiva viene messa in modalità passiva in attesa del prossimo aggiornamento. Se dopo l'aggiornamento si verifica un problema, è possibile tornare alla versione precedente del sistema.
Per creare le immagini di sistema viene utilizzato lo strumento BitBake, mentre per la creazione delle configurazioni e per garantire build riproducibili viene utilizzato kas. Le build, gli aggiornamenti, i report sulle vulnerabilità e i metadati SBOM (Software Bill of Materials) vengono automaticamente raccolti e pubblicati utilizzando sistemi di integrazione continua e distribuzione continua (CI/CD). L'infrastruttura di build basata su Moonforge può essere implementata sia in ambienti cloud pubblici o privati che locali. server, così come in ambienti cloud pubblici o privati.
Per garantire trasparenza e prevedibilità nei processi di creazione di prodotti derivati, nel sistema viene applicata una netta separazione tra componenti upstream e downstream, consentendo agli sviluppatori di aggiungere funzionalità aggiuntive sopra il core di base, se necessario. La configurazione è definita in un formato dichiarativo, utilizzando YAML, e copre aree come il collegamento a repository esterni, attivazione di moduli Yocto, gestione delle dipendenze tra i componenti della distribuzione, applicazione di patch aggiuntive e modifica delle impostazioni di sistema predefinite.
Fonte: opennet.ru
