Yocto, cosa è?

Cosa è Yocto

Il Progetto Yocto è un framework open source supportato dalla Linux Foundation, progettato per aiutare gli sviluppatori a creare distribuzioni Linux personalizzate per dispositivi embedded. La sua flessibilità e la sua modularità lo rendono una scelta ideale per progetti che vanno da sistemi embedded leggeri e minimali fino a soluzioni complesse e avanzate.

Yocto gode di una community collaborativa, focalizzata sulla produzione di software open source, che permette agli sviluppatori e ai sistemisti di trovare soluzioni di partenza da poter modificare, informazioni introduttive così come dettagliate e, non da ultimo, un’ampia assistenza nella creazione di distribuzioni Linux embedded customizzate e ottimizzate.

Un Framework Versatile Per La Creazione Di Sistemi Embedded Personalizzati

La necessità di dispositivi sempre più specializzati e personalizzati spinge il mondo dell’embedded computing a una costante evoluzione. In questo contesto, il Progetto Yocto emerge come un framework versatile, progettato per semplificare il processo di sviluppo di sistemi embedded custom. Con una comunità attiva e un approccio flessibile, il Progetto Yocto offre agli sviluppatori la libertà di creare soluzioni personalizzate per una vasta gamma di piattaforme embedded.

In AIknow Srl, occupandoci di IoT Industriale (IIoT), ci troviamo di fronte alla necessità di poter creare e configurare sistemi embedded custom. È così che siamo venuti a contatto con Yocto, che vogliamo presentare in questo articolo.

Sistemi Embedded

Un sistema embedded è un sistema elettronico basato su un microprocessore progettato appositamente peruno specifico utilizzo.

Qualche esempio di sistema embedded tratto da Wikipedia: computer dedicati all’automazione industriale e il controllo di processo;

  • sportelli Bancomat e apparecchi POS;
  • sistemi di automazione casalinghi: termostati, condizionatori, sistemi di controllo della sicurezza;
  • distributori automatici, distributori di carburante, distributori di biglietti;
  • elettrodomestici: forni a microonde, lavatrici, apparecchi televisivi, lettori o scrittori di DVD, impianti Hi- fi o home video;
  • apparecchiature biomediche: ecografi, scanner medici per risonanza magnetica;
  • equipaggiamenti medici.

Come emerge dagli esempi riportati, i sistemi embedded sono molto diffusi e costituiscono componenti ormai fondamentali per molte attività. Una distribuzione Linux embedded è una distribuzione di Linux pensata per un sistema embedded. Configurare e mantenere un sistema operativo (sia in generale che nello specifico embedded) è un compito
complesso: Linux embedded permette di sfruttare la versatilità e la stabilità del kernel Linux adattandola ad uno specifico caso d’uso.

Ed è a partire da qui che Yocto inizia a dimostrare le sue potenzialità.

Principali Caratteristiche

  1. Layered Architecture: Il Progetto Yocto adotta un’architettura a strati che consente agli sviluppatori di aggiungere e personalizzare facilmente componenti del sistema. Questi strati (i layer) possono includere kernel, bootloader, applicazioni e librerie, consentendo una personalizzazione dettagliata del sistema operativo embedded.
  2. Cross-Compiling: Utilizzando il concetto di cross-compiling, il Progetto Yocto consente agli sviluppatori di compilare il software su una piattaforma di sviluppo diversa da quella destinata per l’esecuzione del sistema embedded. Questo approccio accelera il processo di sviluppo e consente di ottimizzare le risorse del sistema target.
  3. Metadata e Ricette: Il Progetto Yocto utilizza i concetti di metadata e ricette per definire il contenuto del sistema. Le ricette descrivono come compilare e integrare singoli pacchetti software nel sistema, mentre i metadati consentono di organizzare queste ricette nei vari layer e di gestire le dipendenze tra di esse.
  4. BitBake Build System: Il cuore del Progetto Yocto è il sistema di compilazione BitBake. BitBake è un tool che permette di definire e gestire ricette, ovvero istruzioni dettagliate su come compilare, configurare e installare pacchetti software all’interno del sistema embedded. Questo sistema di build offre una notevole flessibilità e controllo sul processo di creazione della distribuzione.
  5. Community e Supporto: Il Progetto Yocto è attorniato da un’attiva comunità di sviluppatori e utenti che condividono conoscenze e risorse. La documentazione e varie risorse online come questa wiki facilitano l’apprendimento e l’utilizzo del framework. Inoltre, la comunità fornisce supporto attraverso forum di discussione e canali di comunicazione online.

Vantaggi Di Yocto

Yocto automatizza il processo di build del sistema e semplifica la customizzazione (aggiunta, rimozione, modifica) di pacchetti nella distribuzione Linux. Yocto è lo strumento di costruzione più popolare e utilizzato nel settore dei sistemi embedded. Yocto permette di facilitare la manutenzione mediante il modello basato su layer e ricette. È disponibile moltissimo materiale per l’apprendimento e la formazione su Yocto.

Componenti

Il Progetto Yocto è costituito da una raccolta di build framework (build system), tool e metadati. I suoi componenti principali sono:

