THE EMBEDDED ANTHOLOGY PART XIV – The YOCTO saga
Cirus Coliai
Bringing your devices to life with world-class software ?? #Embedded #IoT #Device2Cloud @Witekio
Once upon a time, up North in Finland, a cute penguin called Tux emerged. ?
In case you did not know, baby Penguins are called chicks or nestlings. Over the years, this cute penguin delivered several chicks (Linux distributions) the most famous of which are: Ubuntu, SuSE, RedHat, Slackware, Fedora, Debian, Mint, Arch, Manjaro, Zorin, and so on.
These chicks were mainly interested in enterprise operating system used for workstations and servers, and less into embedded, i.e., purpose-specific devices and systems. The reason being that to cater for the embedded use cases they needed to be tailored down. This brings us to the Yocto Saga!
Yocto the new “chick” on the block
Finally, the prayers of the embedded devices were heard and Yocto project was born in 2010 to enable the build of customized Linux distributions for embedded devices. However, it took a long time before a stable release was available.
Before going any further, it is important to understand that Yocto is not a Linux distribution, instead it creates its own. In other words, the Yocto Project (YP) is an open-source collaboration project that helps developers create tailored Linux images for embedded and IOT devices, no matter the hardware architecture. By providing tools, metadata, and a build framework, it automates the complete build process.
Why use a build system at all?
In the context of Yocto, a build system refers to the infrastructure and tools that enable the construction and customization of a complete embedded Linux system.
A build system in Yocto consists of various components, including configuration files, recipes, metadata, and build tools. It provides a set of instructions and processes for fetching source code, building packages, creating root file systems, generating images, and managing the entire build process.
It goes without saying that for a simple console application or a mid-scale project, the use of a build system is overkill. However, when it comes to a complex web application that has several services involved, you might need to do tasks such as running tests in parallel, setting up various scheduled tasks and publishing artefacts and packages to various endpoints.
In this case a build system is the best way forward. Furthermore, unlike a pre-compiled image for a particular device or at least for a particular hardware platform, a build system allows you to customize offline the content of your system, bootloader, kernel, or file system.
The main benefits of using a build system are:
To summarize, a build system should be simple, automatic, configurable and allow reproducible outputs of the final project.
The new dilemma
Over the years, multiple build systems for embedded Linux distributions have emerged, making it difficult to choose from. But which build system is the best?
Today, we can find dozens of embedded Linux distribution solutions on the market, and it would be difficult to assess them all.
For simplicity, let’s put aside the non-open-source solutions and those solutions developed by founders and manufacturers for a particular board’s family.
Instead, we’ll be focusing on the following three build system options: Yocto, Buildroot and Desktop distributions such as Debian, Ubuntu, Fedora etc.
Comparison criteria: their ease of development, configuration and updating, the build, the component customization, and its maintainability.
At Witekio , we have experience in a range of build systems, but we’re big fans of using Yocto for our Linux embedding projects for a variety of reasons – but is Yocto the best solution for you?
Considering the fact that no single solution is perfect, at Witekio before making any choice, we start by identifying customer requirements and aligning them with their unique demands. In other words, we aim at finding the best solution from a time and effort point of view, and as of its adaptability to customer’s embedded Linux project.
领英推荐
That said, a compromise solution could be Buildroot, a build system that is less flexible than Yocto but is designed for customization. It is much easier to approach than Yocto but has four to five times fewer packages available. Therefore, this is a solution that should only be considered for a simple project with one configuration.
The above-mentioned considerations, i.e., (a) do you need to use a build system, and if so (b) which build system you should select, are critical and need to be considered at the very beginning of your project. You need to be cautious with your decision and examine all the points that we have highlighted in the previous section and the table above.
Remember, going for an easy solution to get your project started fast can easily turn into a dead-end when you realize your project requires significant customization. For the sorts of products that Witekio ’s clients seek to deliver, Yocto is more often the best choice.
What is the unique value proposition of Yocto?
As mentioned before, the Yocto Project is not an embedded Linux Distribution, it creates a custom one for you. It also provides a flexible set of tools and a space where embedded developers worldwide can share technologies, software stacks, configurations, and best practices that can be used to create tailored Linux images for embedded and IOT devices, or anywhere a customized Linux OS is needed.
What about Long-Term Yocto code Maintenance?
As cyber security concerns are growing, our customers tend to pay more attention to the maintenance of customized Yocto distributions. Usual challenges tend to be more a concern as the probability and the severity of the risks are increasing for them:
Don’t panic! We have already thought of that and the answer to the above-mentioned challenges is/ Witekio 's Yocto Long-Term Maintenance Package.
In a nutshell, our Long Term Secure Maintenance Approach is based on Automation Weaponry and Collaborative Project Team in order to accelerate the maturity of our customer’s organization while keeping the ownership.?It consists of monthly CVE Monitoring , quarterly LTS minor updates and annual LTS major updates. To know more about this, join our webinar on the subject!
Conclusion
Today our cute penguin (Linux) has come a long way and is by far the most scalable operating system to exist today. From servers to desktops to embedded systems with low memory footprints, it is now hard to miss.
Even Google has chosen the Linux kernel as a core component for its phone/tablet Android operating system, increasing its overall popularity in different markets.
For over a decade, our team of software experts have worked to master Yocto embedded development through real use-case scenarios across a host of industries. This experience has led to Witekio becoming a leader in Yocto development for OEMs.
We’re an approved Yocto software provider, and several Witekio engineers volunteer their time to advance the project. So, whether you’re looking for full product lifecycle support, a helping hand with just a portion of your development journey, in-house training, or long-term maintenance support – we can help.
Here are our expert Yocto services for OEMs:
Don’t just take our word for it, have a look at this case study !
Embeddedly yours,
Cirus Coliai (BDM at Witekio for France, UK & Northern Europe)
Software Designer at Valmet Automation
1 年Maintaining a DCS platform based on Yocto is still very laborous job due to the fact that open source projects does not held long term API and ABI stability as the top priority. DCS world operates on lifetimes of decades and with the notable exception of Linux kernel itself and GNU libc no project comes even close. I would hope the Yocto framework internals would stabilize so that layer compatibility maintenance would not require so much effort.
Embedded Systems Specialist at Avnet
1 年Witekio supper knowledge and experience of Yocto.
| Tria | Sales Director | Management | OEM | Strategy | Key Account Management | Technology | Leadership | Innovation | P & L | Growth | B2B | Business | Coaching |
1 年Good overview of embedded Linux??