introduzione a yocto...

68
Introduzione a Yocto Project Stefano Cordibella [email protected] EDALab s.r.l. – Networked Embedded Systems January 8, 2015 Stefano Cordibella Introduzione a Yocto Project 1/32

Upload: others

Post on 05-Feb-2020

23 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

Introduzione a Yocto Project

Stefano Cordibella

[email protected]

EDALab s.r.l. – Networked Embedded Systems

January 8, 2015

Stefano Cordibella Introduzione a Yocto Project 1/32

Page 2: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 3: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 4: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 5: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 6: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 7: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

Introduzione Linux Embedded

Linux Embedded

Definizione

Sistemi operativi basati su kernel linuxutilizzati in ambito embedded.

Stefano Cordibella Introduzione a Yocto Project 6/32

Page 8: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 9: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 10: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 11: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 12: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 13: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 14: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 15: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 16: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 17: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

Introduzione Yocto Project

Yocto Project

Punti di forza

• Suite di strumenti integrati.

Stefano Cordibella Introduzione a Yocto Project 9/32

Page 18: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 19: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 20: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 21: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 22: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 23: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 24: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 25: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 26: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 27: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

OpenEmbedded Core

OpenEmbedded Core

Caratteristiche

• Organizza i metadati per la costruzione delle applicazioni in file dettirecipe.

Stefano Cordibella Introduzione a Yocto Project 13/32

Page 28: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 29: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 30: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 31: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 32: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 33: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 34: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 35: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 36: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 37: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 38: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 39: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 40: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 41: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 42: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 43: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 44: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 45: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 46: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 47: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

OpenEmbedded Core Struttura di un layer

Package Group

Definizione

Insieme di recipe gestibili come unica entita.

Stefano Cordibella Introduzione a Yocto Project 21/32

Page 48: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 49: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 50: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 51: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 52: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 53: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 54: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 55: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 56: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

BitBake

BitBake

Definizione

Esegue i task specificati nei recipe gestendone le dipendenze.

Stefano Cordibella Introduzione a Yocto Project 27/32

Page 57: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 58: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 59: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 60: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 61: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 62: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 63: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 64: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 65: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 66: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 67: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

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

Page 68: Introduzione a Yocto Projectprofs.scienze.univr.it/~perbellini/LabSOA/12_LezioneSOA_YoctoProject_Intro.pdf · Introduzione a Yocto Project StefanoCordibella stefano.cordibella@edalab.it

Qt5 in Yocto Project

Grazie per l’attenzione

Domande?

Stefano Cordibella Introduzione a Yocto Project 32/32