Poky funge da distribuzione di riferimento all’interno del Progetto Yocto. Poky fornisce un’ampia gamma di ricette, configurazioni di build e script di supporto. Poky fa ampio uso del sistema di build BitBake e del framework OpenEmbedded Core.

BitBake è il motore di build centrale che consente la creazione di pacchetti software e immagini di sistema, mentre OpenEmbedded Core offre una raccolta di ricette e componenti chiave per la costruzione di distribuzioni embedded.

Gli sviluppatori possono configurare Poky per soddisfare specifiche esigenze, selezionando i componenti del sistema, i layer e le opzioni di build desiderati. Ciò consente una grande flessibilità nella creazione di distribuzioni embedded personalizzate. L’immagine seguente rappresenta le intersezioni tra Poky e OpenEmbedded nel contesto del Progetto Yocto.

Come Funziona

Il workflow tipico è una specificazione e personalizzazione della seguente guida.

  1. Per iniziare, gli sviluppatori specificano l’architettura, le policy, le patch e i dettagli di configurazione.
  2. Il sistema di compilazione quindi recupera e scarica il codice sorgente da dove specificato. Il progetto supporta metodi standard come tarball o sistemi di repository di codice sorgente come Git.
  3. Una volta scaricati, i sorgenti vengono estratti in un workspace locale dove vengono applicate le patch e verranno eseguiti i common step per la configurazione e la compilazione del software.
  4. Il software viene quindi installato in un’area di staging temporanea in cui verrà utilizzato il formato del pacchetto binario selezionato (deb, rpm o ipk) per eseguire il rollup del software.
  5. Diversi controlli di qualità e integrità vengono eseguiti durante l’intero processo di creazione.
  6. Dopo aver creato i file binari, viene generato un binary package feed che viene quindi utilizzato per creare l’immagine finale del file system root.
  7. Viene generata l’immagine del file system.

Dall’immagine che segue emerge la complessità del workflow nell’architettura di OpenEmbedded.

yocto architettura

Yocto Toaster

Yocto Toaster è un’interfaccia web basata su browser che fornisce un frontend visuale per il framework di build Yocto. Essenzialmente, Toaster è uno strumento WUI (Web User Interface) di gestione della build che facilita la configurazione e il monitoraggio dei processi di build Yocto Project.

  1. Interfaccia Utente Web: Toaster offre un’interfaccia utente web che consente agli utenti di interagire con il processo di build Yocto in modo visuale e user-friendly.
  2. Monitoraggio Build: Toaster consente di monitorare lo stato delle build in corso e visualizzare i dettagli delle build passate. Questo facilita il tracciamento dei progressi, l’individuazione di eventuali problemi e la comprensione delle dipendenze tra i componenti del sistema.
  3. Configurazione del Progetto: Toaster può aiutare a gestire i layer, le ricette e le impostazioni del progetto.
  4. Visualizzazione Dipendenze: Toaster consente di visualizzare in modo chiaro le dipendenze tra i pacchetti e le componenti del sistema, facilitando la comprensione delle relazioni tra i vari elementi del progetto.
  5. Integrazione con BitBake: Toaster è integrato con il sistema di build BitBake, il cuore del framework Yocto. Ciò significa che è possibile utilizzare Toaster insieme a BitBake per gestire in modo più efficace il processo di creazione di immagini e pacchetti.

La documentazione di Toaster è reperibile online qui.

La figura seguente presenta l’aspetto dell’interfaccia di Toaster.

Yocto Project Virtual Summit 2023.11

AIknow ha partecipato allo Yocto Project Summit 2023.11, puoi trovare più dettagli in questo articolo.

 

Conclusioni

Il Progetto Yocto offre un approccio innovativo e flessibile allo sviluppo di sistemi embedded, consentendo agli sviluppatori di creare distribuzioni Linux personalizzate per soddisfare esigenze specifiche. Con la sua architettura a strati, il supporto al cross-compiling e il potente sistema di build BitBake, il Progetto Yocto si posiziona come uno degli strumenti principali per gli sviluppatori embedded che cercano di ottenere il massimo controllo e la massima personalizzazione nei loro progetti.

Riferimenti 

  1. Sistema embedded: https://it.wikipedia.org/wiki/Sistema_embedded
  2. Linux embedded: https://it.wikipedia.org/wiki/Embedded_Linux
  3. Yocto Project webpage: https://docs.yoctoproject.org/
  4. Yocto Project Wiki: https://wiki.yoctoproject.org/wiki/Main_Page
  5. Poky: https://docs.yoctoproject.org/ref-manual/terms.html#term-Poky 
  6. OpenEmbedded: https://www.openembedded.org/wiki/Main_Page
  7. Bitbake: https://docs.yoctoproject.org/bitbake/
  8. Toaster: https://wiki.yoctoproject.org/wiki/Toaster
  9. Yocto Project Summit 2023.11 webpage: https://www.yoctoproject.org/event/yocto-project-summit 2023-11/
  10. Yocto Project Summit 2023.11, programma: https://summit.yoctoproject.org/yocto-project-summit 2023-11/schedule/