SlideShare ist ein Scribd-Unternehmen logo
1 von 173
Downloaden Sie, um offline zu lesen
Embedded Recipes Conference - 2017
Introduction to the Yocto Project /
OpenEmbedded-core
Mylène Josserand
Free Electrons
mylene@free-electrons.com
Embedded Linux
Experts
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 1/35
Mylène Josserand
▶ Embedded Linux engineer at Free Electrons
since 2016
▶ Embedded Linux expertise
▶ Development, consulting and training around
the Yocto Project
▶ One of the authors of Free Electrons’ Yocto
Project / OpenEmbedded training
materials.
▶ Kernel contributor: audio driver, touchscreen,
RTC and more to come!
Embedded Linux
Experts
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 2/35
Introduction
▶ In this talk, we will:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded core are structured
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded core are structured
▶ How we can use it
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded core are structured
▶ How we can use it
▶ How we can update it to fit our needs
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded core are structured
▶ How we can use it
▶ How we can update it to fit our needs
▶ Give some good practices to start using the Yocto Project correctly
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded core are structured
▶ How we can use it
▶ How we can update it to fit our needs
▶ Give some good practices to start using the Yocto Project correctly
▶ Allows to customize many things: it is easy to do things the wrong way
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
Introduction
▶ In this talk, we will:
▶ Understand why we should use a build system
▶ How the Yocto Project / OpenEmbedded core are structured
▶ How we can use it
▶ How we can update it to fit our needs
▶ Give some good practices to start using the Yocto Project correctly
▶ Allows to customize many things: it is easy to do things the wrong way
▶ When you see a ✓, it means it is a good practice!
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
Why use a build system?
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
Why use a build system?
▶ In the Embedded world, we have many constraints
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
Why use a build system?
▶ In the Embedded world, we have many constraints
▶ Nice to reduce the system to a minimal one + add our custom application
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
Why use a build system?
▶ In the Embedded world, we have many constraints
▶ Nice to reduce the system to a minimal one + add our custom application
▶ A build system will automate the creation of the system in a reproducible way
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
Why use a build system?
▶ In the Embedded world, we have many constraints
▶ Nice to reduce the system to a minimal one + add our custom application
▶ A build system will automate the creation of the system in a reproducible way
▶ Integration means packaging applications to create a final image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
System integration: several possibilities
▶ Building everything manually:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
▶ Build systems (Buildroot, the Yocto Project, etc):
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
▶ Build systems (Buildroot, the Yocto Project, etc):
⊗
Not as easy as a binary distribution
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
▶ Build systems (Buildroot, the Yocto Project, etc):
⊗
Not as easy as a binary distribution⊕
Nearly full flexibility
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
▶ Build systems (Buildroot, the Yocto Project, etc):
⊗
Not as easy as a binary distribution⊕
Nearly full flexibility⊕
Built from source: customization and optimization are easy
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
▶ Build systems (Buildroot, the Yocto Project, etc):
⊗
Not as easy as a binary distribution⊕
Nearly full flexibility⊕
Built from source: customization and optimization are easy⊕
Fully reproducible
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
System integration: several possibilities
▶ Building everything manually:
⊕
Full flexibility⊗
Dependency hell⊗
Lack of reproducibility
▶ Binary distribution (Debian, Ubuntu, Fedora, etc):
⊕
Easy to create and extend⊗
Hard to customize and optimize (boot time, size)⊗
Hard to rebuild from source⊗
Native-compilation⊗
Not available for all architectures
▶ Build systems (Buildroot, the Yocto Project, etc):
⊗
Not as easy as a binary distribution⊕
Nearly full flexibility⊕
Built from source: customization and optimization are easy⊕
Fully reproducible⊕
Cross-compilation
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
Representation in the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
Representation in the Yocto Project
▶ Common tasks defined in OpenEmbedded core
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
Representation in the Yocto Project
▶ Common tasks defined in OpenEmbedded core
▶ Many recipes availables for many applications: organized in layers
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
Representation in the Yocto Project
▶ Common tasks defined in OpenEmbedded core
▶ Many recipes availables for many applications: organized in layers
▶ Allow to build custom embedded Linux-based systems
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
Representation in the Yocto Project
▶ Common tasks defined in OpenEmbedded core
▶ Many recipes availables for many applications: organized in layers
▶ Allow to build custom embedded Linux-based systems
⇒ This is the aim of the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
OpenEmbedded core & Poky
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
▶ Reference distribution of the Yocto Project
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
▶ Reference distribution of the Yocto Project
▶ Contains everything you need to start a
project:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
▶ Reference distribution of the Yocto Project
▶ Contains everything you need to start a
project:
▶ OpenEmbedded-core
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
▶ Reference distribution of the Yocto Project
▶ Contains everything you need to start a
project:
▶ OpenEmbedded-core
▶ Bitbake
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
▶ Reference distribution of the Yocto Project
▶ Contains everything you need to start a
project:
▶ OpenEmbedded-core
▶ Bitbake
▶ Additional layers
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
OpenEmbedded core & Poky
▶ Co-maintained by the Yocto
Project and OpenEmbedded
Project
▶ Set of base layer with recipes
and classes
▶ It is the core of all the magic
▶ It supports the ARM, MIPS (32
and 64 bits), PowerPC and x86
(32 and 64 bits) architectures +
QEMU
▶ Reference distribution of the Yocto Project
▶ Contains everything you need to start a
project:
▶ OpenEmbedded-core
▶ Bitbake
▶ Additional layers
▶ Also contains some useful tools to ease
recipes and layers’ creation
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
The Yocto Project / OpenEmbedded Core / Poky
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 8/35
Workflow - General
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
Workflow - General
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
Workflow - General
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
Workflow - Users/Developers actions
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 10/35
Workflow - 1. Download
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
▶ Support level: Development, Stable, Community
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
▶ Support level: Development, Stable, Community
▶ A codename corresponds to a Poky and Bitbake versions
Pyro = Yocto Project v2.3 → Poky v17.0 & Bitbake v1.34
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
▶ Support level: Development, Stable, Community
▶ A codename corresponds to a Poky and Bitbake versions
Pyro = Yocto Project v2.3 → Poky v17.0 & Bitbake v1.34
▶ How to download:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
Workflow - 1. Download
▶ Find which version you want to use:
Figure: https://wiki.yoctoproject.org/wiki/Releases
▶ Support level: Development, Stable, Community
▶ A codename corresponds to a Poky and Bitbake versions
Pyro = Yocto Project v2.3 → Poky v17.0 & Bitbake v1.34
▶ How to download:
git clone -b pyro git://git.yoctoproject.org/poky.git
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
▶ Look at existing layers
Figure: http://layers.openembedded.org/layerindex/
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
▶ Look at existing layers
Figure: http://layers.openembedded.org/layerindex/
▶ Download all other layers on same branch than Poky: Pyro
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
▶ Look at existing layers
Figure: http://layers.openembedded.org/layerindex/
▶ Download all other layers on same branch than Poky: Pyro
✓ Use existing layers before creating a new one ⇒ saves you time
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
Workflow - 1. Download
▶ Layers are sets of recipes, matching a common purpose.
To simplify things, they are just folders
▶ Look at existing layers
Figure: http://layers.openembedded.org/layerindex/
▶ Download all other layers on same branch than Poky: Pyro
✓ Use existing layers before creating a new one ⇒ saves you time
✓ DO NOT EDIT POKY/UPSTREAM LAYERS ⇒ complicates updates
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
Workflow - 2. Configure the build
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
▶ Will move you in a build folder
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
▶ Will move you in a build folder
▶ Now, can run any commands
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
▶ Will move you in a build folder
▶ Now, can run any commands
▶ All the local configurations are in the conf folder
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
▶ Will move you in a build folder
▶ Now, can run any commands
▶ All the local configurations are in the conf folder
build/
|-- conf
|-- bblayers.conf
|-- local.conf
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
▶ Will move you in a build folder
▶ Now, can run any commands
▶ All the local configurations are in the conf folder
build/
|-- conf
|-- bblayers.conf
|-- local.conf
▶ Edit your bblayers.conf with possible additional layers:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
Workflow - 2. Configure the build
▶ A script with all variables needed by Bitbake must be sourced:
source oe-init-build-env
▶ Will move you in a build folder
▶ Now, can run any commands
▶ All the local configurations are in the conf folder
build/
|-- conf
|-- bblayers.conf
|-- local.conf
▶ Edit your bblayers.conf with possible additional layers:
BBLAYERS ?= " 
/home/mylene/yocto/poky/meta 
/home/mylene/yocto/poky/meta-poky 
/home/mylene/yocto/poky/meta-yocto-bsp 
/home/mylene/yocto/meta-freescale 
/home/mylene/yocto/meta-qt5 
"
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
▶ meta-atmel: at91*, sama5d*, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
▶ meta-atmel: at91*, sama5d*, ...
▶ DISTRO: Represents the top-level configuration that will apply to every build. It
will include tools needed to use your hardware: compiler, libC, etc + some specific
variables Look at conf/distro/ folders
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
▶ meta-atmel: at91*, sama5d*, ...
▶ DISTRO: Represents the top-level configuration that will apply to every build. It
will include tools needed to use your hardware: compiler, libC, etc + some specific
variables Look at conf/distro/ folders
▶ poky: poky, poky-tiny, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
▶ meta-atmel: at91*, sama5d*, ...
▶ DISTRO: Represents the top-level configuration that will apply to every build. It
will include tools needed to use your hardware: compiler, libC, etc + some specific
variables Look at conf/distro/ folders
▶ poky: poky, poky-tiny, ...
▶ meta-angstrom: angstrom
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
▶ meta-atmel: at91*, sama5d*, ...
▶ DISTRO: Represents the top-level configuration that will apply to every build. It
will include tools needed to use your hardware: compiler, libC, etc + some specific
variables Look at conf/distro/ folders
▶ poky: poky, poky-tiny, ...
▶ meta-angstrom: angstrom
▶ Noticed that local.conf ⇒ only for the local workstation.
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
Workflow - 2. Configure the build
▶ Edit local.conf with your MACHINE and your DISTRO
▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers.
Look at conf/machine/ folders
▶ poky: beaglebone, x86, x86-64
▶ meta-ti: beagleboard, pandaboard, ...
▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ...
▶ meta-atmel: at91*, sama5d*, ...
▶ DISTRO: Represents the top-level configuration that will apply to every build. It
will include tools needed to use your hardware: compiler, libC, etc + some specific
variables Look at conf/distro/ folders
▶ poky: poky, poky-tiny, ...
▶ meta-angstrom: angstrom
▶ Noticed that local.conf ⇒ only for the local workstation.
✓ Avoid changes directly in local.conf (or only for test purposes, except for some
variables such as MACHINE and DISTRO)
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
Workflow - 3. Build an image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
Workflow - 3. Build an image
▶ What is an IMAGE?
⇒ Represents your root filesystem: all your applications, libraries, configuration
files, ... Will find it under recipes-*/images/
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
Workflow - 3. Build an image
▶ What is an IMAGE?
⇒ Represents your root filesystem: all your applications, libraries, configuration
files, ... Will find it under recipes-*/images/
▶ Common images already exist in Poky: core-image-minimal, core-image-base,
core-image-x11, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
Workflow - 3. Build an image
▶ What is an IMAGE?
⇒ Represents your root filesystem: all your applications, libraries, configuration
files, ... Will find it under recipes-*/images/
▶ Common images already exist in Poky: core-image-minimal, core-image-base,
core-image-x11, ...
▶ Build an existing image:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
Workflow - 3. Build an image
▶ What is an IMAGE?
⇒ Represents your root filesystem: all your applications, libraries, configuration
files, ... Will find it under recipes-*/images/
▶ Common images already exist in Poky: core-image-minimal, core-image-base,
core-image-x11, ...
▶ Build an existing image:
bitbake core-image-minimal
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
MACHINE/DISTRO/IMAGE: a little reminder
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
▶ Distro: Represents the top-level
configuration that will apply on every
build
conf/distro/
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
▶ Distro: Represents the top-level
configuration that will apply on every
build
conf/distro/
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
▶ Distro: Represents the top-level
configuration that will apply on every
build
conf/distro/
▶ Image: It represents your root
filesystem itself: all your applications,
libraries, configuration’s files, etc
recipes-core/images
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
MACHINE/DISTRO/IMAGE: a little reminder
▶ Machine: It represents your hardware
conf/machine/
▶ Distro: Represents the top-level
configuration that will apply on every
build
conf/distro/
▶ Image: It represents your root
filesystem itself: all your applications,
libraries, configuration’s files, etc
recipes-core/images
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
Workflow - Developer
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 17/35
Workflow - 4. Create a layer
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
▶ To be able to do that, we will create our own layer that will host all our
modifications/applications
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
▶ To be able to do that, we will create our own layer that will host all our
modifications/applications
▶ Poky provides a tool to create layers:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
▶ To be able to do that, we will create our own layer that will host all our
modifications/applications
▶ Poky provides a tool to create layers:
yocto-layer create <layer_name> -o <dest_dir>
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
▶ To be able to do that, we will create our own layer that will host all our
modifications/applications
▶ Poky provides a tool to create layers:
yocto-layer create <layer_name> -o <dest_dir>
✓ The layer’s name must be meta-* (done automatically using yocto-layer tool)
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
▶ To be able to do that, we will create our own layer that will host all our
modifications/applications
▶ Poky provides a tool to create layers:
yocto-layer create <layer_name> -o <dest_dir>
✓ The layer’s name must be meta-* (done automatically using yocto-layer tool)
✓ Avoid uppercase and funny/long names
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
Workflow - 4. Create a layer
▶ You may have custom hardware, need to update recipes from upstream layers,
integrate your own application, etc
▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS
▶ To be able to do that, we will create our own layer that will host all our
modifications/applications
▶ Poky provides a tool to create layers:
yocto-layer create <layer_name> -o <dest_dir>
✓ The layer’s name must be meta-* (done automatically using yocto-layer tool)
✓ Avoid uppercase and funny/long names
✓ If you have different projects with common parts, try to create two layers
⇒ Can re-use some parts
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
Workflow - 5. Create a recipe
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ configure it
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ configure it
▶ compile it
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ configure it
▶ compile it
▶ install it
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ configure it
▶ compile it
▶ install it
▶ It handles all the dependencies for you.
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ configure it
▶ compile it
▶ install it
▶ It handles all the dependencies for you.
▶ Many common tasks are already defined by OpenEmbedded-core
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
Workflow - 5. Create a recipe
▶ A recipe is a file describing tasks for an application to:
▶ retrieve its sources
▶ configure it
▶ compile it
▶ install it
▶ It handles all the dependencies for you.
▶ Many common tasks are already defined by OpenEmbedded-core
▶ Organized in folders with the same purpose (recipes-core, recipes-bsp,
recipes-kernel, recipes-devtool, recipes-support, ...) and a sub-folder with the
application’s name
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
▶ The format of a recipe file name is <application-name>_<version>.bb
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
▶ The format of a recipe file name is <application-name>_<version>.bb
▶ A recipe can be divided in three parts:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
▶ The format of a recipe file name is <application-name>_<version>.bb
▶ A recipe can be divided in three parts:
▶ The header: what/who. Description of the application
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
▶ The format of a recipe file name is <application-name>_<version>.bb
▶ A recipe can be divided in three parts:
▶ The header: what/who. Description of the application
▶ The sources: where. Can be tarballs, remote repository, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
▶ The format of a recipe file name is <application-name>_<version>.bb
▶ A recipe can be divided in three parts:
▶ The header: what/who. Description of the application
▶ The sources: where. Can be tarballs, remote repository, ...
▶ The tasks: how. How to proceed with the application’s sources
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
Workflow - 5. Create a recipe
▶ To create a recipe, you have to create a .bb file. It is the format that bitbake
understands
▶ The format of a recipe file name is <application-name>_<version>.bb
▶ A recipe can be divided in three parts:
▶ The header: what/who. Description of the application
▶ The sources: where. Can be tarballs, remote repository, ...
▶ The tasks: how. How to proceed with the application’s sources
▶ Classes are available for tasks commonly used: kernel, CMake, autotools, ...
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
Workflow - 5. Create a recipe
recipes-support/nmon/nmon_13g.bb
SUMMARY = "nmon performance monitor"
HOMEPAGE = "http://nmon.sf.net"
SECTION = "console/utils"
LICENSE = "GPLv3"
LIC_FILES_CHKSUM = "file://${WORKDIR}/Documentation.txt;md5=dbb13658cf55d687c4f2ff771a696d4a"
DEPENDS = "ncurses"
SRC_URI = "${SOURCEFORGE_MIRROR}/nmon/lmon13g.c;name=lmon 
${SOURCEFORGE_MIRROR}/nmon/Documentation.txt;name=doc 
"
SRC_URI[lmon.md5sum] = "b1b8e6c0123ad232394991f2d4f40494"
SRC_URI[lmon.sha256sum] = "456ab2a342b31d1a352d0d940af5962fa65a12ae8757ff73e6e73210832ae8b5"
SRC_URI[doc.md5sum] = "dbb13658cf55d687c4f2ff771a696d4a"
SRC_URI[doc.sha256sum] = "1f7f83afe62a7210be5e83cd24157adb854c14599efe0b377a7ecca933869278"
CFLAGS += "-D JFS -D GETUSER -Wall -D LARGEMEM"
LDFLAGS += "-ltinfo -lncursesw"
do_compile() {
${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/lmon13g.c -o nmon
}
do_install() {
install -d ${D}${bindir}
install -m 0755 nmon ${D}${bindir}
}
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 21/35
Workflow - 5. Create a recipe
recipes-support/nmon/nmon_13g.bb
| SUMMARY = "nmon performance monitor"
| HOMEPAGE = "http://nmon.sf.net"
| SECTION = "console/utils"
"Header" | LICENSE = "GPLv3"
| LIC_FILES_CHKSUM = "file://${WORKDIR}/Documentation.txt;md5=dbb13658cf55d687c4f2ff771a696d4a"
| DEPENDS = "ncurses"
| SRC_URI = "${SOURCEFORGE_MIRROR}/nmon/lmon13g.c;name=lmon 
| ${SOURCEFORGE_MIRROR}/nmon/Documentation.txt;name=doc 
| "
| SRC_URI[lmon.md5sum] = "b1b8e6c0123ad232394991f2d4f40494"
"Source" | SRC_URI[lmon.sha256sum] = "456ab2a342b31d1a352d0d940af5962fa65a12ae8757ff73e6e73210832ae8b5"
| SRC_URI[doc.md5sum] = "dbb13658cf55d687c4f2ff771a696d4a"
| SRC_URI[doc.sha256sum] = "1f7f83afe62a7210be5e83cd24157adb854c14599efe0b377a7ecca933869278"
| CFLAGS += "-D JFS -D GETUSER -Wall -D LARGEMEM"
| LDFLAGS += "-ltinfo -lncursesw"
|
| do_compile() {
| ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/lmon13g.c -o nmon
"Tasks" | }
|
| do_install() {
| install -d ${D}${bindir}
| install -m 0755 nmon ${D}${bindir}
| }
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 22/35
Workflow - 5. Create a recipe
recipes-example/helloworld/helloworld_1.0.bb
DESCRIPTION = "Print a friendly, customizable greeting"
HOMEPAGE = "https://www.gnu.org/software/hello/"
PRIORITY = "optional"
SECTION = "examples"
LICENSE = "GPLv3"
SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.gz"
SRC_URI[md5sum] = "67607d2616a0faaf5bc94c59dca7c3cb"
SRC_URI[sha256sum] = "ecbb7a2214196c57ff9340aa71458e1559abd38f6d8d169666846935df191ea7"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
inherit autotools
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 23/35
Workflow - 5. Create a recipe
recipes-example/helloworld/helloworld_1.0.bb
| DESCRIPTION = "Print a friendly, customizable greeting"
| HOMEPAGE = "https://www.gnu.org/software/hello/"
"Header" | PRIORITY = "optional"
| SECTION = "examples"
| LICENSE = "GPLv3"
| SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.gz"
"Source" | SRC_URI[md5sum] = "67607d2616a0faaf5bc94c59dca7c3cb"
| SRC_URI[sha256sum] = "ecbb7a2214196c57ff9340aa71458e1559abd38f6d8d169666846935df191ea7"
| LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
"Tasks" | inherit autotools
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 24/35
Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicker + keep history
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicker + keep history
✓ Do not put application sources in your layer directly!
⇒ Application development ̸= Application Integration
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicker + keep history
✓ Do not put application sources in your layer directly!
⇒ Application development ̸= Application Integration
✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/...
⇒ Find recipes quicker
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicker + keep history
✓ Do not put application sources in your layer directly!
⇒ Application development ̸= Application Integration
✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/...
⇒ Find recipes quicker
✓ Keep the headers / sources / tasks organization in the recipe
⇒ All the recipes have the same content organization
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicker + keep history
✓ Do not put application sources in your layer directly!
⇒ Application development ̸= Application Integration
✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/...
⇒ Find recipes quicker
✓ Keep the headers / sources / tasks organization in the recipe
⇒ All the recipes have the same content organization
✓ Use/Create include files when possible
⇒ Can extend other versions easily
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
Workflow - 5. Create a recipe
✓ Always use remote repositories to host your application sources
⇒ Makes development quicker + keep history
✓ Do not put application sources in your layer directly!
⇒ Application development ̸= Application Integration
✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/...
⇒ Find recipes quicker
✓ Keep the headers / sources / tasks organization in the recipe
⇒ All the recipes have the same content organization
✓ Use/Create include files when possible
⇒ Can extend other versions easily
✓ Know how to compile the application manually before integrating it in a recipe
⇒ Saves you time
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
Workflow - 6. Extend a recipe
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes useful to modify an existing recipe
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes useful to modify an existing recipe
▶ The BitBake build engine allows to modify a recipe by extending it
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes useful to modify an existing recipe
▶ The BitBake build engine allows to modify a recipe by extending it
▶ The recipe extensions end in .bbappend
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes useful to modify an existing recipe
▶ The BitBake build engine allows to modify a recipe by extending it
▶ The recipe extensions end in .bbappend
▶ Appended files must have the same root name as the recipe they extend
example_0.1.bbappend applies to example_0.1.bb
⇒ version specific
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
Workflow - 6. Extend a recipe
▶ It is a good practice not to modify recipes available in Poky.
▶ But it is sometimes useful to modify an existing recipe
▶ The BitBake build engine allows to modify a recipe by extending it
▶ The recipe extensions end in .bbappend
▶ Appended files must have the same root name as the recipe they extend
example_0.1.bbappend applies to example_0.1.bb
⇒ version specific
▶ If adding new files, you must prepend the FILESEXTRAPATHS variable with the
path to files’ directory.
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
Workflow - 6. Extend a recipe
recipes-support/nmon/nmon_13g.bbappend
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://custom-modification-0.patch 
file://custom-modification-1.patch 
"
do_install_append() {
# Do something
}
.
|--- conf
| |-- layer.conf
|--- recipes-support
|--- nmon
|-- files
| |-- custom-modification-0.patch
| |-- custom-modification-1.patch
|-- nmon_13g.bbappend
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 27/35
Workflow - 7. Create an image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas the machine describes the hardware used and its capabilities, the image
is architecture agnostic and defines how the root filesystem is built, with what
packages
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas the machine describes the hardware used and its capabilities, the image
is architecture agnostic and defines how the root filesystem is built, with what
packages
▶ By default, several images are provided in Poky:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas the machine describes the hardware used and its capabilities, the image
is architecture agnostic and defines how the root filesystem is built, with what
packages
▶ By default, several images are provided in Poky:
▶ meta*/recipes*/images/*.bb
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas the machine describes the hardware used and its capabilities, the image
is architecture agnostic and defines how the root filesystem is built, with what
packages
▶ By default, several images are provided in Poky:
▶ meta*/recipes*/images/*.bb
▶ An image is no more than a recipe
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas the machine describes the hardware used and its capabilities, the image
is architecture agnostic and defines how the root filesystem is built, with what
packages
▶ By default, several images are provided in Poky:
▶ meta*/recipes*/images/*.bb
▶ An image is no more than a recipe
▶ To create an image, simply create a .bb in an images folder
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
Workflow - 7. Create an image
▶ An image is the top level recipe and is used alongside the machine definition
▶ Whereas the machine describes the hardware used and its capabilities, the image
is architecture agnostic and defines how the root filesystem is built, with what
packages
▶ By default, several images are provided in Poky:
▶ meta*/recipes*/images/*.bb
▶ An image is no more than a recipe
▶ To create an image, simply create a .bb in an images folder
mkdir -p recipes-core/images/
touch recipes-core/images/core-image-fe.bb
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
Workflow - 7. Create an image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
IMAGE_INSTALL List of packages to install in the generated image
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
IMAGE_INSTALL List of packages to install in the generated image
IMAGE_FSTYPES List of formats the OpenEmbedded build system will use to
create images
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
IMAGE_INSTALL List of packages to install in the generated image
IMAGE_FSTYPES List of formats the OpenEmbedded build system will use to
create images
✓ Create a minimal image to include it in others
⇒ Allows to have a minimal rootfs
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
Workflow - 7. Create an image
▶ Some special configuration variables are used to describe an image:
IMAGE_INSTALL List of packages to install in the generated image
IMAGE_FSTYPES List of formats the OpenEmbedded build system will use to
create images
✓ Create a minimal image to include it in others
⇒ Allows to have a minimal rootfs
✓ Create different images according to your needs: image-minimal, image-dev,
image-x11, image-qt5, etc
⇒ Install only what you really need for your board.
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
Workflow - 7. Create an image
recipes-core/images/core-image-fe.bb
inherit core-image
DESCRIPTION = "A small image to boot a device, created for Embedded Recipes"
LICENSE = "MIT"
IMAGE_FSTYPES = "tar.bz2 ext4"
IMAGE_INSTALL = "packagegroup-core-boot 
nmon 
helloworld 
"
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 30/35
Workflow - 8. Create a machine
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
Workflow - 8. Create a machine
▶ A machine describes your hardware
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
▶ Contains configuration variables related to the architecture, to machine’s features
and to customize the kernel image or the filesystems used.
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
▶ Contains configuration variables related to the architecture, to machine’s features
and to customize the kernel image or the filesystems used.
TARGET_ARCH : The architecture of the device being built
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
▶ Contains configuration variables related to the architecture, to machine’s features
and to customize the kernel image or the filesystems used.
TARGET_ARCH : The architecture of the device being built
PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
▶ Contains configuration variables related to the architecture, to machine’s features
and to customize the kernel image or the filesystems used.
TARGET_ARCH : The architecture of the device being built
PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use
SERIAL_CONSOLE : Speed and device for the serial console to attach. Passed
to the kernel as the console parameter, e.g. 115200 ttyS0
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
▶ Contains configuration variables related to the architecture, to machine’s features
and to customize the kernel image or the filesystems used.
TARGET_ARCH : The architecture of the device being built
PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use
SERIAL_CONSOLE : Speed and device for the serial console to attach. Passed
to the kernel as the console parameter, e.g. 115200 ttyS0
KERNEL_IMAGETYPE : The type of kernel image to build, e.g. zImage
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
Workflow - 8. Create a machine
▶ A machine describes your hardware
▶ Stored under meta-<bsp_name>/conf/machine/*.conf
▶ The file name corresponds to the value set in the MACHINE variable
meta-ti/conf/machine/beaglebone.conf
MACHINE = "beaglebone"
▶ Contains configuration variables related to the architecture, to machine’s features
and to customize the kernel image or the filesystems used.
TARGET_ARCH : The architecture of the device being built
PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use
SERIAL_CONSOLE : Speed and device for the serial console to attach. Passed
to the kernel as the console parameter, e.g. 115200 ttyS0
KERNEL_IMAGETYPE : The type of kernel image to build, e.g. zImage
✓ Describe your machine in a README file
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
Workflow - 8. Create a machine
conf/machine/fe-machine.conf
require conf/machine/include/soc-family.inc
require conf/machine/include/tune-cortexa5.inc
TARGET_ARCH = "arm"
PREFERRED_PROVIDER_virtual/kernel ?= "linux-at91"
PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-at91"
KERNEL_IMAGETYPE = "zImage"
KERNEL_DEVICETREE = "at91-sama5d3_xplained.dtb"
SERIAL_CONSOLE ?= "115200 ttyS0"
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 32/35
Conclusion
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 33/35
Embedded Recipes Conference - 2017
Thank you for listening!
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 34/35
Questions?
Mylène Josserand
mylene@free-electrons.com
Slides under CC-BY-SA 3.0
http://free-electrons.com/pub/conferences/2017/embedded-recipes/josserand-introduction-to-yocto-
project/
Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 35/35

Weitere ähnliche Inhalte

Was ist angesagt?

LCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platform
Linaro
 

Was ist angesagt? (20)

U-Boot presentation 2013
U-Boot presentation  2013U-Boot presentation  2013
U-Boot presentation 2013
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
 
Embedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernelEmbedded Linux Kernel - Build your custom kernel
Embedded Linux Kernel - Build your custom kernel
 
Spi drivers
Spi driversSpi drivers
Spi drivers
 
Run Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using YoctoRun Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using Yocto
 
New Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using TracingNew Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using Tracing
 
The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Project
 
Luca Ceresoli - Buildroot vs Yocto: Differences for Your Daily Job
Luca Ceresoli - Buildroot vs Yocto: Differences for Your Daily JobLuca Ceresoli - Buildroot vs Yocto: Differences for Your Daily Job
Luca Ceresoli - Buildroot vs Yocto: Differences for Your Daily Job
 
Linux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKBLinux Kernel Booting Process (1) - For NLKB
Linux Kernel Booting Process (1) - For NLKB
 
Embedded linux network device driver development
Embedded linux network device driver developmentEmbedded linux network device driver development
Embedded linux network device driver development
 
Hands-on ethernet driver
Hands-on ethernet driverHands-on ethernet driver
Hands-on ethernet driver
 
Basic Linux Internals
Basic Linux InternalsBasic Linux Internals
Basic Linux Internals
 
Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)
 
Linux Initialization Process (1)
Linux Initialization Process (1)Linux Initialization Process (1)
Linux Initialization Process (1)
 
The Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageThe Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast Storage
 
Part 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingPart 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module Programming
 
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
Diving into SWUpdate: adding new platform support in 30minutes with Yocto/OE !
 
Slab Allocator in Linux Kernel
Slab Allocator in Linux KernelSlab Allocator in Linux Kernel
Slab Allocator in Linux Kernel
 
Introduction to Modern U-Boot
Introduction to Modern U-BootIntroduction to Modern U-Boot
Introduction to Modern U-Boot
 
LCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platformLCU14 302- How to port OP-TEE to another platform
LCU14 302- How to port OP-TEE to another platform
 

Ähnlich wie Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène Josserand

Dd13.2013.milano.open ntf
Dd13.2013.milano.open ntfDd13.2013.milano.open ntf
Dd13.2013.milano.open ntf
Ulrich Krause
 

Ähnlich wie Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène Josserand (20)

Android slides
Android slidesAndroid slides
Android slides
 
Linux Kernel and Driver Development Training
Linux Kernel and Driver Development TrainingLinux Kernel and Driver Development Training
Linux Kernel and Driver Development Training
 
Embedded linux system development (slides)
Embedded linux system development (slides)Embedded linux system development (slides)
Embedded linux system development (slides)
 
Getting Started with Buildroot
Getting Started with BuildrootGetting Started with Buildroot
Getting Started with Buildroot
 
Kernel Recipes 2014 - Supporting a new ARM platform: the Allwinner example
Kernel Recipes 2014 - Supporting a new ARM platform: the Allwinner exampleKernel Recipes 2014 - Supporting a new ARM platform: the Allwinner example
Kernel Recipes 2014 - Supporting a new ARM platform: the Allwinner example
 
Kernel Recipes 2013 - Easy rootfs using Buildroot
Kernel Recipes 2013 - Easy rootfs using BuildrootKernel Recipes 2013 - Easy rootfs using Buildroot
Kernel Recipes 2013 - Easy rootfs using Buildroot
 
Embedded Linux Build Systems - Texas Linux Fest 2018
Embedded Linux Build Systems - Texas Linux Fest 2018Embedded Linux Build Systems - Texas Linux Fest 2018
Embedded Linux Build Systems - Texas Linux Fest 2018
 
Embedded Linux primer
Embedded Linux primerEmbedded Linux primer
Embedded Linux primer
 
The Latest and Greatest from OpenNTF and the IBM Social Business Toolkit, #dd13
The Latest and Greatest from OpenNTF and the IBM Social Business Toolkit, #dd13The Latest and Greatest from OpenNTF and the IBM Social Business Toolkit, #dd13
The Latest and Greatest from OpenNTF and the IBM Social Business Toolkit, #dd13
 
Dd13.2013.milano.open ntf
Dd13.2013.milano.open ntfDd13.2013.milano.open ntf
Dd13.2013.milano.open ntf
 
Embedded linux build systems
Embedded linux build systems  Embedded linux build systems
Embedded linux build systems
 
Introduction to FOSS world
Introduction to FOSS worldIntroduction to FOSS world
Introduction to FOSS world
 
BITS: Introduction to linux, distributions and installation
BITS: Introduction to linux, distributions and installationBITS: Introduction to linux, distributions and installation
BITS: Introduction to linux, distributions and installation
 
[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework[Webinar] An Introduction to the Yocto Embedded Framework
[Webinar] An Introduction to the Yocto Embedded Framework
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020
 
IoT Prototyping using BBB and Debian
IoT Prototyping using BBB and DebianIoT Prototyping using BBB and Debian
IoT Prototyping using BBB and Debian
 
DEVASC_Module_1.pdf
DEVASC_Module_1.pdfDEVASC_Module_1.pdf
DEVASC_Module_1.pdf
 
Universal Userland
Universal UserlandUniversal Userland
Universal Userland
 
Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)Vimeo and Open Source (SMPTE Forum 2015)
Vimeo and Open Source (SMPTE Forum 2015)
 
Forget about-e committees
Forget about-e committeesForget about-e committees
Forget about-e committees
 

Mehr von Anne Nicolas

Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Anne Nicolas
 

Mehr von Anne Nicolas (20)

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
 

Kürzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Kürzlich hochgeladen (20)

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

Embedded Recipes 2017 - Introduction to Yocto Project/OpenEmbedded - Mylène Josserand

  • 1. Embedded Recipes Conference - 2017 Introduction to the Yocto Project / OpenEmbedded-core Mylène Josserand Free Electrons mylene@free-electrons.com Embedded Linux Experts Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 1/35
  • 2. Mylène Josserand ▶ Embedded Linux engineer at Free Electrons since 2016 ▶ Embedded Linux expertise ▶ Development, consulting and training around the Yocto Project ▶ One of the authors of Free Electrons’ Yocto Project / OpenEmbedded training materials. ▶ Kernel contributor: audio driver, touchscreen, RTC and more to come! Embedded Linux Experts Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 2/35
  • 3. Introduction ▶ In this talk, we will: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  • 4. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  • 5. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system ▶ How the Yocto Project / OpenEmbedded core are structured Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  • 6. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system ▶ How the Yocto Project / OpenEmbedded core are structured ▶ How we can use it Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  • 7. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system ▶ How the Yocto Project / OpenEmbedded core are structured ▶ How we can use it ▶ How we can update it to fit our needs Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  • 8. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system ▶ How the Yocto Project / OpenEmbedded core are structured ▶ How we can use it ▶ How we can update it to fit our needs ▶ Give some good practices to start using the Yocto Project correctly Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  • 9. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system ▶ How the Yocto Project / OpenEmbedded core are structured ▶ How we can use it ▶ How we can update it to fit our needs ▶ Give some good practices to start using the Yocto Project correctly ▶ Allows to customize many things: it is easy to do things the wrong way Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  • 10. Introduction ▶ In this talk, we will: ▶ Understand why we should use a build system ▶ How the Yocto Project / OpenEmbedded core are structured ▶ How we can use it ▶ How we can update it to fit our needs ▶ Give some good practices to start using the Yocto Project correctly ▶ Allows to customize many things: it is easy to do things the wrong way ▶ When you see a ✓, it means it is a good practice! Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 3/35
  • 11. Why use a build system? Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
  • 12. Why use a build system? ▶ In the Embedded world, we have many constraints Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
  • 13. Why use a build system? ▶ In the Embedded world, we have many constraints ▶ Nice to reduce the system to a minimal one + add our custom application Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
  • 14. Why use a build system? ▶ In the Embedded world, we have many constraints ▶ Nice to reduce the system to a minimal one + add our custom application ▶ A build system will automate the creation of the system in a reproducible way Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
  • 15. Why use a build system? ▶ In the Embedded world, we have many constraints ▶ Nice to reduce the system to a minimal one + add our custom application ▶ A build system will automate the creation of the system in a reproducible way ▶ Integration means packaging applications to create a final image Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 4/35
  • 16. System integration: several possibilities ▶ Building everything manually: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 17. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 18. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 19. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 20. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 21. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 22. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size) Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 23. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 24. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 25. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 26. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures ▶ Build systems (Buildroot, the Yocto Project, etc): Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 27. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures ▶ Build systems (Buildroot, the Yocto Project, etc): ⊗ Not as easy as a binary distribution Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 28. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures ▶ Build systems (Buildroot, the Yocto Project, etc): ⊗ Not as easy as a binary distribution⊕ Nearly full flexibility Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 29. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures ▶ Build systems (Buildroot, the Yocto Project, etc): ⊗ Not as easy as a binary distribution⊕ Nearly full flexibility⊕ Built from source: customization and optimization are easy Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 30. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures ▶ Build systems (Buildroot, the Yocto Project, etc): ⊗ Not as easy as a binary distribution⊕ Nearly full flexibility⊕ Built from source: customization and optimization are easy⊕ Fully reproducible Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 31. System integration: several possibilities ▶ Building everything manually: ⊕ Full flexibility⊗ Dependency hell⊗ Lack of reproducibility ▶ Binary distribution (Debian, Ubuntu, Fedora, etc): ⊕ Easy to create and extend⊗ Hard to customize and optimize (boot time, size)⊗ Hard to rebuild from source⊗ Native-compilation⊗ Not available for all architectures ▶ Build systems (Buildroot, the Yocto Project, etc): ⊗ Not as easy as a binary distribution⊕ Nearly full flexibility⊕ Built from source: customization and optimization are easy⊕ Fully reproducible⊕ Cross-compilation Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 5/35
  • 32. Representation in the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 33. Representation in the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 34. Representation in the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 35. Representation in the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 36. Representation in the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 37. Representation in the Yocto Project ▶ Common tasks defined in OpenEmbedded core Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 38. Representation in the Yocto Project ▶ Common tasks defined in OpenEmbedded core ▶ Many recipes availables for many applications: organized in layers Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 39. Representation in the Yocto Project ▶ Common tasks defined in OpenEmbedded core ▶ Many recipes availables for many applications: organized in layers ▶ Allow to build custom embedded Linux-based systems Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 40. Representation in the Yocto Project ▶ Common tasks defined in OpenEmbedded core ▶ Many recipes availables for many applications: organized in layers ▶ Allow to build custom embedded Linux-based systems ⇒ This is the aim of the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 6/35
  • 41. OpenEmbedded core & Poky Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  • 42. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  • 43. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  • 44. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  • 45. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  • 46. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  • 47. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU ▶ Reference distribution of the Yocto Project Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  • 48. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU ▶ Reference distribution of the Yocto Project ▶ Contains everything you need to start a project: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  • 49. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU ▶ Reference distribution of the Yocto Project ▶ Contains everything you need to start a project: ▶ OpenEmbedded-core Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  • 50. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU ▶ Reference distribution of the Yocto Project ▶ Contains everything you need to start a project: ▶ OpenEmbedded-core ▶ Bitbake Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  • 51. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU ▶ Reference distribution of the Yocto Project ▶ Contains everything you need to start a project: ▶ OpenEmbedded-core ▶ Bitbake ▶ Additional layers Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  • 52. OpenEmbedded core & Poky ▶ Co-maintained by the Yocto Project and OpenEmbedded Project ▶ Set of base layer with recipes and classes ▶ It is the core of all the magic ▶ It supports the ARM, MIPS (32 and 64 bits), PowerPC and x86 (32 and 64 bits) architectures + QEMU ▶ Reference distribution of the Yocto Project ▶ Contains everything you need to start a project: ▶ OpenEmbedded-core ▶ Bitbake ▶ Additional layers ▶ Also contains some useful tools to ease recipes and layers’ creation Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 7/35
  • 53. The Yocto Project / OpenEmbedded Core / Poky Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 8/35
  • 54. Workflow - General Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
  • 55. Workflow - General Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
  • 56. Workflow - General Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 9/35
  • 57. Workflow - Users/Developers actions Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 10/35
  • 58. Workflow - 1. Download Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
  • 59. Workflow - 1. Download ▶ Find which version you want to use: Figure: https://wiki.yoctoproject.org/wiki/Releases Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
  • 60. Workflow - 1. Download ▶ Find which version you want to use: Figure: https://wiki.yoctoproject.org/wiki/Releases ▶ Support level: Development, Stable, Community Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
  • 61. Workflow - 1. Download ▶ Find which version you want to use: Figure: https://wiki.yoctoproject.org/wiki/Releases ▶ Support level: Development, Stable, Community ▶ A codename corresponds to a Poky and Bitbake versions Pyro = Yocto Project v2.3 → Poky v17.0 & Bitbake v1.34 Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
  • 62. Workflow - 1. Download ▶ Find which version you want to use: Figure: https://wiki.yoctoproject.org/wiki/Releases ▶ Support level: Development, Stable, Community ▶ A codename corresponds to a Poky and Bitbake versions Pyro = Yocto Project v2.3 → Poky v17.0 & Bitbake v1.34 ▶ How to download: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
  • 63. Workflow - 1. Download ▶ Find which version you want to use: Figure: https://wiki.yoctoproject.org/wiki/Releases ▶ Support level: Development, Stable, Community ▶ A codename corresponds to a Poky and Bitbake versions Pyro = Yocto Project v2.3 → Poky v17.0 & Bitbake v1.34 ▶ How to download: git clone -b pyro git://git.yoctoproject.org/poky.git Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 11/35
  • 64. Workflow - 1. Download ▶ Layers are sets of recipes, matching a common purpose. To simplify things, they are just folders Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
  • 65. Workflow - 1. Download ▶ Layers are sets of recipes, matching a common purpose. To simplify things, they are just folders ▶ Look at existing layers Figure: http://layers.openembedded.org/layerindex/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
  • 66. Workflow - 1. Download ▶ Layers are sets of recipes, matching a common purpose. To simplify things, they are just folders ▶ Look at existing layers Figure: http://layers.openembedded.org/layerindex/ ▶ Download all other layers on same branch than Poky: Pyro Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
  • 67. Workflow - 1. Download ▶ Layers are sets of recipes, matching a common purpose. To simplify things, they are just folders ▶ Look at existing layers Figure: http://layers.openembedded.org/layerindex/ ▶ Download all other layers on same branch than Poky: Pyro ✓ Use existing layers before creating a new one ⇒ saves you time Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
  • 68. Workflow - 1. Download ▶ Layers are sets of recipes, matching a common purpose. To simplify things, they are just folders ▶ Look at existing layers Figure: http://layers.openembedded.org/layerindex/ ▶ Download all other layers on same branch than Poky: Pyro ✓ Use existing layers before creating a new one ⇒ saves you time ✓ DO NOT EDIT POKY/UPSTREAM LAYERS ⇒ complicates updates Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 12/35
  • 69. Workflow - 2. Configure the build Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  • 70. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  • 71. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  • 72. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env ▶ Will move you in a build folder Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  • 73. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env ▶ Will move you in a build folder ▶ Now, can run any commands Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  • 74. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env ▶ Will move you in a build folder ▶ Now, can run any commands ▶ All the local configurations are in the conf folder Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  • 75. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env ▶ Will move you in a build folder ▶ Now, can run any commands ▶ All the local configurations are in the conf folder build/ |-- conf |-- bblayers.conf |-- local.conf Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  • 76. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env ▶ Will move you in a build folder ▶ Now, can run any commands ▶ All the local configurations are in the conf folder build/ |-- conf |-- bblayers.conf |-- local.conf ▶ Edit your bblayers.conf with possible additional layers: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  • 77. Workflow - 2. Configure the build ▶ A script with all variables needed by Bitbake must be sourced: source oe-init-build-env ▶ Will move you in a build folder ▶ Now, can run any commands ▶ All the local configurations are in the conf folder build/ |-- conf |-- bblayers.conf |-- local.conf ▶ Edit your bblayers.conf with possible additional layers: BBLAYERS ?= " /home/mylene/yocto/poky/meta /home/mylene/yocto/poky/meta-poky /home/mylene/yocto/poky/meta-yocto-bsp /home/mylene/yocto/meta-freescale /home/mylene/yocto/meta-qt5 " Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 13/35
  • 78. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  • 79. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  • 80. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  • 81. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  • 82. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  • 83. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... ▶ meta-atmel: at91*, sama5d*, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  • 84. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... ▶ meta-atmel: at91*, sama5d*, ... ▶ DISTRO: Represents the top-level configuration that will apply to every build. It will include tools needed to use your hardware: compiler, libC, etc + some specific variables Look at conf/distro/ folders Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  • 85. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... ▶ meta-atmel: at91*, sama5d*, ... ▶ DISTRO: Represents the top-level configuration that will apply to every build. It will include tools needed to use your hardware: compiler, libC, etc + some specific variables Look at conf/distro/ folders ▶ poky: poky, poky-tiny, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  • 86. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... ▶ meta-atmel: at91*, sama5d*, ... ▶ DISTRO: Represents the top-level configuration that will apply to every build. It will include tools needed to use your hardware: compiler, libC, etc + some specific variables Look at conf/distro/ folders ▶ poky: poky, poky-tiny, ... ▶ meta-angstrom: angstrom Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  • 87. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... ▶ meta-atmel: at91*, sama5d*, ... ▶ DISTRO: Represents the top-level configuration that will apply to every build. It will include tools needed to use your hardware: compiler, libC, etc + some specific variables Look at conf/distro/ folders ▶ poky: poky, poky-tiny, ... ▶ meta-angstrom: angstrom ▶ Noticed that local.conf ⇒ only for the local workstation. Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  • 88. Workflow - 2. Configure the build ▶ Edit local.conf with your MACHINE and your DISTRO ▶ MACHINE: Describes your hardware. Can find it under specific layers: BSP layers. Look at conf/machine/ folders ▶ poky: beaglebone, x86, x86-64 ▶ meta-ti: beagleboard, pandaboard, ... ▶ meta-fsl-arm: imx23, imx28, imx6, imx7, ... ▶ meta-atmel: at91*, sama5d*, ... ▶ DISTRO: Represents the top-level configuration that will apply to every build. It will include tools needed to use your hardware: compiler, libC, etc + some specific variables Look at conf/distro/ folders ▶ poky: poky, poky-tiny, ... ▶ meta-angstrom: angstrom ▶ Noticed that local.conf ⇒ only for the local workstation. ✓ Avoid changes directly in local.conf (or only for test purposes, except for some variables such as MACHINE and DISTRO) Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 14/35
  • 89. Workflow - 3. Build an image Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
  • 90. Workflow - 3. Build an image ▶ What is an IMAGE? ⇒ Represents your root filesystem: all your applications, libraries, configuration files, ... Will find it under recipes-*/images/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
  • 91. Workflow - 3. Build an image ▶ What is an IMAGE? ⇒ Represents your root filesystem: all your applications, libraries, configuration files, ... Will find it under recipes-*/images/ ▶ Common images already exist in Poky: core-image-minimal, core-image-base, core-image-x11, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
  • 92. Workflow - 3. Build an image ▶ What is an IMAGE? ⇒ Represents your root filesystem: all your applications, libraries, configuration files, ... Will find it under recipes-*/images/ ▶ Common images already exist in Poky: core-image-minimal, core-image-base, core-image-x11, ... ▶ Build an existing image: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
  • 93. Workflow - 3. Build an image ▶ What is an IMAGE? ⇒ Represents your root filesystem: all your applications, libraries, configuration files, ... Will find it under recipes-*/images/ ▶ Common images already exist in Poky: core-image-minimal, core-image-base, core-image-x11, ... ▶ Build an existing image: bitbake core-image-minimal Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 15/35
  • 94. MACHINE/DISTRO/IMAGE: a little reminder Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  • 95. MACHINE/DISTRO/IMAGE: a little reminder ▶ Machine: It represents your hardware conf/machine/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  • 96. MACHINE/DISTRO/IMAGE: a little reminder ▶ Machine: It represents your hardware conf/machine/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  • 97. MACHINE/DISTRO/IMAGE: a little reminder ▶ Machine: It represents your hardware conf/machine/ ▶ Distro: Represents the top-level configuration that will apply on every build conf/distro/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  • 98. MACHINE/DISTRO/IMAGE: a little reminder ▶ Machine: It represents your hardware conf/machine/ ▶ Distro: Represents the top-level configuration that will apply on every build conf/distro/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  • 99. MACHINE/DISTRO/IMAGE: a little reminder ▶ Machine: It represents your hardware conf/machine/ ▶ Distro: Represents the top-level configuration that will apply on every build conf/distro/ ▶ Image: It represents your root filesystem itself: all your applications, libraries, configuration’s files, etc recipes-core/images Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  • 100. MACHINE/DISTRO/IMAGE: a little reminder ▶ Machine: It represents your hardware conf/machine/ ▶ Distro: Represents the top-level configuration that will apply on every build conf/distro/ ▶ Image: It represents your root filesystem itself: all your applications, libraries, configuration’s files, etc recipes-core/images Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 16/35
  • 101. Workflow - Developer Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 17/35
  • 102. Workflow - 4. Create a layer Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  • 103. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  • 104. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  • 105. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS ▶ To be able to do that, we will create our own layer that will host all our modifications/applications Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  • 106. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS ▶ To be able to do that, we will create our own layer that will host all our modifications/applications ▶ Poky provides a tool to create layers: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  • 107. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS ▶ To be able to do that, we will create our own layer that will host all our modifications/applications ▶ Poky provides a tool to create layers: yocto-layer create <layer_name> -o <dest_dir> Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  • 108. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS ▶ To be able to do that, we will create our own layer that will host all our modifications/applications ▶ Poky provides a tool to create layers: yocto-layer create <layer_name> -o <dest_dir> ✓ The layer’s name must be meta-* (done automatically using yocto-layer tool) Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  • 109. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS ▶ To be able to do that, we will create our own layer that will host all our modifications/applications ▶ Poky provides a tool to create layers: yocto-layer create <layer_name> -o <dest_dir> ✓ The layer’s name must be meta-* (done automatically using yocto-layer tool) ✓ Avoid uppercase and funny/long names Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  • 110. Workflow - 4. Create a layer ▶ You may have custom hardware, need to update recipes from upstream layers, integrate your own application, etc ▶ Already said before: DO NOT EDIT POKY/UPSTREAM LAYERS ▶ To be able to do that, we will create our own layer that will host all our modifications/applications ▶ Poky provides a tool to create layers: yocto-layer create <layer_name> -o <dest_dir> ✓ The layer’s name must be meta-* (done automatically using yocto-layer tool) ✓ Avoid uppercase and funny/long names ✓ If you have different projects with common parts, try to create two layers ⇒ Can re-use some parts Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 18/35
  • 111. Workflow - 5. Create a recipe Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  • 112. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  • 113. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  • 114. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources ▶ configure it Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  • 115. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources ▶ configure it ▶ compile it Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  • 116. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources ▶ configure it ▶ compile it ▶ install it Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  • 117. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources ▶ configure it ▶ compile it ▶ install it ▶ It handles all the dependencies for you. Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  • 118. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources ▶ configure it ▶ compile it ▶ install it ▶ It handles all the dependencies for you. ▶ Many common tasks are already defined by OpenEmbedded-core Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  • 119. Workflow - 5. Create a recipe ▶ A recipe is a file describing tasks for an application to: ▶ retrieve its sources ▶ configure it ▶ compile it ▶ install it ▶ It handles all the dependencies for you. ▶ Many common tasks are already defined by OpenEmbedded-core ▶ Organized in folders with the same purpose (recipes-core, recipes-bsp, recipes-kernel, recipes-devtool, recipes-support, ...) and a sub-folder with the application’s name Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 19/35
  • 120. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  • 121. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands ▶ The format of a recipe file name is <application-name>_<version>.bb Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  • 122. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands ▶ The format of a recipe file name is <application-name>_<version>.bb ▶ A recipe can be divided in three parts: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  • 123. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands ▶ The format of a recipe file name is <application-name>_<version>.bb ▶ A recipe can be divided in three parts: ▶ The header: what/who. Description of the application Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  • 124. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands ▶ The format of a recipe file name is <application-name>_<version>.bb ▶ A recipe can be divided in three parts: ▶ The header: what/who. Description of the application ▶ The sources: where. Can be tarballs, remote repository, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  • 125. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands ▶ The format of a recipe file name is <application-name>_<version>.bb ▶ A recipe can be divided in three parts: ▶ The header: what/who. Description of the application ▶ The sources: where. Can be tarballs, remote repository, ... ▶ The tasks: how. How to proceed with the application’s sources Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  • 126. Workflow - 5. Create a recipe ▶ To create a recipe, you have to create a .bb file. It is the format that bitbake understands ▶ The format of a recipe file name is <application-name>_<version>.bb ▶ A recipe can be divided in three parts: ▶ The header: what/who. Description of the application ▶ The sources: where. Can be tarballs, remote repository, ... ▶ The tasks: how. How to proceed with the application’s sources ▶ Classes are available for tasks commonly used: kernel, CMake, autotools, ... Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 20/35
  • 127. Workflow - 5. Create a recipe recipes-support/nmon/nmon_13g.bb SUMMARY = "nmon performance monitor" HOMEPAGE = "http://nmon.sf.net" SECTION = "console/utils" LICENSE = "GPLv3" LIC_FILES_CHKSUM = "file://${WORKDIR}/Documentation.txt;md5=dbb13658cf55d687c4f2ff771a696d4a" DEPENDS = "ncurses" SRC_URI = "${SOURCEFORGE_MIRROR}/nmon/lmon13g.c;name=lmon ${SOURCEFORGE_MIRROR}/nmon/Documentation.txt;name=doc " SRC_URI[lmon.md5sum] = "b1b8e6c0123ad232394991f2d4f40494" SRC_URI[lmon.sha256sum] = "456ab2a342b31d1a352d0d940af5962fa65a12ae8757ff73e6e73210832ae8b5" SRC_URI[doc.md5sum] = "dbb13658cf55d687c4f2ff771a696d4a" SRC_URI[doc.sha256sum] = "1f7f83afe62a7210be5e83cd24157adb854c14599efe0b377a7ecca933869278" CFLAGS += "-D JFS -D GETUSER -Wall -D LARGEMEM" LDFLAGS += "-ltinfo -lncursesw" do_compile() { ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/lmon13g.c -o nmon } do_install() { install -d ${D}${bindir} install -m 0755 nmon ${D}${bindir} } Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 21/35
  • 128. Workflow - 5. Create a recipe recipes-support/nmon/nmon_13g.bb | SUMMARY = "nmon performance monitor" | HOMEPAGE = "http://nmon.sf.net" | SECTION = "console/utils" "Header" | LICENSE = "GPLv3" | LIC_FILES_CHKSUM = "file://${WORKDIR}/Documentation.txt;md5=dbb13658cf55d687c4f2ff771a696d4a" | DEPENDS = "ncurses" | SRC_URI = "${SOURCEFORGE_MIRROR}/nmon/lmon13g.c;name=lmon | ${SOURCEFORGE_MIRROR}/nmon/Documentation.txt;name=doc | " | SRC_URI[lmon.md5sum] = "b1b8e6c0123ad232394991f2d4f40494" "Source" | SRC_URI[lmon.sha256sum] = "456ab2a342b31d1a352d0d940af5962fa65a12ae8757ff73e6e73210832ae8b5" | SRC_URI[doc.md5sum] = "dbb13658cf55d687c4f2ff771a696d4a" | SRC_URI[doc.sha256sum] = "1f7f83afe62a7210be5e83cd24157adb854c14599efe0b377a7ecca933869278" | CFLAGS += "-D JFS -D GETUSER -Wall -D LARGEMEM" | LDFLAGS += "-ltinfo -lncursesw" | | do_compile() { | ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/lmon13g.c -o nmon "Tasks" | } | | do_install() { | install -d ${D}${bindir} | install -m 0755 nmon ${D}${bindir} | } Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 22/35
  • 129. Workflow - 5. Create a recipe recipes-example/helloworld/helloworld_1.0.bb DESCRIPTION = "Print a friendly, customizable greeting" HOMEPAGE = "https://www.gnu.org/software/hello/" PRIORITY = "optional" SECTION = "examples" LICENSE = "GPLv3" SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.gz" SRC_URI[md5sum] = "67607d2616a0faaf5bc94c59dca7c3cb" SRC_URI[sha256sum] = "ecbb7a2214196c57ff9340aa71458e1559abd38f6d8d169666846935df191ea7" LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" inherit autotools Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 23/35
  • 130. Workflow - 5. Create a recipe recipes-example/helloworld/helloworld_1.0.bb | DESCRIPTION = "Print a friendly, customizable greeting" | HOMEPAGE = "https://www.gnu.org/software/hello/" "Header" | PRIORITY = "optional" | SECTION = "examples" | LICENSE = "GPLv3" | SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.gz" "Source" | SRC_URI[md5sum] = "67607d2616a0faaf5bc94c59dca7c3cb" | SRC_URI[sha256sum] = "ecbb7a2214196c57ff9340aa71458e1559abd38f6d8d169666846935df191ea7" | LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" "Tasks" | inherit autotools Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 24/35
  • 131. Workflow - 5. Create a recipe ✓ Always use remote repositories to host your application sources ⇒ Makes development quicker + keep history Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
  • 132. Workflow - 5. Create a recipe ✓ Always use remote repositories to host your application sources ⇒ Makes development quicker + keep history ✓ Do not put application sources in your layer directly! ⇒ Application development ̸= Application Integration Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
  • 133. Workflow - 5. Create a recipe ✓ Always use remote repositories to host your application sources ⇒ Makes development quicker + keep history ✓ Do not put application sources in your layer directly! ⇒ Application development ̸= Application Integration ✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/... ⇒ Find recipes quicker Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
  • 134. Workflow - 5. Create a recipe ✓ Always use remote repositories to host your application sources ⇒ Makes development quicker + keep history ✓ Do not put application sources in your layer directly! ⇒ Application development ̸= Application Integration ✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/... ⇒ Find recipes quicker ✓ Keep the headers / sources / tasks organization in the recipe ⇒ All the recipes have the same content organization Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
  • 135. Workflow - 5. Create a recipe ✓ Always use remote repositories to host your application sources ⇒ Makes development quicker + keep history ✓ Do not put application sources in your layer directly! ⇒ Application development ̸= Application Integration ✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/... ⇒ Find recipes quicker ✓ Keep the headers / sources / tasks organization in the recipe ⇒ All the recipes have the same content organization ✓ Use/Create include files when possible ⇒ Can extend other versions easily Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
  • 136. Workflow - 5. Create a recipe ✓ Always use remote repositories to host your application sources ⇒ Makes development quicker + keep history ✓ Do not put application sources in your layer directly! ⇒ Application development ̸= Application Integration ✓ Keep the same folder organization: recipes-core/recipes-bsp/recipes-devtools/... ⇒ Find recipes quicker ✓ Keep the headers / sources / tasks organization in the recipe ⇒ All the recipes have the same content organization ✓ Use/Create include files when possible ⇒ Can extend other versions easily ✓ Know how to compile the application manually before integrating it in a recipe ⇒ Saves you time Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 25/35
  • 137. Workflow - 6. Extend a recipe Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  • 138. Workflow - 6. Extend a recipe ▶ It is a good practice not to modify recipes available in Poky. Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  • 139. Workflow - 6. Extend a recipe ▶ It is a good practice not to modify recipes available in Poky. ▶ But it is sometimes useful to modify an existing recipe Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  • 140. Workflow - 6. Extend a recipe ▶ It is a good practice not to modify recipes available in Poky. ▶ But it is sometimes useful to modify an existing recipe ▶ The BitBake build engine allows to modify a recipe by extending it Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  • 141. Workflow - 6. Extend a recipe ▶ It is a good practice not to modify recipes available in Poky. ▶ But it is sometimes useful to modify an existing recipe ▶ The BitBake build engine allows to modify a recipe by extending it ▶ The recipe extensions end in .bbappend Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  • 142. Workflow - 6. Extend a recipe ▶ It is a good practice not to modify recipes available in Poky. ▶ But it is sometimes useful to modify an existing recipe ▶ The BitBake build engine allows to modify a recipe by extending it ▶ The recipe extensions end in .bbappend ▶ Appended files must have the same root name as the recipe they extend example_0.1.bbappend applies to example_0.1.bb ⇒ version specific Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  • 143. Workflow - 6. Extend a recipe ▶ It is a good practice not to modify recipes available in Poky. ▶ But it is sometimes useful to modify an existing recipe ▶ The BitBake build engine allows to modify a recipe by extending it ▶ The recipe extensions end in .bbappend ▶ Appended files must have the same root name as the recipe they extend example_0.1.bbappend applies to example_0.1.bb ⇒ version specific ▶ If adding new files, you must prepend the FILESEXTRAPATHS variable with the path to files’ directory. Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 26/35
  • 144. Workflow - 6. Extend a recipe recipes-support/nmon/nmon_13g.bbappend FILESEXTRAPATHS_prepend := "${THISDIR}/files:" SRC_URI += "file://custom-modification-0.patch file://custom-modification-1.patch " do_install_append() { # Do something } . |--- conf | |-- layer.conf |--- recipes-support |--- nmon |-- files | |-- custom-modification-0.patch | |-- custom-modification-1.patch |-- nmon_13g.bbappend Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 27/35
  • 145. Workflow - 7. Create an image Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  • 146. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  • 147. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition ▶ Whereas the machine describes the hardware used and its capabilities, the image is architecture agnostic and defines how the root filesystem is built, with what packages Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  • 148. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition ▶ Whereas the machine describes the hardware used and its capabilities, the image is architecture agnostic and defines how the root filesystem is built, with what packages ▶ By default, several images are provided in Poky: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  • 149. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition ▶ Whereas the machine describes the hardware used and its capabilities, the image is architecture agnostic and defines how the root filesystem is built, with what packages ▶ By default, several images are provided in Poky: ▶ meta*/recipes*/images/*.bb Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  • 150. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition ▶ Whereas the machine describes the hardware used and its capabilities, the image is architecture agnostic and defines how the root filesystem is built, with what packages ▶ By default, several images are provided in Poky: ▶ meta*/recipes*/images/*.bb ▶ An image is no more than a recipe Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  • 151. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition ▶ Whereas the machine describes the hardware used and its capabilities, the image is architecture agnostic and defines how the root filesystem is built, with what packages ▶ By default, several images are provided in Poky: ▶ meta*/recipes*/images/*.bb ▶ An image is no more than a recipe ▶ To create an image, simply create a .bb in an images folder Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  • 152. Workflow - 7. Create an image ▶ An image is the top level recipe and is used alongside the machine definition ▶ Whereas the machine describes the hardware used and its capabilities, the image is architecture agnostic and defines how the root filesystem is built, with what packages ▶ By default, several images are provided in Poky: ▶ meta*/recipes*/images/*.bb ▶ An image is no more than a recipe ▶ To create an image, simply create a .bb in an images folder mkdir -p recipes-core/images/ touch recipes-core/images/core-image-fe.bb Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 28/35
  • 153. Workflow - 7. Create an image Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
  • 154. Workflow - 7. Create an image ▶ Some special configuration variables are used to describe an image: Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
  • 155. Workflow - 7. Create an image ▶ Some special configuration variables are used to describe an image: IMAGE_INSTALL List of packages to install in the generated image Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
  • 156. Workflow - 7. Create an image ▶ Some special configuration variables are used to describe an image: IMAGE_INSTALL List of packages to install in the generated image IMAGE_FSTYPES List of formats the OpenEmbedded build system will use to create images Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
  • 157. Workflow - 7. Create an image ▶ Some special configuration variables are used to describe an image: IMAGE_INSTALL List of packages to install in the generated image IMAGE_FSTYPES List of formats the OpenEmbedded build system will use to create images ✓ Create a minimal image to include it in others ⇒ Allows to have a minimal rootfs Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
  • 158. Workflow - 7. Create an image ▶ Some special configuration variables are used to describe an image: IMAGE_INSTALL List of packages to install in the generated image IMAGE_FSTYPES List of formats the OpenEmbedded build system will use to create images ✓ Create a minimal image to include it in others ⇒ Allows to have a minimal rootfs ✓ Create different images according to your needs: image-minimal, image-dev, image-x11, image-qt5, etc ⇒ Install only what you really need for your board. Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 29/35
  • 159. Workflow - 7. Create an image recipes-core/images/core-image-fe.bb inherit core-image DESCRIPTION = "A small image to boot a device, created for Embedded Recipes" LICENSE = "MIT" IMAGE_FSTYPES = "tar.bz2 ext4" IMAGE_INSTALL = "packagegroup-core-boot nmon helloworld " Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 30/35
  • 160. Workflow - 8. Create a machine Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  • 161. Workflow - 8. Create a machine ▶ A machine describes your hardware Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  • 162. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  • 163. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  • 164. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" ▶ Contains configuration variables related to the architecture, to machine’s features and to customize the kernel image or the filesystems used. Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  • 165. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" ▶ Contains configuration variables related to the architecture, to machine’s features and to customize the kernel image or the filesystems used. TARGET_ARCH : The architecture of the device being built Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  • 166. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" ▶ Contains configuration variables related to the architecture, to machine’s features and to customize the kernel image or the filesystems used. TARGET_ARCH : The architecture of the device being built PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  • 167. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" ▶ Contains configuration variables related to the architecture, to machine’s features and to customize the kernel image or the filesystems used. TARGET_ARCH : The architecture of the device being built PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use SERIAL_CONSOLE : Speed and device for the serial console to attach. Passed to the kernel as the console parameter, e.g. 115200 ttyS0 Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  • 168. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" ▶ Contains configuration variables related to the architecture, to machine’s features and to customize the kernel image or the filesystems used. TARGET_ARCH : The architecture of the device being built PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use SERIAL_CONSOLE : Speed and device for the serial console to attach. Passed to the kernel as the console parameter, e.g. 115200 ttyS0 KERNEL_IMAGETYPE : The type of kernel image to build, e.g. zImage Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  • 169. Workflow - 8. Create a machine ▶ A machine describes your hardware ▶ Stored under meta-<bsp_name>/conf/machine/*.conf ▶ The file name corresponds to the value set in the MACHINE variable meta-ti/conf/machine/beaglebone.conf MACHINE = "beaglebone" ▶ Contains configuration variables related to the architecture, to machine’s features and to customize the kernel image or the filesystems used. TARGET_ARCH : The architecture of the device being built PREFERRED_PROVIDER_virtual/kernel : The kernel recipe to use SERIAL_CONSOLE : Speed and device for the serial console to attach. Passed to the kernel as the console parameter, e.g. 115200 ttyS0 KERNEL_IMAGETYPE : The type of kernel image to build, e.g. zImage ✓ Describe your machine in a README file Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 31/35
  • 170. Workflow - 8. Create a machine conf/machine/fe-machine.conf require conf/machine/include/soc-family.inc require conf/machine/include/tune-cortexa5.inc TARGET_ARCH = "arm" PREFERRED_PROVIDER_virtual/kernel ?= "linux-at91" PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot-at91" KERNEL_IMAGETYPE = "zImage" KERNEL_DEVICETREE = "at91-sama5d3_xplained.dtb" SERIAL_CONSOLE ?= "115200 ttyS0" Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 32/35
  • 171. Conclusion Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 33/35
  • 172. Embedded Recipes Conference - 2017 Thank you for listening! Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 34/35
  • 173. Questions? Mylène Josserand mylene@free-electrons.com Slides under CC-BY-SA 3.0 http://free-electrons.com/pub/conferences/2017/embedded-recipes/josserand-introduction-to-yocto- project/ Free Electrons - Embedded Linux, kernel, drivers - Development, consulting, training and support. http://free-electrons.com 35/35