Linux è diventata un’utilità affidabile per la creazione di sistemi operativi per sistemi embedded. Tuttavia, la curva di apprendimento per le utilità di sviluppo integrate può essere piuttosto impegnativa. Molte persone che usano questi strumenti complessi hanno passato molto tempo a comprenderli e padroneggiarli, e Yocto non è diverso. Con esso, puoi sviluppare una distribuzione Linux minima personalizzata per il tuo progetto di sistema incorporato.

Questo post ti fornirà una guida passo passo su come iniziare con Yocto per creare una distribuzione Linux minima.

Il progetto Yocto

Yocto è un progetto collaborativo opensource volto alla creazione di strumenti, modelli e processi necessari per sviluppare sistemi personalizzati basati su Linux per sistemi embedded nonostante l’architettura hardware sottostante. Yocto è stato lanciato nel marzo 2011 come collaborazione di 22 organizzazioni, tra cui OpenEmbedded, che funge da sistema di compilazione.

L’output della build del progetto Yocto consiste di tre componenti principali:

  • Binari di runtime di destinazione: Contiene tutti i file ausiliari necessari per distribuire Linux sul sistema di destinazione. Altri file includono il bootloader, il kernel, i moduli del kernel, l’immagine del filesystem di root.
  • Feed pacchetto: Si riferisce ai pacchetti software necessari per il sistema. È inoltre possibile selezionare il gestore di pacchetti necessario per il sistema: deb, dnf, ipk, ecc. È possibile includere tali pacchetti nei binari di runtime di destinazione o aggiungerli successivamente al sistema già distribuito.
  • Target SDK: Queste sono le librerie e i file di intestazione che mostrano il sistema installato sulla destinazione. Sono utilizzati principalmente dagli sviluppatori di app per garantire che colleghino le librerie giuste secondo il sistema.

Perché non usiamo un Distro esistente?

Inizialmente, i sistemi embedded utilizzavano distribuzioni standard e cercavano di personalizzarle per soddisfare le loro esigenze. Ciò includeva la rimozione di pacchetti non necessari per l’ottimizzazione dello spazio di archiviazione e il miglioramento della sicurezza. Avere un software guasto può rendere un sistema vulnerabile a vari vettori di attacco. Anche con questi vantaggi, l’utilizzo delle distribuzioni esistenti poneva diverse sfide.

Uno è che l’intero processo di rimozione dei pacchetti non è stato facile. La rimozione di alcuni pacchetti potrebbe interrompere le dipendenze detenute da vari altri pacchetti che potrebbero esserti utili. Inoltre, alcuni pacchetti sono stati integrati con il processo di avvio e runtime, rendendo noiosa la loro rimozione.

Pertanto, la distribuzione esistente spesso portava a ritardi inutili o ad avere un sistema che non soddisfaceva tutti gli standard richiesti.

Cominciamo.

Creare la tua distro Linux usando Yocto

Passaggio 1: requisiti hardware e sistema operativo

  • Minimo 4 GB di RAM (più è alto, meglio è)
  • Ultimo sistema operativo Ubuntu (20.04 LTS) o qualsiasi altro sistema operativo Linux:
    • Fedora
    • openSUSE
    • CentOS
    • Debian
  • Minimo 100 GB di spazio libero su disco rigido (una dimensione maggiore garantirà prestazioni migliori). Yocto può richiedere molte risorse, a seconda del prodotto finale di destinazione.

Se sei un utente macOS o Windows, utilizza un software di virtualizzazione come VMware o Virtualbox per eseguire una distribuzione Linux. In alternativa, puoi optare per un multiboot.

Passaggio 2: configura l’host

Lasciate prima installare le dipendenze richieste nel nostro sistema host. Per questo post, sto usando la distribuzione di Ubuntu. Se stai eseguendo un’altra distribuzione, consulta la guida di avvio rapido di Yocto Project e guarda quali dipendenze installare.

Avvia il Terminale ed esegui i comandi seguenti:

sudo apt update
sudo apt-get install wget git-core unzip make gcc g++ build-essential subversion sed autoconf automake texi2html texinfo coreutils diffstat python-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-dev libglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawk fop

Passaggio 3: clona lo Yocto Poky

