GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare la tua distribuzione Linux usando Yocto

Linux è diventato 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 utilizzano questi strumenti complessi hanno trascorso molto tempo a capirli e padroneggiarli e Yocto non è diverso. Con esso, puoi sviluppare una distribuzione Linux minima personalizzata per il tuo progetto di sistema embedded.

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 a creare 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 una collaborazione di 22 organizzazioni, tra cui OpenEmbedded, che funge da sistema di compilazione.

L'output della build del progetto Yocto è costituito da tre componenti principali:

  • Binari di runtime di destinazione: Questo 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 del pacchetto: Questo si riferisce ai pacchetti software necessari per il tuo sistema. Puoi anche selezionare il gestore di pacchetti di cui hai bisogno per il tuo sistema:deb, dnf, ipk, ecc. Puoi includere tali pacchetti nei binari di runtime di destinazione o aggiungerli in un secondo momento al sistema già distribuito.
  • SDK di destinazione: Queste sono le librerie e i file di intestazione che mostrano il sistema installato sulla destinazione. Sono utilizzati principalmente dagli sviluppatori di app per assicurarsi che colleghino le librerie giuste secondo il sistema.

Perché non utilizziamo una distribuzione esistente?

Inizialmente, i sistemi embedded utilizzavano distribuzioni standard e cercavano di personalizzarle in base alle proprie esigenze. Ciò includeva la rimozione dei pacchetti non necessari per l'ottimizzazione dello storage e il miglioramento della sicurezza. Avere software morto può rendere un sistema vulnerabile a vari vettori di attacco. Anche con questi vantaggi, l'utilizzo della distribuzione esistente poneva diverse sfide.

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

Pertanto, la distribuzione esistente spesso comportava inutili ritardi o un sistema che non soddisfaceva tutti gli standard richiesti.

Cominciamo.

Creare la tua distribuzione Linux usando Yocto

Fase 1:requisiti hardware e sistema operativo

  • Minimo di 4 GB di RAM (più è alto, meglio è)
  • L'ultimo sistema operativo Ubuntu (20.04 LTS) o qualsiasi altro sistema operativo Linux:
    • Fedora
    • openSUSE
    • CentOS
    • Debian
  • Minimo di 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, usa un software di virtualizzazione come VMware o Virtualbox per eseguire una distribuzione Linux. In alternativa, puoi optare per un multiboot.

Fase 2:configura l'host

Installiamo prima le dipendenze richieste nel nostro sistema host. Per questo post, sto usando la distribuzione 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

Fase 3:clona lo Yocto Poky

Con le dipendenze installate, possiamo procedere al download di Yocto. Cloneremo il repository Yocto dal sito web di Yocto Project. 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

Se ricevi un messaggio di errore come "comando git non trovato" ciò significa che non hai git installato nel tuo sistema. Esegui il comando seguente per installarlo.

sudo apt install git

Fase 4:inizializza l'ambiente costruito.

Per iniziare con Yocto, è necessario 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 creazione.

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 è il punto in cui si verifica tutta la creazione 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.

Fase 5:configurazione

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

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

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".

Ora, procedi a decommentare le seguenti righe, come mostrato nell'immagine qui sotto. (Per decommentare, intendiamo -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"

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"

Sostituisci 'X' con il doppio del numero di processori/CPU nel tuo computer. Pertanto, se hai quattro processori, avresti istruzioni come queste:BB_NUMBER_THREADS =“8” PARALLEL_MAKE =“-j 8”

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

lscpu

Fase 5:compilazione e processo di creazione

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

bitbake core-image-sato

Ciò avvierà il download e la compilazione dei pacchetti per il sistema di destinazione. Per favore, non eseguire il comando bitbake sopra con i privilegi di root poiché genererà un errore. Per la prima volta, il processo può richiedere diverse ore (anche più di 2). A volte bitbake potrebbe incorrere in un errore. Niente panico; eseguire nuovamente il comando sopra. L'errore potrebbe essere dovuto a un determinato 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 piuttosto difficile da padroneggiare in una sola seduta, è un'ottima utilità 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.


Linux
  1. Crea il tuo server di streaming video con Linux

  2. Come creare un file in Linux utilizzando Terminale/riga di comando

  3. Come eseguire il backup dell'intero sistema Linux utilizzando Rsync

  4. Come creare un volume fisico in Linux usando LVM

  5. Come creare un utente Linux usando Ansible

Come creare il 100% del carico della CPU su un sistema Linux

Come aggiornare il sistema Linux openSUSE

Come creare il tuo server VPN IPsec in Linux

Come controllare il carico del server nel sistema Linux

Come creare la tua VPN:istruzioni dettagliate

Come creare facilmente la tua distribuzione Linux?