Skip to content

Yocto Project — Embedded Linux Distribution Engineering

A structured course for hardware and software engineers who need to build, own, and ship a custom embedded Linux—not just install one. The goal is clarity first: you should finish with a mental model that survives release renames and new boards.

Time investment (typical): 4–10 weeks part-time for Modules 0–6; full course including production topics 3–6 months alongside real hardware.

What you will be able to do

  • Explain how BitBake, recipes, layers, and images relate end-to-end.
  • Reproduce a build from metadata alone (team-ready, not "works on my laptop").
  • Add a package, patch a component, and ship a smaller, testable image.
  • Debug failures using logs and task graphs instead of guessing.
  • Know when Yocto is the right tool—and when Buildroot or a vendor BSP is faster.

Step-by-step lectures

Each module is a separate file under Lecture/ with labs and previous/next navigation. Work in order: Lecture-01 through Lecture-16.

# Topic Lecture
1 How to use this course Lecture-01.md
2 Module 0 — Prerequisites and host setup Lecture-02.md
3 Module 1 — What Yocto is (and is not) Lecture-03.md
4 Module 2 — Architecture in one picture Lecture-04.md
5 Module 3 — First successful build Lecture-05.md
6 Module 4 — Recipes: the atoms of the system Lecture-06.md
7 Module 5 — Layers: how metadata stays maintainable Lecture-07.md
8 Module 6 — Images, packages, and features Lecture-08.md
9 Module 7 — Kernel, bootloader, device tree Lecture-09.md
10 Module 8 — SDK and application workflow Lecture-10.md
11 Module 9 — Debugging builds like an engineer Lecture-11.md
12 Module 10 — Licenses, compliance, supply-chain Lecture-12.md
13 Module 11 — Performance, caching, and CI Lecture-13.md
14 Capstone projects Lecture-14.md
15 Glossary and quick reference Lecture-15.md
16 Further reading (links + maintainer tip) Lecture-16.md

All step-by-step content, labs, glossary, and external links live in the Lecture/ files above.

Pro tip: when documentation and the internet disagree, trust the docs matching your exact Yocto release branch—metadata syntax and variable names do evolve.