Con le dipendenze installate, possiamo procedere al download di Yocto. Cloneremo il repository Yocto dal sito web del progetto Yocto. Esegui il comando seguente, che scaricherà l’ultima versione (il ramo “sumo”). Creeremo una directory nella cartella Home per costruire il nostro progetto Yocto per facilità di accesso e coerenza.

mkdir ~/yocto
mkdir ~/yocto/Project-One/
cd ~/Yocto/Project-One/
git clone -b sumo git://git.yoctoproject.org/poky.git

Clone Yocto
Clone Yocto

Se ricevi un errore del tipo “comando git non trovato “, ciò significa che non hai git installato nel tuo sistema. Esegui il comando seguente per installarlo.

sudo apt install git

Passaggio 4: inizializza l’ambiente costruito.

Per iniziare con Yocto, dobbiamo inizializzare l ‘”ambiente di compilazione”. Esegui i comandi seguenti. Il primo cambierà la directory nella cartella che abbiamo appena clonato. Il secondo comando inizializzerà l ‘”ambiente di compilazione”.

cd ~/Yocto/Project-One/poky
source oe-init-build-env build

Una volta completata l’inizializzazione, avremo una directory di build e un file di configurazione. La directory build è dove si verifica tutta la costruzione del sistema e ospita i file di immagini al termine del processo. In realtà, dopo l’inizializzazione, il terminale punterà automaticamente alla cartella build. Puoi vederlo nell’immagine sopra.

Passaggio 5: configurazione

Quando esegui un comando ls nella directory / build, vedrai una cartella / conf che contiene tutti i nostri file di configurazione. Accedi a questa cartella con il comando seguente:

$ cd ~/Yocto/Project-One/poky/build/conf/
$ ls

file di configurazione
file di configurazione

Eseguendo il comando ls nella cartella conf, dovresti vedere il file local.conf. Questo file specifica i dettagli della macchina di destinazione e l’SDK per l’architettura di destinazione desiderata.

Apri questo file per la modifica con il comando seguente:

$ sudo nano local.conf

Dall’immagine seguente, la macchina di compilazione di destinazione è “qemux86-64”.

Macchina di destinazione
Macchina di destinazione

Ora, procedi per rimuovere il commento dalle seguenti righe, come mostrato nell’immagine sotto. (Per decommentare, si intende -rimuovere il segno “#”)

DL_DIR ?= "${TOPDIR}/downloads"
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
TMPDIR ?= "${TOPDIR}/tmp"
PACKAGE_CLASSES ?= "package_rpm"
SDKMACHINE ?= "i686"
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"

rimuovere il commento dai parametri
rimuovere il commento dai parametri

Prima di continuare il processo di compilazione, aggiungi le seguenti righe alla fine del file “local.conf”.

BB_NUMBER_THREADS = "X"
PARALLEL_MAKE = "-j X"

Sostituire “X” con il doppio del numero di processori / CPU nel computer. Pertanto, se si dispone di quattro processori, si avranno dichiarazioni come queste: BB_NUMBER_THREADS = “8” PARALLEL_MAKE = “-j 8”

Aggiungi configurazioni
Aggiungi configurazioni

Per visualizzare il numero di CPU nel tuo computer, esegui il comando seguente:

lscpu

Passaggio 5: compilazione e processo di costruzione

Per iniziare a costruire l’immagine, esegui il comando seguente nella tua directory / build.

bitbake core-image-sato

Crea una distribuzione Linux personalizzata
Crea una distribuzione Linux personalizzata

Ciò inizierà a scaricare e compilare i pacchetti per il sistema di destinazione. Per favore, non eseguire il comando bitbake sopra con i privilegi di root in quanto genererà un errore. Per la prima creazione, il processo può richiedere diverse ore (anche più di 2). A volte bitbake potrebbe incorrere in un errore. Niente panico; eseguire nuovamente il comando precedente. L’errore potrebbe essere dovuto a un particolare sito Web che non funziona o a una risorsa mancante.

Le immagini binarie risultanti sono archiviate nella directory / build in poky / build / tmp / deploy / images / qemux86.

Conclusione

Sebbene Yocto possa essere abbastanza difficile da padroneggiare in una sola seduta, è un’ottima utility per iniziare a creare una distribuzione Linux personalizzata per il tuo progetto. Spero che questo post ti abbia fornito una procedura dettagliata su come iniziare con l’intero processo di creazione di una distribuzione Linux personalizzata.

Esegui l'accesso per Commentare