Overview
Everything you need to know to build your custom Linux system images for your own hardware. Learn how to create your own layers to reuse and override hardware vendor and community provided layers, just providing what is specific to your project.
In case you wish to support images for different targets, the Yocto Project will enable you to cleanly separate your hardware customizations, your distribution policies and the sets of applications you want to use.
The Yocto project also offers binary reproducibility, vulnerability analysis and Software Bill of Materials, and will also help you to develop your own recipes and debug the system.
Using progressive but challenging practical labs and varied techniques to make the learning always stimulating and fun, and above all to make it stick. At least 75% of the time is dedicated to practical activities. Learn by doing!
You may also be interested in taking our 1-day Yocto Project Overview Seminar first.
Free Training materials (CC-By-SA 4.0)
Target audience
- Engineers developing products based on embedded Linux.
- Field Application Engineers working for silicon and board manufacturers, developing and supporting Yocto Board Support Packages (BSP) for their customers.
- Team leaders and decision makers who want to understand the tools their teams are using and their possibilities.
- Hobbyists and students interested in developing their embedded Linux skills.
Expected benefits
- Reduced product development cost by leveraging features from the Yocto ecosystem: tooling, recipes for thousands or components, vulnerability assessments…
- Enjoy all the possibilities of your hardware and of the Linux kernel.
- Learn how to be independent from your BSP vendor.
- Enjoy up to 4 years of bug fix and vulnerability updates.
Description
Delivery | In-person (all continents) or online, public or private session |
Language | English or French |
Mix | 25% theory – 75% practical activities – Learn by doing! |
Duration | 4 days (in-person), 32 hours (online) |
Hardware | BeaglePlay board with TI Sitara AM625 SoC (ARM64) |
Yocto Project version | 5.0 (Scarthgap LTS) used in practical labs |
Prerequisites | Familiarity with the Linux command line – understanding low-level details about Embedded Linux will help but isn’t a strict requirement. |
Upcoming sessions
Trainer | Dates | Cost | Register |
Michael Opdenacker | Sep. 2-5, 9-12, Online 15:00 to 19:00 UTC+2 Seats left | 1,990 EUR 1, 2, 3 | ![]() |
Also available on-line or through private sessions worldwide. Ask us for a quote.
1 We want our training to be accessible to individuals around the world. If our standard rate is a barrier due to local income levels, please apply anyway — we’ll do our best to offer a suitable price.
2 Individuals (all countries, not paying through a company) are subject to + 20% V.A.T. However, we offer a discount on the base cost to cancel the impact of V.A.T. and keep the same total price. See also 1.
3 Only for French companies: + 20% V.A.T.
Available discounts
The below discounts can be combined, up to a limit of 400 EUR per participant.
- 200 EUR returning participant discount for any extra course taken by the same participant at most 12 months after another one.
- 200 EUR early bird discount for any registration at least 2 months before the session dates.
- 200 EUR extra participant discount for each participant from the same entity (same invoicing address) in addition to the first one.
If V.A.T. is applicable, it applies to the amounts before V.A.T.
Private sessions
This course can be taught in a private session anywhere in the world, either in your company’s premises or online.This offers more privacy and allows for customization options.

Agenda
Introduction
- Demo: Build an embedded Linux image for a different board (BeagleBone Black) and boot it.
- Learning techniques used in this course.
- Lab: environment setup.
- Introduction to embedded Linux — Differences with server / desktop systems.
- History of OpenEmbedded and the Yocto Project.
Roles of the various components: OpenEmbedded, Poky, Yocto. Yocto releases. - Lab: first build. Get the source code, configure it and build your first image for BeaglePlay.
- Learning from BitBake output: recipes and tasks, native recipes, versions and revisions, setscene tasks, shared state cache…
- Lab: First image boot. Prepare the board, flash the image (
bmaptool
), boot the board.
Getting Started

