What Is Yocto
2025-Sep-17
In the past few weeks, I've been learning about the Yocto Project. Initially, I had a difficult time grasping the fundamentals. I spend hours watching videos, reading documentation, and asking LLM's for help. Now, after some time, I have a solid understanding of the basics. I think it would be valuable for everyone to have a concise reference document, so here we are.
The Yocto Project, otherwise known as Yocto, provides open-source tools, templates, and methods for developers to create custom Linux-based operating systems/images for embedded and IoT devices.
When I say images, think of Yocto images as like a Docker image. They are self-contained bundles of a filesystem and application. The difference is that it's the entire OS, not just a single process. You could say a Yocto image is a pre-packaged OS ready to run on a computer.
What does Yocto contain?
To understand Yocto, you need to be familiar with four components: Poky, Layers, Recipes, and BitBake.
Poky
To understand Poky, you have to know the history of Yocto. In 2003, developers created the OpenEmbedded project as a common build system and codebase for various devices. OpenEmbedded was unstable, so a company, OpenedHand, forked it to create a stable version. They called tehir stable version Poky Linux. In 2008, Intel bought OpenedHand (for reasons unrelated to Poky). Then, in 2010, Intel and the Linux Foundation created the Yocto Project, basing it on Poky Linux. Today, Poky remains a key component of Yocto, serving as its default reference distribution.
Layers
Layers are a core concept of the Yocto Project. They enable developers to structure metadata, which is a collection of files and data that describes how to build a customized Linux-based OS. There are three types of layers:
Recipes
Recipes are the foundational files for creating an application within a layer. There are two types of recipes to dsitinguish: software recipes and image recipes.
BitBake
BitBake was originally part of the OpenEmbedded project, inspired by the Portage package management system used by the Gentoo Linux distribution. In 2004, the OpenEmbedded project split into two distinct pieces:
I think of BitBake as a task scheduler, similar to make.
What's next?
Now that you understand the fundamentals of what the Yocto Project contains and does, I recommend you read my other blog on how to create a custom image for a specific board. After that, watch my video on how to make and run a custom image. I also recommend you take a look at the links below, as they are the ones I used for learning and, thus, for writing this blog post.
Getting Started with Yocto Project - Chris Simmonds - NDC TechTown 2022 Fundamentals of Embedded Linux - Chris Simmonds - NDC TechTown 2022 The Challenges of Embedded Linux - Chris Simmonds - NDC TechTown 2023 Bootlin - Embedded Linux and Kernel engineering The Yocto Project Documentation