The Yocto Project ® is an open source project which provides a software build system, running on a Linux desktop operating system, to produce a Linux distribution primarily targeted at embedded systems, but definitely not limited to that.
In layman’s terms, you use a computer to download a whole bunch of software, compile it all, and collate it into an operating system and file system to go with it. You can then put this collated image/binary onto an SSD card or flash chip on some electronics, power it up and it will boot you a Linux operating system.
There is a lot of documentation on the Yocto Project, much quite detailed and possibly overwhelming. This site attempts to complement that documentation by breaking it down differently, adding value by shining light on the more hidden bits and the gotcha’s, some of which can cost you a lot of time.
What it is not.
It is not a software development system.
Yes, it is often used as a development flow, but it was never intended for this, and it as a result comes as no surprise that it is an inefficient way of developing software.
What it is.
The Yocto Project is a Linux Foundation project and a major driver behind the build system foundation which is Open Embedded.
This site will maintain the distinction between Open Embedded for the technology and Yocto Project for the project or ‘force’ behind it.
Who is the force?
The primary drivers behind the Yocto Project are silicon vendors, and companies providing Embedded Linux services.
This is understandably so, because the project and subsequent Embedded Linux distributions which are created are enablers for the sale of processors and associated Embedded Linux services.
A quick scan through the product showcase and members list will provide you details on who are the main drivers.
Where did it come from?
Open Embedded, the technology, is the successor of the now referred to Open Embedded Classic (or OE-Classic), combined with Poky a fork of it.
The source of OE-Classic is hosted on github still: https://github.com/openembedded/openembedded, and the new Open Embedded site provides insights into the differences.
The most significant change is that metadata is now split into multiple layers rather than being in one repository.
Additionally, OE-Core moves changes to a pull model rather than the push model of OE-classic – instead of all developers having direct commit access, patches are sent to the mailing list for review and if/when satisfactory they are merged by the maintainer
Quoted from https://www.openembedded.org/wiki/OpenEmbedded-Core
What on earth is Poky?
Once you start into the world of the Yocto Project, you will find Poky.
If you search for Poky online you will find it is Yocto Project’s reference distribution, and there is enough information in that link to keep you busy. It’s history though is interesting, and gives some insight into why it is in the Yocto Project in the first place.
Both the Open Embedded site and elinux.org outline its history.
Poky was forked as a cleaner and more supportable version of OE in 2006. Fast forwarding to the present, Poky is now maintained as a reference distribution under the Yocto Project with the support of the Linux Foundation
Quoted from OpenEmbedded-Core
Historically, Poky was a form of parallel evolution of the main OpenEmbedded tree, being smaller/cut down and more focused on specific targets. It was sponsored heavily by OpenedHand with Richard Purdie as its architect and lead developer and has been referrred to as a build system in its own right. To be clear it always used BitBake and the OpenEmbedded architecture so the build system/approach was always OpenEmbedded. With the creation of the Yocto Project and the refactoring of OpenEmbedded into several components such as OpenEmbedded-Core and Meta-OpenEmbedded, Poky became the reference distribution as many of the reasons for the original creation of Poky were addressed by those changes.
Quoted from https://elinux.org/Poky
Why is it a good build system?
Open Embedded is a good build system because it covers all the things that a build system should have.
- sourcing software (from multiple places)
- ability to patch released software before building
- building software packages
- building final embedded images
- a built in QA step
Technically Open Embedded does more than what it is listed (e.g. builds toolchains), but those are what we consider the primary needs of a build system.
Also remember that Open Embedded is the technology behind the Yocto Project.
Is it Linux only?
Yes, the Yocto Project is Linux only.
Technically, under the bonnet, the bitbake engine need not be, but in practice its life started for and has become a Linux distribution generation engine.
Not to say that no one will, or has not already forked bitbake for something else.
Is Poky a distribution?
As advertised Poky is a “reference embedded distribution“.
Whether it is a distribution though depends on how one wants to split hairs on the meaning of distribution?
With comparison to Desktop PC distributions like Fedora, Ubuntu and others, these provide binaries, so we could argue the implicit definition of distribution is to provide binaries.
With that definition, the Poky the Yocto Project provides is probably more the build setup for a reference distribution that you can build for your selected target(s).
So what about Ångström?
Those that worked with Classic version of Open Embedded are likely to remember Ångström as a distribution.
Its intent was to provide binaries for a linux distribution targeting some specific embedded devices, using opkg as its package manager.
This made it a ‘real’ distribution.The thing to remember though is that Ångström had targeted hardware and that helps limit the diversity of binaries needing testing. Poky on the other hand ‘solves’ this by just releasing the build setup, even if it does test on some targets.
The last posted binaries on Ångström download page looks to be 2019.06.
Yocto Project ® and all related marks and logos are trademarks of The Linux Foundation. This website is not, in any way, endorsed by the Yocto Project or The Linux Foundation. Linux ® is a registered trademark of Linus Torvalds.