The Yocto Project is an open source collaboration project that helps developers create custom Linux-based systems for embedded products, regardless of the hardware architecture. The project provides a flexible set of tools and a space where embedded developers worldwide can share technologies, software stacks, configurations and best practices which can be used to create tailored Linux images for embedded devices.

The Yocto Project combines, maintains and validates three key development elements:

  1. A set of integrated tools to make working with embedded Linux successful, including tools for automated building and testing, processes for board support and license compliance, and component information for custom Linux-based embedded operating systems
  2. A reference embedded distribution (called Poky)
  3. The OpenEmbedded build system, co-maintained with the OpenEmbedded Project


Key elements

Configuration files

Files that hold global definition of variables and hardware configuration information. They tell the build system what to build and put into the image to support a specific platform.


The most common form of metadata. A recipe will contain a list of settings and instructions for building packages (tasks) that are then used to build the binary image. A recipe describes where to get source from and which patches to apply. It also describes dependencies from libraries or other recipes and all configurations and compilation options. They are stored in layers.


They are a collection of related recipes that allow you to consolidate related metadata to customize and isolate information for multiple architecture build.

Layers are hierarchical to override previous specifications, you can include layers from Yocto Project and add your custom to customize or override them.


Meta-data is used to construct a Linux distro, contained in the files that the build system parses when building an image. In general, Metadata includes recipes, configuration files and other information referring to the build instructions. Metadata also includes commands and data used to versioning software, where it has been obtained from and data used to control build flow.

OpenEmbedded core is an importat set of validated metadata.

OpenEmbedded Core

oe-core is meta-data comprised of foundation recipes and classes that are meant to be common among many different systems. It is a subset of an original repository developed by the OpenEmbedded community that has been moved into a smaller core of continuosly validated and quality-assured set of recipes.


A reference embedded distribution that provide a base level functional distro that can be used as example to customize a distribution. Poky is useful to test and validate all the Yocto Project components.

Poky is not a final distro but a good starting point for customization. It is an integration layer on top of oe-core.


A scheduler and execution engine that parses instruction from recipes and configuration data. It creates a dependency tree to order the compilation and the scheduling of all task to create the final image. Bitbake is a make-like build tool.


The output of the build system used to create the final image.


A binary form of a Linux distribution (operating system) to be loaded onto a device. It can be delivered in several formats.