Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw...

44
1

Transcript of Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw...

Page 1: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

1

Page 2: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Inhoud

Geschiedenis / evolutie van OpenEmbedded en Yocto

Overzicht van de architectuur en concepten

Persoonlijke ervaring

2

Page 3: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Introductie

Leon Woestenberg

Embedded systeem architect

RTOS, Linux, hardware, FPGA

[email protected]

3

Page 4: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Stukje geschiedenis

2002: Chris Larson vind de ROM van de Zaurus slecht.

Hij maakt bouwgereedschap voor een open Linux distributie.

4

Page 5: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Stukje geschiedenis

2002: OpenZaurus project wordt voor andere apparaten gebruikt.

5

Page 6: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Stukje geschiedenis

2003: Holger Schurig, Michael Lauer en Chris Larson bedenken een nieuw build systeem: OpenEmbedded.

6

Page 7: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Stukje geschiedenis

2004: OpenEmbedded splitst het bouw gereedschap ‘Bitbake’ van de bouw instructies.

7

Page 8: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Stukje geschiedenis

2005: OpenEmbedded is volwassen. (tenminste, dat vond ik toen).

8

Page 9: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Doelen

Build-from-scratch

(versus bestaande distributie installeren en aanpassen.)

9

Page 10: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Doelen

Cross-compileren

(versus compileren op de ‘target’ machine of architectuur zelf.)

10

Page 11: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Doelen

Deterministisch en correct

Geen vervuiling uit host Linux

(lastig bij cross-compileren).

11

Page 12: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Doelen

Deterministisch en correct

Geen vervuiling uit host Linux

(lastig bij cross-compileren).

12

Page 13: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Taken

13

Page 14: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Software bouw taken

• fetch

• unpack

• patch

• configure

• compile

• install

• package

14

‘Tasks’;

uitgevoerddoor ‘BitBake’

}

Page 15: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Objectgeörienteerd

• basis implementatie voor elke taak (basis klasse)

• taken kunnen worden uitgebreid (prepend/append) of vervangen (override)

• eigen taken kunnen worden ingevoegd

15

Page 16: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Objectgeörienteerd

implementaties voor gangbare standaarden:

• archiefformaten

• versiebeheersystemen

• make systemen

• distributieverpakkingen (packages)

maar zelf een klasse toevoegen kan ook.

16

Page 17: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Recepten

17

Page 18: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Recepten

Voor elk software pakket is een BitBake recept wat de bouwtaken beschrijft. Dit zijn shell scripts.

Veelal wordt een bestaande klasse overerfd.

Gevolg: een recept bevat doorgaans weinig scripts, maar vooral shell variabelen die de taken gebruiken tijdens uitvoeren.

18

Page 19: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Hello World

19

Page 20: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Configuratie

Vertelt bitbake voor welke MACHINE gebouwd gaat worden en waar het de recepten en klassen moet zoeken.

20

Page 21: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Meerdere architecturen

host packages

target packages

cross tools

21

Page 22: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Meerdere packages

Eén recept kan meerdere packages genereren.

Bijvoorbeeld een package voor de shared library en één voor de headers ervan.

22

Page 23: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Afhankelijkheden

Elk recept kan afhankelijkheden aangeven; het kan pas gebouwd worden zodra een ander package beschikbaar is.

DEPENDS

23

Page 24: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Images

Veelal wil je niet één pakket bouwen, maar juist een compleet filesysteem wat je direct kunt schrijven naar het apparaat.

24

Page 25: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Start

Bij het uitvoeren van BitBake geef je het gewenste package of image op, en BitBake begint te bouwen.

25

Page 26: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

26

Page 27: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Bouwen

27

Page 28: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Run Queue

Mede gestuurd door de afhankelijkheden tussen packages, maakt BitBake eerst een afhankelijkhedenboom tussen alle uit te voeren taken.

Deze taken worden verdeeld over meerdere threads en cores.

28

Page 29: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Bouwen op 8 cores

29

Page 30: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

30

Page 31: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

31

Page 32: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Cache

Checksums om te zien of afhankelijkheden zijn veranderd, bijvoorbeeld door aanpassing recept.

BitBake bouwt alleen de nodige pakketten opnieuw.

32

Page 33: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

33

Page 34: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

SDK’s

OpenEmbedded kan een SDK bouwen voor een andere ontwikkelmachine.

Hiermee kunnen software ontwikkelaars hun software compileren voor het embedded target zonder dat ze een complete distributie moeten bouwen.

NATIVESDK

34

Page 35: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Resultaat

35

Page 36: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Deploy images

Kopieer bootloader, kernel en filesysteem (image) naar de SD kaart, Flash, disk.

En booten maar...

36

Page 37: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Yocto

37

Page 38: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Meer geschiedenis

2008: Intel neemt belang in OpenedHand, een Linux ontwikkel club in de UK, die verbeteringen aanbrengt in ‘Poky’, een fork.

38

Page 39: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Meer geschiedenis

2010: Linux Foundation stelt het Yocto Project voor op de Embedded Linux conferentie in Cambridge.

39

Page 40: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Meer geschiedenis

2010: OpenEmbedded Core is een kleine subset van OpenEmbedded (Classic), basis voor Yocto Project, in sync met Poky.

40

Page 41: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Resultaat

Yocto Project gebruikt OpenEmbedded Core als basis voor een ontwikkelomgeving voor embedded Linux.

Yocto biedt meer high-level tools, zoals voor Eclipse en bouwen vanuit een web browser.

41

Page 42: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Hoe verder?

Suggesties:

Kies een ontwikkel platform wat wordt ondersteund door OpenEmbedded / Yocto en volg de “Getting Started” Guide.

Of neem deel aan de Yocto Developer Days.

42

Page 43: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Yocto Developer Day 2014

43

Page 44: Inhoud - Nederlandse Linux Gebruikers Groep...2015/05/16  · gereedschap ‘Bitbake’ van de bouw instructies. 7 Stukje geschiedenis 2005: OpenEmbedded is volwassen. (tenminste,

Einde

44

Vragen? Suggesties? Ervaringen?

Leon Woestenberg

[email protected]