Yocto Glossary

For the most part this glossary is derived from Chapter 1 of my reference book.

What is Yocto?

The Yocto Project provides open-source, high-quality infrastructure and tools to help developers create their own custom Linux distributions for any hardware architecture, across multiple market segments.  The Yocto Project is intended to provide a helpful starting point for developers.

Yocto targets developers, not end-users, an important distinction if you are looking for a turn-key solution.  That said, if your hardware is supported by Yocto you can start with turn-key and add functionality to a known working baseline.  Yocto provides infrastructure and tools, in other words it provides a framework to pull together disjoint projects and meta-data to create a useful toolbox for embedded Linux developers.

Understanding Poky

Poky is the Yocto Project reference system and is composed of a collection of tools and metadata.  It is platform-independent and performs cross-compiling, using the Bitbake tool, OpenEmbedded Core, and a default set of metadata.  It provides the mechanism to build and combine thousands of distributed open source projects to form a fully customizable, complete, and coherent Linux software stack.

The key word above is platform-independent, in other words Poky doesn’t standalone, it requires assistance to build a BSP for a specific hardware platform.  Think of Poky as the base tool that everything in the Yocto toolbox is built on.  From the description it sounds like it takes care of providing the host-based cross toolchain required for any embedded Linux build.  Since most of the packages use autotools or some other packaging system, the host-based tools are far more involved than a simple compiler toolchain.

Using Bitbake

Bitbake is a task scheduler that parses Python and Shell Script mixed code.  The code parsed generates and runs tasks, which are basically a set of steps ordered according to the code’s dependencies.

In English and in the context of OpenEmbedded this is the meta-builder.  Each package, e.g. the Linux kernel, has its own build system, i.e. Makefile, and each package is dependent on other packages having been built for their use.  If package A uses autotools, then the autotools package has to be built before package A can be built.  Each buildable package has a Bitbake recipe (which is basically a shell script with reduced or specialized syntax).  The metadata specifies which recipes are included in the build and Bitbake parses all of these recipes ahead of time and creates a build-tree.  It then fires off the recipes in the correct order, doing parallel builds as possible.


The OpenEmbedded-Core metadata collection provides the engine of the Poky build tool.  It is designed to provide the core features and needs to be as clean as possible.  It provides support for five different processor architectures (ARM, x86, x86-64, PowerPC, MIPS and MIPS64), supporting only QEMU-emulated machines.

Based on this description I would expect to find all of the core host tools, e.g. cross toolchain and a base set of target packages with some generic BSP support targeting emulated machines.