Yocto Project

The Yocto Project is an open-source collaboration hosted by the Linux Foundation that provides tools, metadata, and a reference build system for creating custom Linux distributions for embedded targets. It is not itself a Linux distribution — it is a framework for building one from source, giving engineers full control over every package, kernel version, and configuration option in the final image.

Architecture

Yocto's build system is called BitBake with metadata organized in layers:

  • BitBake — task execution engine; parses recipe metadata, resolves dependencies, and runs tasks (fetch, unpack, patch, configure, compile, install, package) in a reproducible order
  • OpenEmbedded-Core (OE-Core) — the base layer (meta/) providing core recipes for the toolchain, libc, busybox, systemd, and thousands of packages
  • Layers (meta-*) — collections of recipes, configuration files, and patches; stacked in bblayers.conf; override lower layers for BSP customization
  • Recipes (.bb) — per-package build instructions: source URI, patches, do_configure, do_compile, do_install tasks, and packaging split
  • .bbappend — layer override files; add patches or change variables in a recipe without forking it
  • Distro configDISTRO variable selects a distribution policy file (init system, C library, feature set)
  • Image recipes — define the final rootfs contents; IMAGE_INSTALL controls which packages are included
  • SDK / eSDK — cross-compile toolchain and sysroot generated by bitbake -c populate_sdk; installed by the developer and used independently of the build host

Key directories in a Yocto workspace:

Path Purpose
conf/bblayers.conf Ordered list of active layers
conf/local.conf Machine, distro, parallelism, and local overrides
meta/ OE-Core base layer
meta-poky/ Poky reference distro layer
meta-yocto-bsp/ Reference BSP layer
tmp/deploy/images/ Built kernel, DTB, rootfs images
tmp/deploy/sdk/ Generated SDK installers

Embedded and Real-Time Use

  • BSP layers — silicon vendors (NXP, TI, Qualcomm, Renesas) provide meta-<vendor> layers with machine configs, U-Boot recipes, and kernel patches; drop the layer in, set MACHINE, and the build knows the target
  • Kernel customizationlinux-yocto recipe accepts SRC_URI += "file://my.cfg" config fragments and file://my.patch patches without forking the recipe
  • PREEMPT-RT — enabled via a kernel config fragment (CONFIG_PREEMPT_RT=y) added through a .bbappend on the kernel recipe
  • dm-verity / secure boot — image signing, read-only rootfs, and dm-verity block integrity are configured through distro and image variables; meta-security layer provides recipes for TPM, IMA, and AppArmor
  • OTA updatesmeta-swupdate and meta-mender layers add A/B partition update support; integrate with the image build to produce update artifacts alongside the base image
  • Minimal imagescore-image-minimal produces a ~5 MB rootfs; IMAGE_FEATURES and DISTRO_FEATURES trim init system, locale data, and debug symbols for production
  • Reproducible builds — Yocto's shared state cache (sstate-cache) and hash equivalence server enable bit-reproducible images; combined with a pinned layer manifest (kas or repo) for exact reproduction

Versioning and Long-Term Support

Yocto uses named releases aligned with an 18-month cadence. Even-numbered releases are LTS (2 years of maintenance).

Release Codename Status Notes
5.0 Scarthgap LTS EOL Apr 2028; current recommended LTS
4.0 Kirkstone LTS EOL Apr 2026
3.1 Dunfell LTS EOL Apr 2024 (EOL)
5.1 Styhead Stable Non-LTS

Upstream Contribution

Yocto contributions go to the relevant layer. OE-Core and Poky use mailing-list patch workflow (git send-email to openembedded-core@lists.openembedded.org). BSP and application layers typically use GitHub pull requests. Key tools: devtool (recipe development workflow), recipetool (recipe generation), oe-selftest (CI test suite), kas (layer and branch pinning).

Related Technologies

  • Linux Kernel — Yocto's linux-yocto recipe or vendor BSP recipe builds and packages the kernel; config fragments and patches are the primary customization mechanism
  • Buildroot — simpler alternative to Yocto; better for small, static images; lacks Yocto's package management, shared state, and SDK generation
  • MachineLinux — 32bitmicro's custom Linux distribution built on Yocto
  • U-Boot — most common bootloader target; Yocto's u-boot recipe handles cross-compilation and machine-specific config
  • Zephyr RTOS — not Yocto-built; occupies the MCU tier below Yocto's embedded Linux scope
Copyright © 32bitmicro, LLC 2024-2026