introduzione a yocto...
TRANSCRIPT
Introduzione a Yocto Project
Stefano Cordibella
EDALab s.r.l. – Networked Embedded Systems
January 8, 2015
Stefano Cordibella Introduzione a Yocto Project 1/32
EDAlab s.r.l.
In breve...
• Attivi dal 2007 a Verona.
• 15+ collaboratori.
• Principali ambiti:
• applicazioni embedded,
• verifica formale,
• sensoristica wireless.
Stefano Cordibella Introduzione a Yocto Project 2/32
EDAlab s.r.l.
In breve...
• Attivi dal 2007 a Verona.
• 15+ collaboratori.
• Principali ambiti:
• applicazioni embedded,
• verifica formale,
• sensoristica wireless.
About me
• Qt
• Yocto Project
• Software integrator
• Father of 2
Stefano Cordibella Introduzione a Yocto Project 2/32
Outline
1 IntroduzioneLinux EmbeddedYocto ProjectPrincipali componenti
2 OpenEmbedded CoreStruttura delle directoryStruttura di un layer
Recipe
Image
Machine
Distro
3 BitBake
4 Qt5 in Yocto Project
Stefano Cordibella Introduzione a Yocto Project 3/32
Introduzione
1 IntroduzioneLinux EmbeddedYocto ProjectPrincipali componenti
2 OpenEmbedded CoreStruttura delle directoryStruttura di un layer
Recipe
Image
Machine
Distro
3 BitBake
4 Qt5 in Yocto Project
Stefano Cordibella Introduzione a Yocto Project 4/32
Introduzione Linux Embedded
1 IntroduzioneLinux EmbeddedYocto ProjectPrincipali componenti
2 OpenEmbedded CoreStruttura delle directoryStruttura di un layer
Recipe
Image
Machine
Distro
3 BitBake
4 Qt5 in Yocto Project
Stefano Cordibella Introduzione a Yocto Project 5/32
Introduzione Linux Embedded
Linux Embedded
Definizione
Sistemi operativi basati su kernel linuxutilizzati in ambito embedded.
Stefano Cordibella Introduzione a Yocto Project 6/32
Introduzione Linux Embedded
Linux Embedded
Definizione
Sistemi operativi basati su kernel linuxutilizzati in ambito embedded.
Vantaggi
• Sistema completo.
Stefano Cordibella Introduzione a Yocto Project 6/32
Introduzione Linux Embedded
Linux Embedded
Definizione
Sistemi operativi basati su kernel linuxutilizzati in ambito embedded.
Vantaggi
• Sistema completo.
• Adattabile alla mia piattaforma.
Stefano Cordibella Introduzione a Yocto Project 6/32
Introduzione Linux Embedded
Linux Embedded
Definizione
Sistemi operativi basati su kernel linuxutilizzati in ambito embedded.
Vantaggi
• Sistema completo.
• Adattabile alla mia piattaforma.
Svantaggi
• Gestire la complessita dei software.
Stefano Cordibella Introduzione a Yocto Project 6/32
Introduzione Linux Embedded
Linux Embedded
Definizione
Sistemi operativi basati su kernel linuxutilizzati in ambito embedded.
Vantaggi
• Sistema completo.
• Adattabile alla mia piattaforma.
Svantaggi
• Gestire la complessita dei software.
• Aggiornamento e mantenimento.
Stefano Cordibella Introduzione a Yocto Project 6/32
Introduzione Linux Embedded
Linux Embedded
Definizione
Sistemi operativi basati su kernel linuxutilizzati in ambito embedded.
Vantaggi
• Sistema completo.
• Adattabile alla mia piattaforma.
Svantaggi
• Gestire la complessita dei software.
• Aggiornamento e mantenimento.
• Molti strumenti per automatizzare iprocessi, spesso incompatibili.
Stefano Cordibella Introduzione a Yocto Project 6/32
Introduzione Yocto Project
1 IntroduzioneLinux EmbeddedYocto ProjectPrincipali componenti
2 OpenEmbedded CoreStruttura delle directoryStruttura di un layer
Recipe
Image
Machine
Distro
3 BitBake
4 Qt5 in Yocto Project
Stefano Cordibella Introduzione a Yocto Project 7/32
Introduzione Yocto Project
Yocto Project
Caratteristiche
Insieme di metadati e strumenti integrati per creare e gestire la propriadistribuzione linux embedded.
Stefano Cordibella Introduzione a Yocto Project 8/32
Introduzione Yocto Project
Yocto Project
Caratteristiche
Insieme di metadati e strumenti integrati per creare e gestire la propriadistribuzione linux embedded.
• Non e una distribuzione linux embedded.
Stefano Cordibella Introduzione a Yocto Project 8/32
Introduzione Yocto Project
Yocto Project
Caratteristiche
Insieme di metadati e strumenti integrati per creare e gestire la propriadistribuzione linux embedded.
• Non e una distribuzione linux embedded.
• E un insieme di strumenti opensource.
Stefano Cordibella Introduzione a Yocto Project 8/32
Introduzione Yocto Project
Yocto Project
Punti di forza
• Suite di strumenti integrati.
Stefano Cordibella Introduzione a Yocto Project 9/32
Introduzione Yocto Project
Yocto Project
Punti di forza
• Suite di strumenti integrati.
• Gestione del software tramite metadati.
Stefano Cordibella Introduzione a Yocto Project 9/32
Introduzione Yocto Project
Yocto Project
Punti di forza
• Suite di strumenti integrati.
• Gestione del software tramite metadati.
• Coinvolgimento di produttori Hw nel progetto.
Stefano Cordibella Introduzione a Yocto Project 9/32
Introduzione Yocto Project
Yocto Project
Punti di forza
• Suite di strumenti integrati.
• Gestione del software tramite metadati.
• Coinvolgimento di produttori Hw nel progetto.
• Community di sviluppatori.
Stefano Cordibella Introduzione a Yocto Project 9/32
Introduzione Yocto Project
Yocto Project
Punti di forza
• Suite di strumenti integrati.
• Gestione del software tramite metadati.
• Coinvolgimento di produttori Hw nel progetto.
• Community di sviluppatori.
Vantaggi
• Dedico piu tempo all’applicazione core del mio sistema.
Stefano Cordibella Introduzione a Yocto Project 9/32
Introduzione Yocto Project
Yocto Project
Punti di forza
• Suite di strumenti integrati.
• Gestione del software tramite metadati.
• Coinvolgimento di produttori Hw nel progetto.
• Community di sviluppatori.
Vantaggi
• Dedico piu tempo all’applicazione core del mio sistema.
• Nessun vincolo con un particolare produttore Hw/Sw.
Stefano Cordibella Introduzione a Yocto Project 9/32
Introduzione Principali componenti
1 IntroduzioneLinux EmbeddedYocto ProjectPrincipali componenti
2 OpenEmbedded CoreStruttura delle directoryStruttura di un layer
Recipe
Image
Machine
Distro
3 BitBake
4 Qt5 in Yocto Project
Stefano Cordibella Introduzione a Yocto Project 10/32
Introduzione Principali componenti
Principali componenti
Strumenti Core
• Poky: Yocto Project build system;
• BitBake: build engine, interprete deimetadati;
• OpenEmbedded Core: metadati per ipacchetti software;
Stefano Cordibella Introduzione a Yocto Project 11/32
Introduzione Principali componenti
Principali componenti
Strumenti Core
• Poky: Yocto Project build system;
• BitBake: build engine, interprete deimetadati;
• OpenEmbedded Core: metadati per ipacchetti software;
Utilities
• Hob: interfaccia grafica per BitBake;
• Eclipse Plugin: integrazione nell’IDE Eclipse;
• Autobuilder: strumento per l’automazione dei test.
Stefano Cordibella Introduzione a Yocto Project 11/32
OpenEmbedded Core
1 IntroduzioneLinux EmbeddedYocto ProjectPrincipali componenti
2 OpenEmbedded CoreStruttura delle directoryStruttura di un layer
Recipe
Image
Machine
Distro
3 BitBake
4 Qt5 in Yocto Project
Stefano Cordibella Introduzione a Yocto Project 12/32
OpenEmbedded Core
OpenEmbedded Core
Caratteristiche
• Organizza i metadati per la costruzione delle applicazioni in file dettirecipe.
Stefano Cordibella Introduzione a Yocto Project 13/32
OpenEmbedded Core
OpenEmbedded Core
Caratteristiche
• Organizza i metadati per la costruzione delle applicazioni in file dettirecipe.
• Ha una struttura modulare a livelli detti layer.
Stefano Cordibella Introduzione a Yocto Project 13/32
OpenEmbedded Core
OpenEmbedded Core
Caratteristiche
• Organizza i metadati per la costruzione delle applicazioni in file dettirecipe.
• Ha una struttura modulare a livelli detti layer.
• Contiene la definizione di circa 1000 recipe per applicazioni e librerie.
Stefano Cordibella Introduzione a Yocto Project 13/32
OpenEmbedded Core
OpenEmbedded Core
Caratteristiche
• Organizza i metadati per la costruzione delle applicazioni in file dettirecipe.
• Ha una struttura modulare a livelli detti layer.
• Contiene la definizione di circa 1000 recipe per applicazioni e librerie.
Quick Start
1 Scaricare i sorgenti del progetto.
2 Lanciare lo script oe-init-build-env script.
3 Modificare la machine target dell’applicazione e le risorsedell’ambiente di build.
4 Lanciare bitbake con l’immagine scelta.
Stefano Cordibella Introduzione a Yocto Project 13/32
OpenEmbedded Core Struttura delle directory
1 IntroduzioneLinux EmbeddedYocto ProjectPrincipali componenti
2 OpenEmbedded CoreStruttura delle directoryStruttura di un layer
Recipe
Image
Machine
Distro
3 BitBake
4 Qt5 in Yocto Project
Stefano Cordibella Introduzione a Yocto Project 14/32
OpenEmbedded Core Struttura delle directory
Struttura delle directory
Directory poky
bitbake contiene i binari e gli scriptper il build engine bitbake;
build workspace dicross-compilazione e spaziodove di default vengonoscaricati i pacchetti sorgenti;
meta-* directories che compongono ilayer del progetto, e possibilecrearne di proprie oincluderne altre di terze parti;
Stefano Cordibella Introduzione a Yocto Project 15/32
OpenEmbedded Core Struttura di un layer
1 IntroduzioneLinux EmbeddedYocto ProjectPrincipali componenti
2 OpenEmbedded CoreStruttura delle directoryStruttura di un layer
Recipe
Image
Machine
Distro
3 BitBake
4 Qt5 in Yocto Project
Stefano Cordibella Introduzione a Yocto Project 16/32
OpenEmbedded Core Struttura di un layer
Struttura di un layer
Caratteristiche
• Definizione delle diverse entita dell’ambiente di build.
Stefano Cordibella Introduzione a Yocto Project 17/32
OpenEmbedded Core Struttura di un layer
Struttura di un layer
Caratteristiche
• Definizione delle diverse entita dell’ambiente di build.
Recipe regole per la generazione di un pacchetto software.
Stefano Cordibella Introduzione a Yocto Project 17/32
OpenEmbedded Core Struttura di un layer
Struttura di un layer
Caratteristiche
• Definizione delle diverse entita dell’ambiente di build.
Recipe regole per la generazione di un pacchetto software.Package Group insieme di pacchetti
Stefano Cordibella Introduzione a Yocto Project 17/32
OpenEmbedded Core Struttura di un layer
Struttura di un layer
Caratteristiche
• Definizione delle diverse entita dell’ambiente di build.
Recipe regole per la generazione di un pacchetto software.Package Group insieme di pacchetti
Image informazioni per la generazione del rootfs
Stefano Cordibella Introduzione a Yocto Project 17/32
OpenEmbedded Core Struttura di un layer
Struttura di un layer
Caratteristiche
• Definizione delle diverse entita dell’ambiente di build.
Recipe regole per la generazione di un pacchetto software.Package Group insieme di pacchetti
Image informazioni per la generazione del rootfsMachine informazioni sulla piattaforma target
Stefano Cordibella Introduzione a Yocto Project 17/32
OpenEmbedded Core Struttura di un layer
Struttura di un layer
Caratteristiche
• Definizione delle diverse entita dell’ambiente di build.
Recipe regole per la generazione di un pacchetto software.Package Group insieme di pacchetti
Image informazioni per la generazione del rootfsMachine informazioni sulla piattaforma targetDistro versioni dei pacchetti e risoluzione delle ambiguita
Stefano Cordibella Introduzione a Yocto Project 17/32
OpenEmbedded Core Struttura di un layer
Struttura di un layer
Caratteristiche
• Definizione delle diverse entita dell’ambiente di build.
Recipe regole per la generazione di un pacchetto software.Package Group insieme di pacchetti
Image informazioni per la generazione del rootfsMachine informazioni sulla piattaforma targetDistro versioni dei pacchetti e risoluzione delle ambiguita
• Recipe organizzati in gruppi funzionali.
Stefano Cordibella Introduzione a Yocto Project 17/32
OpenEmbedded Core Struttura di un layer
Struttura di un layer
Caratteristiche
• Definizione delle diverse entita dell’ambiente di build.
Recipe regole per la generazione di un pacchetto software.Package Group insieme di pacchetti
Image informazioni per la generazione del rootfsMachine informazioni sulla piattaforma targetDistro versioni dei pacchetti e risoluzione delle ambiguita
• Recipe organizzati in gruppi funzionali.
• Fornito da terze parti o creato dallo sviluppatore del sistema.
Stefano Cordibella Introduzione a Yocto Project 17/32
OpenEmbedded Core Struttura di un layer
Recipe
Definizione
Regole per la generazione di un pacchetto software (applicativo o libreria).
Stefano Cordibella Introduzione a Yocto Project 18/32
OpenEmbedded Core Struttura di un layer
Recipe
Definizione
Regole per la generazione di un pacchetto software (applicativo o libreria).
Task principali
1 Dove reperire i sorgenti: do_fetch
2 Generazione dei binari: do_patch, do_configure, compile.
3 Pacchettizzazione e deploy nel rootfs do_install e do_package.
Stefano Cordibella Introduzione a Yocto Project 18/32
OpenEmbedded Core Struttura di un layer
Recipe
Definizione
Regole per la generazione di un pacchetto software (applicativo o libreria).
Task principali
1 Dove reperire i sorgenti: do_fetch
2 Generazione dei binari: do_patch, do_configure, compile.
3 Pacchettizzazione e deploy nel rootfs do_install e do_package.
Caratteristiche
• Dipendono dal tipo di build system utilizzato (autotools, cmake,qmake, . . . ).
• Possono essere sovrascritti dal singolo recipe o estesi con azioni_prepend o _append.
Stefano Cordibella Introduzione a Yocto Project 18/32
OpenEmbedded Core Struttura di un layer
Recipe
Esempio: recipe minimale
1 DESCRIPTION="The Qt Gui for Wireless Sensor Network"
2
3 LICENSE = "CLOSED"
4 PR = "r12"
5
6 # To download files:
7 SRC_URI= "bzr://www.edalab.it/projects /...; protocol=
bzr+https;rev=-1"
8
9 inherit qt4e
10
11 PACKAGES = "${PN}"
12
13 FILES_${PN} = "\
14 ${bindir}/ guiwsn \
15 ${sysconfdir }/gui -wsn.conf \
16 "
Stefano Cordibella Introduzione a Yocto Project 19/32
OpenEmbedded Core Struttura di un layer
Recipe
Esempio: task
1 ...
2
3 inherit autotools
4
5 # Task override:
6 do_configure() {
7 ./ my_configure
8 }
9
10 # Task append:
11 do_install_append() {
12 make my_install_append
13 }
14
15 ...
Stefano Cordibella Introduzione a Yocto Project 20/32
OpenEmbedded Core Struttura di un layer
Package Group
Definizione
Insieme di recipe gestibili come unica entita.
Stefano Cordibella Introduzione a Yocto Project 21/32
OpenEmbedded Core Struttura di un layer
Package Group
Definizione
Insieme di recipe gestibili come unica entita.
Esempio
1 DESCRIPTION = "Create Snort task"
2
3 LICENSE = "CLOSED"
4 PR = "r3"
5
6 inherit packagegroup
7
8 RDEPENDS_${PN} = " \
9 daq \
10 libdnet \
11 oinkmaster \
12 snort \
13 "
Stefano Cordibella Introduzione a Yocto Project 21/32
OpenEmbedded Core Struttura di un layer
Image
Caratteristiche
• Elenco dei pacchetti da installare.
• Funzionalita:
• splash,
• ssh,
• debug tools,
• . . .
• Tipi di file system:
• ext3,
• jffs2,
• . . .
• Azioni di postprocess.
• Sorgenti per gli aggiornamenti del software dell’immagine.
Stefano Cordibella Introduzione a Yocto Project 22/32
OpenEmbedded Core Struttura di un layer
Image
Esempio
1 DESCRIPTION = "Test image"
2
3 LICENSE = "CLOSED"
4 PR = "r2"
5
6 inherit core -image
7
8 IMAGE_FEATURES += "splash"
9
10 IMAGE_INSTALL += " \
11 packagegroup -snort \
12 vim \
13 "
14
15 ROOTFS_POSTPROCESS_COMMAND += " add_initramfs; "
16
17 IMAGE_FSTYPES = "ext3"
Stefano Cordibella Introduzione a Yocto Project 23/32
OpenEmbedded Core Struttura di un layer
Machine
Caratteristiche
• Architettura target.
• Funzionalita supportate in hardware dalla macchina.
• Elenco dei pacchetti compatibili.
• Indirizzi di memoria per le aree bootloader e kernel.
Stefano Cordibella Introduzione a Yocto Project 24/32
OpenEmbedded Core Struttura di un layer
Machine
Caratteristiche
• Architettura target.
• Funzionalita supportate in hardware dalla macchina.
• Elenco dei pacchetti compatibili.
• Indirizzi di memoria per le aree bootloader e kernel.
Esempio
1 DEFAULTTUNE ?= "cortexa8hf -neon"
2 include conf/machine/include/tune -cortexa8.inc
3
4 IMAGE_FSTYPES += "tar.bz2 jffs2"
5 EXTRA_IMAGECMD_jffs2 = "-lnp "
6
7 KERNEL_IMAGETYPE = "uImage"
8
9 MACHINE_FEATURES = "usbgadget usbhost vfat alsa"
Stefano Cordibella Introduzione a Yocto Project 24/32
OpenEmbedded Core Struttura di un layer
Distro
Caratteristiche
• Numero di versione.
• Funzionalita abilitate per la distribuzione.
• Elenco specifico delle versioni dei pacchetti da utilizzare.
Stefano Cordibella Introduzione a Yocto Project 25/32
OpenEmbedded Core Struttura di un layer
Distro
Caratteristiche
• Numero di versione.
• Funzionalita abilitate per la distribuzione.
• Elenco specifico delle versioni dei pacchetti da utilizzare.
Esempio
1 DISTRO_VERSION = "2.99.4"
2
3 PREFERRED_PROVIDER_jpeg = "jpeg"
4
5 PREFERRED_VERSION_linux -libc -headers = "3.0"
6 PREFERRED_VERSION_apache2 = "2.2.22"
7
8 DISTRO_FEATURES = "ext2 zeroconf pci x11"
Stefano Cordibella Introduzione a Yocto Project 25/32
BitBake
1 IntroduzioneLinux EmbeddedYocto ProjectPrincipali componenti
2 OpenEmbedded CoreStruttura delle directoryStruttura di un layer
Recipe
Image
Machine
Distro
3 BitBake
4 Qt5 in Yocto Project
Stefano Cordibella Introduzione a Yocto Project 26/32
BitBake
BitBake
Definizione
Esegue i task specificati nei recipe gestendone le dipendenze.
Stefano Cordibella Introduzione a Yocto Project 27/32
BitBake
BitBake
Definizione
Esegue i task specificati nei recipe gestendone le dipendenze.
Caratteristiche
• Puo essere lanciato sia su recipe che su immagini.
Stefano Cordibella Introduzione a Yocto Project 27/32
BitBake
BitBake
Definizione
Esegue i task specificati nei recipe gestendone le dipendenze.
Caratteristiche
• Puo essere lanciato sia su recipe che su immagini.
• Crea l’albero delle dipendenze dei task e li esegue in parallelo.
Stefano Cordibella Introduzione a Yocto Project 27/32
BitBake
BitBake
Definizione
Esegue i task specificati nei recipe gestendone le dipendenze.
Caratteristiche
• Puo essere lanciato sia su recipe che su immagini.
• Crea l’albero delle dipendenze dei task e li esegue in parallelo.
• Puo eseguire task singoli.
Stefano Cordibella Introduzione a Yocto Project 27/32
BitBake
BitBake
Definizione
Esegue i task specificati nei recipe gestendone le dipendenze.
Caratteristiche
• Puo essere lanciato sia su recipe che su immagini.
• Crea l’albero delle dipendenze dei task e li esegue in parallelo.
• Puo eseguire task singoli.
• Integra una modalita di debug devshell.
Stefano Cordibella Introduzione a Yocto Project 27/32
BitBake
Comandi Principali
Esecuzione di tutti i task di un recipe
1 $ bitbake <recipe >
• Esegue tutti i task per uno specifico recipe.
Stefano Cordibella Introduzione a Yocto Project 28/32
BitBake
Comandi Principali
Esecuzione di tutti i task di un recipe
1 $ bitbake <recipe >
• Esegue tutti i task per uno specifico recipe.
clean
1 $ bitbake -c clean <recipe >
• Esegue il task do_clean per il recipe; esiste anche la variantecleanall che rimuove anche i sorgenti scaricati nel workspace.
Stefano Cordibella Introduzione a Yocto Project 28/32
BitBake
Comandi Principali
Esecuzione di tutti i task di un recipe
1 $ bitbake <recipe >
• Esegue tutti i task per uno specifico recipe.
clean
1 $ bitbake -c clean <recipe >
• Esegue il task do_clean per il recipe; esiste anche la variantecleanall che rimuove anche i sorgenti scaricati nel workspace.
listtasks
1 $ bitbake -c listtasks <recipe >
• Mostra l’elenco dei task per il recipe/image specificato.
Stefano Cordibella Introduzione a Yocto Project 28/32
BitBake
Comandi Principali
<task>
1 $ bitbake -c <nometask > <recipe >
• Esegue il singolo task del recipe specificato e termina.
Stefano Cordibella Introduzione a Yocto Project 29/32
BitBake
Comandi Principali
<task>
1 $ bitbake -c <nometask > <recipe >
• Esegue il singolo task del recipe specificato e termina.
devshell
1 $ bitbake -c devshell <recipe >
• Viene aperta una shell nel tree dei sorgenti del progetto dopo il taskdi patch.
• E possibile sperimentare modifiche ai sorgenti in loco, o visualizzarel’output dei task di build precedenti.
Stefano Cordibella Introduzione a Yocto Project 29/32
Qt5 in Yocto Project
1 IntroduzioneLinux EmbeddedYocto ProjectPrincipali componenti
2 OpenEmbedded CoreStruttura delle directoryStruttura di un layer
Recipe
Image
Machine
Distro
3 BitBake
4 Qt5 in Yocto Project
Stefano Cordibella Introduzione a Yocto Project 30/32
Qt5 in Yocto Project
meta-qt5
Descrizione
Layer esterno ad OpenEmbedded Core per utilizzare le Qt5 nella propriadistribuzione.
Struttura del layer
classes definisce la classi qmake5 ecmake_qmake;
conf definisce le versioni della libreriae delle sue componenti qt5;
recipes-qt contiene i recipes per:
• compilare il framework qt5,• recipes per la metatoolchain
• esempi di applicazioni qt5;
Stefano Cordibella Introduzione a Yocto Project 31/32
Qt5 in Yocto Project
Grazie per l’attenzione
Domande?
Stefano Cordibella Introduzione a Yocto Project 32/32