- Basic variable syntax and operations.
- Parsing and evaluation order.
- Checking variable values.
- Lab: basic BitBake variable operators.
- Lab: setting up networking — Host and board-site networking. Enabling a static IP address.
- Adding packages to an image
- Find recipes and layers providing them.
oe-pkgdata-util
script- Lab: adding packages to an image
- Demo: documentation — Yocto Project manuals walk through.
- Lab: build image for an emulated ARM64 machine.
Recipes
- BitBake recipes. Recipe header fields, licensing information, source fetching.
- Lab: create your first recipe.
- Adding patches and other files.
- Defining packages.
- Dependency fields. Per recipe sysroots.
- Lab: create a recipe for the MyMan ASCII game
- Modifying recipes —
bbappend
mechanism. - Lab: tweaking the Device Tree by overriding the standard U-Boot recipe.
- Virtual packages.
- Kernel recipes:
linux-yocto
, custom recipe withkernel.bbclass
, SoC or board vendor recipe. - Lab: switching to the mainline Linux kernel.
- Devtool: possibilities, workspace, typical workflows.
- Lab: Modify the MyMan recipe — Add joystick support to the code, compile and test changes directly, generate a patch.
- Variable overrides. Typical override issues.
- Lab: smarter kernel recipe, supporting multiple machines and configurations.
- Tasks details:
fetch
,configure
,PACKAGECONFIG
,compile
,install
,package_qa
- Techniques for debugging recipes

Layers
- BSP layers: U-Boot recipes, machine definitions, MACHINE_FEATURES.
- Lab: create a new machine — Eliminate settings in
local.conf
. - Images: image recipes, standard images, useful variables,
IMAGE_FEATURES
, package groups. - Building disk images
- Lab: create your own image — Move more settings from
local.conf
, add space to your partition. - Distro layers — The poky distro, what makes it unsuitable for production.
DISTRO_FEATURES
, toolchain options, init manager, include files. Create your own distro.- Lab: create your own distro: ditch Poky, switch to systemd, change login message…
- BSP vs Distro vs Image: what belongs where.
Yocto in Projects
- Binary distributions: package formats, add package-management to image, creating and using package feeds. Package PR value and PR server.
- Lab: Setting up a binary distribution. Build a new package and install it through an HTTP package feed.
- Addressing vulnerabilities: vulnerability checking, ignoring irrelevant vulnerabilities and applying patches to fix them.
- Lab: managing vulnerabilities. Reduce the vulnerability count, mark a vulnerability as ignored.
- Software Supply Chain — SBoM, SPDX, working with licenses
- Configuration management: Kas
- Lab: regenerate the whole lab project from a single Kas file.
- Yocto references: books, favorite manuals, other online resources, conferences and events. Getting involved.
- Lab: final challenge — Fix a broken multimedia player system with multiple types of bugs. When everything works, get codes to claim your completion certificate.
What is provided?
In-person public sessions | In-person private sessions | Online public sessions | |
---|---|---|---|
Electronic board and all its required accessories, for the duration of the course | ✅ | ✅ | ❌ |
Lunch, morning and afternoon breaks | ✅ | ❌ | ❌ |
Electronic copies of the lecture and practical lab materials. | ✅ | ✅ | ✅ |
Solutions to practical labs | ✅ | ✅ | ✅ |
Video recordings of the lectures from the trainer. | ❌ | ❌ | ✅ |
Electronic training certificate, after successful completion of the course, which can be shared on your LinkedIn profile and on other social media. | ✅ | ✅ | ✅ |
What’s special in our courses?
Majority of practical activities, representing at least 75% of learning time.
Short lectures only: sequences of theory never exceed 30 minutes, and are interleaved with quick or longer practice. Too long series of lectures are hard to digest, especially in an online setting.
Technical and teaching experience: courses taught by an industry veteran with more than 20 years of experience in embedded Linux and 30 years using and advocating for Free and Open Source Software.
See also: Why choose Root Commit courses?
FAQ
Q: Will I get solutions to the practical labs?
A: Yes, solutions for the files to create or modify are shared at the end of each lab.
Q: In-house sessions: can practical labs be run on the CPU that my project uses?
A: The Linux kernel and the Yocto Project try to offer the same mechanisms for all types of hardware, so most of what you learn on another platform should apply on other ones as well. However, bootloader and kernel settings can be platform specific, so it can help participants to gain practical experience on the hardware platform they will work on. So, porting our practical labs to different hardware should be possible, if you are ready to accept additional preparation costs.
See also our FAQ for all types of courses and our sustainability efforts.