How the Yocto Project works
The Yocto Project is an open-source collaboration, hosted by the Linux Foundation since 2010, that provides the tools, metadata and processes to build a custom Linux operating system for an embedded device. It is not a Linux distribution you download and install. It is the kit you use to make your own.
With a general-purpose distribution such as Ubuntu or Debian, you start with a large prebuilt system and remove what you do not need. With Yocto, you start from nothing and describe what the device should contain: the target processor and board, the kernel and its configuration, the libraries, the services and your application. The build system then fetches the source code for every component, cross-compiles it for the target and assembles a bootable image.
The result is an operating system that holds only what the product needs, built the same way every time. That is why Yocto is common on industrial controllers, gateways, medical devices, vehicle systems and edge AI computers that ship in volume and stay in service for years.
The parts of a Yocto build
Yocto has its own vocabulary. Most of it describes how the build instructions are organised, so that hardware support, the distribution policy and your own software stay in separate, reusable pieces.
-
//
BitBake. The task engine at the centre of every build. It reads the metadata, works out the dependencies and runs the fetch, compile and packaging steps in parallel.
-
//
OpenEmbedded-Core (OE-Core). The shared base of recipes and classes for the core of a Linux system, maintained jointly with the OpenEmbedded community.
-
//
Recipes and layers. A recipe (a .bb file) says how to fetch, configure and build one piece of software. Recipes are grouped into layers, usually named meta-something, and a build stacks the layers it needs.
-
//
BSP layers and machine configuration. Board support layers from the silicon or board vendor add the bootloader, kernel, drivers and device tree for specific hardware, such as meta-intel for x86 or meta-tegra for NVIDIA Jetson.
-
//
Poky. The Yocto Project’s reference distribution: BitBake, OE-Core and example settings bundled as a starting point, rather than a product in its own right.
-
//
Outputs. A bootable image, a matching SDK for application developers, package feeds and, in current releases, a software bill of materials in SPDX format.
How Yocto compares with Ubuntu and Buildroot
Yocto is one of several ways to put Linux on an embedded device. The right choice depends on how many devices you will ship, how long they must be supported and how much in-house Linux experience you have.
| Approach | What you get | Image size and control | Updates in the field | Typical fit |
|---|---|---|---|---|
| Yocto Project | A distribution built from source for one device | Small; every package chosen | Whole-image updates, often A/B | Products shipped in volume with long lifecycles |
| Buildroot | A simple root filesystem built from source | Very small; simple configuration | Whole-image updates; no package manager | Small, single-purpose devices |
| Ubuntu or Debian | A prebuilt binary distribution | Large; trimmed by removing packages | Package updates with apt | Prototypes, low volumes, fast development |
| Ubuntu Core | A prebuilt, transactional distribution | Medium; apps packaged as snaps | Transactional updates with rollback | Connected devices needing managed updates |
Ubuntu is the quickest route to a working system, which is why most development kits ship with it. The cost is variability: packages change over time, so two devices updated on different days may not run identical software. Yocto takes longer to set up, but every device in a fleet runs the same validated image, and that image can be rebuilt exactly years later. Buildroot is simpler than Yocto and quick to learn, but it suits smaller, fixed devices better than a range of products sharing common layers.
Yocto on NVIDIA Jetson, x86 and Arm boards
Most processor vendors now publish Yocto support for their silicon. Intel maintains meta-intel for x86 boards, and Intel’s real-time and time-sensitive networking features are often delivered as Yocto layers on industrial PCs. NXP builds its official Linux releases with Yocto, so most NXP i.MX 8M boards list a Yocto BSP alongside Android or Debian.
On NVIDIA Jetson, the community meta-tegra layer from the OpenEmbedded for Tegra (OE4T) project has supported Jetson modules for years. With JetPack 7.2, NVIDIA made Yocto a supported operating system path for Jetson AGX Orin, Orin NX and Jetson Thor, alongside its Ubuntu-based Jetson Linux. Our article on JetPack 7.2 and Yocto on Jetson Orin covers what that changes for deployed fleets. Rugged Jetson computers such as the JCO-1000-ORN series already run JetPack 7.2, so the same hardware can carry either image.
Whatever the processor, a custom carrier board or added interface still needs its drivers and device tree in a BSP layer, so ask the board maker which Yocto release its layers support before you commit.
Releases, security and the Cyber Resilience Act
Yocto publishes a new release every six months, in April and October, and names each one. Every two years an April release becomes a long-term support (LTS) release, maintained with security and bug fixes for typically four years. Scarthgap (5.0, April 2024) and Wrynose (6.0, April 2026) are the current LTS lines, and most products should be built on one of them.
Security is now a main reason teams choose Yocto. Because every component is built from known source, a build can produce a licence manifest, a software bill of materials (SBOM) in SPDX format and a report of known vulnerabilities (CVEs) for the exact image you ship. In the EU, the Cyber Resilience Act requires manufacturers of most connected products to handle vulnerabilities and document their software components, and that applies to UK and US companies selling into the EU. In the US, federal software buyers increasingly ask suppliers for an SBOM. Yocto does not make a product compliant on its own, but it makes that evidence far easier to produce.
Quick answers on Yocto
The Yocto Project: common questions
What is Yocto used for?
Building custom embedded Linux images. It is used for devices that ship in volume and must run the same validated software for years, from industrial controllers and gateways to medical, automotive and edge AI systems.
Is Yocto an operating system?
No. Yocto is a set of build tools and metadata. The operating system is what you build with it, often described as Yocto Linux, and every product’s image is different.
Why use Yocto instead of Ubuntu?
For control and repeatability. Yocto gives a smaller image, an exact record of every component and identical software on every device. Ubuntu is faster to start with and has a larger choice of ready-built packages.
Is Yocto Linux real-time?
It can be. Yocto can build a kernel with the PREEMPT_RT patches, which have been part of the mainline Linux kernel since version 6.12. Hard real-time control usually still runs on a separate microcontroller or real-time core.
How long does a Yocto build take?
Hours the first time, minutes afterwards. A first full build typically takes one or more hours and tens of gigabytes of disk space. The shared-state cache then reuses unchanged results, so later builds are much quicker.
We supply our Jetson and industrial computers configured and imaged as standard. Tell us whether your fleet runs Ubuntu or Yocto, and we will match the hardware to a board support package that suits your release.