"Poky" is the name of the Yocto Project®'s reference distribution.

You can use Poky to bootstrap your own distribution or as an example on how to customize your distribution. (Note that Poky does not contain binary files - it is a working example of how to build your own custom Linux distribution from source, complete with the build environment.)

What's in it?

As an Embedded Reference OS, Poky is a specification of the base functionality needed for a typical embedded system as well as components from the Yocto Project which will allow you to build Poky into a usable binary image.

  • The first is the BitBake tool which is the build system, task executor and scheduler.
  • The second group of components is metadata which includes configuration information of global definitions of variables, classes which define the encapsulation and inheritance of build logic, packaging, etc, and recipes which are the logical units of software/images to be built. Metadata included are OpenEmbedded-Core (OE-Core), Yocto Project-specific metadata (meta-yocto), and Yocto Project-specific BSP (meta-yocto-bsp).

It is validated with the build system and metadata

So technically Poky is a combined repository of BitBake, OpenEmbedded-Core, meta-yocto and documentation provided all together and known to work well together. Meta-yocto is intentionally small having some hardware reference BSPs (so tests can be made on real hardware) and a small amount of "distribution policy".

Poky's Release Schedule

Poky is a "complete" distro specification and is tested and put through QA, but it is not productizable in its current form. It has a regular, well established six-month release cycle releasing (under its own version number) occuring at the same time the new point release of the Master Yocto Project release occurs, typically spring and fall.

What's Poky's default configuration?

Poky's default configuration can provide a starting image footprint but can range from a shell-accessible minimal image all the way up to a Linux Standard Base-compliant image with a GNOME Mobile and Embedded (GMAE) based reference user interface called Sato. From these base image types, metadata layers can be added to extend functionality; layers can provide an additional software stack for an image type, add a board support package (BSP) for additional hardware or even represent a new image type.

Metadata is what changes Poky's configuration

One of the most powerful properties of Poky is that every aspect of a build is controlled by the metadata. Metadata can be loosely grouped into configuration files or package recipes. A recipe is a collection of non-executable metadata used by BitBake to set variables or define additional build-time tasks. A recipe contains fields such as the recipe description, the recipe version, the license of the package and the upstream source repository. It may also indicate that the build process uses autotools, make, distutils or any other build process, in which case the basic functionality can be defined by classes it inherits from the OE-Core layer's class definitions in ./meta/classes. Additional tasks can also be defined, as well as task prerequisites. BitBake also supports both _prepend and _append as a method of extending task functionality by injecting code indicated by using prepend or append suffix into the beginning or end of a task.