YoavKlein
YoavKlein

Reputation: 2703

Yocto, OpenEmbedded, Poky... Sanity check

I'm expriencing a great confusion about the threesom of terms: Yocto, OpenEmbedded and Poky. I'll quote some quotes from the documentation, note what i understand and ask some questions along:

What is Yocto?
I'll start with trying to understand what exactly is the Yocto Project. This is from the first paragraph of the Yocto Project Overview and Concepts Manual:

The Yocto Project is an open source collaboration project that helps developers create custom Linux-based systems that are designed for embedded products regardless of the product's hardware architecture. Yocto Project provides a flexible toolset and a development environment that allows embedded device developers across the world to collaborate through shared technologies, software stacks, configurations, and best practices used to create these tailored Linux images.

Ok, i understand that Yocto is a project that helps developers to.. and provides.. But exactly is it? is it a software? is it just a bunch of people? The word "project" can be understood in many ways.

OpenEmbedded and Poky:

This is the definition of the OpenEmbedded build system from the Reference Manual, Chapter 2:

The build system specific to the Yocto Project. The OpenEmbedded build system is based on another project known as "Poky", which uses BitBake as the task executor.

It seems that OpenEmbedded is based on another project named "Poky" (In what sense is this a project? is it a software? etc.), and that Poky uses BitBake. From other sources i read i understand that BitBake is the actual software that does all the building.

Now let's get to the definition of Poky. This is from the Reference Manual also:

Poky, which is pronounced Pock-ee, is a reference embedded distribution and a reference test configuration. Poky provides the following...

Poky is explained everywhere as a "reference distribution", something that you can start with. What i understand from this definition is this: Let's take Visual Studio as a comparison: You have Visual Studio, which is a tool, and you can (may) have some "reference code" that is built and run by Visual Studio.
Back to our business: Seemingly, Poky is sort of a "reference code" that the tool, in our case: OpenEmbedded, can build. But then again, in the definition of OpenEmbedded it says that OpenEmbedded is based on Poky.

It only gets worse: This is from the Yocto Project Overview and Concepts Manual, 2.3.4:

Poky is the Yocto Project reference distribution. It contains the Open-Embedded build system (BitBake and OE-Core) as well as a set of metadata to get you started building your own distribution.

So now Poky contains OpenEmbedded, which is based on Poky. What's going on??

I'd be really happy if someone could clarify all these terms to me, with respect to the famous figure that describes the relations between all these.

Upvotes: 3

Views: 1275

Answers (1)

sob
sob

Reputation: 1088

Here's the hierarchy, as I understand:

  1. OpenEmbedded: A set of source projects that can be used to build a custom Linux Distribution

OpenEmbedded is a build automation framework and cross-compile environment used to create Linux distributions for embedded devices. The OpenEmbedded framework is developed by the OpenEmbedded community, which was formally established in 2003.

OpenEmbedded (OE), is where you can submit any bitbake and/or common meta-data layer related improvements.

  1. Yocto: A collaborative project that use Openembedded to create customizable Linux distribution for embedded and IOT devices

Yocto Project is the community that uses projects from OpenEmbedded to create distribution suitable for embedded and IOT devices. Yocto project maintains, tests and releases these at regular defined intervals. This community includes many active silicon vendors who provide their tested BSP against tested distribution that community provides. If you check https://git.yoctoproject.org/, you'll notice BSP layers from famous silicon vendors such as ARM (meta-qrm), Intel (meta-intel), TI (meta-ti) etc. Key thing to note is the BSP vendors test their BSPs on the software provided by community (named as poky)

  1. Poky: A Reference embedded Linux distribution

Poky is a reference distribution. That is, when poky is built a predetermined combination of software packages (determined by the community) are built and the generated OS image contains these. The Yocto developers define "poky" distribution. The BSP vendors strive to support Poky. Poky is a proof of working software distro. If a BSP vendor can run Poky and test it, the BSP vendors know they are compliant with what community defined.

To sum it up

OpenEmbedded is a community where the source contributions for bitbake, generic meta layers are made. Yocto Project uses these OE project to define a usable Linux distribution Poky. Foundation maintains and sets release cadence for various versions of Poky.

One liner

Yocto Project community uses projects from OpenEmbedded to create a working Linux Distribution named as "Poky".

Upvotes: 2

Related Questions