Career Boost: Building custom Linux-based systems using The Yocto Project
- 3 minute read
-
Author: Mobica
The Yocto Project stands as a beacon of innovation within the open-source community. Founded by a coalition of semiconductor vendors and OEM suppliers under the auspices of the Linux Foundation, it has garnered support from industry giants such as Intel, Arm, Texas Instruments, and Xilinx. In this article, Karina Murawko-Wiśniewska, an Expert Engineer at the Embedded Competence Centre at Mobica, will guide us through the main aspects of the Yocto Project.
Introduction to the Yocto Project
It is crucial to understand that Yocto is not another Linux distribution. The Yocto Project “helps developers create custom Linux-based systems regardless of the hardware architecture” (www.yoctoproject.org) (where hardware architecture might be x86, x86-64, ARM, MIPS, and PPC-based architectures).
Here’s a comprehensive explanation of Key Components in the Yocto Project, including Recipes, Layers, Poky and more.
Key Components of The Yocto Project
The distribution is built from sources based on recipes. A Recipe is a .bb file containing information about a piece of software i.e. the location of the source, patches or configuration options to apply, and how to compile and package the output.
A collection of recipes is called a layer. The Yocto Project uses the Layer Model consisting of customisable layers that can be added or removed when required.
A user can start building distribution with Poky. A Poky is a reference embedded distribution and contains the build system (BitBake and OpenEmbedded Core) with a set of metadata (recipes).
The BitBake is a Python tool that parses metadata (stored in recipes, and configuration files), creates a task list and executes tasks. BitBake controls how software is built; it handles cross-compilation and is architecture and Linux distribution agnostic.
OpenEmbedded Core is a core build system metadata (set of basic recipes, generic for OpenEmbedded-based systems).
With a better grasp on the Key Components of Yocto, it is crucial to contemplate some of it’s advantages and disadvantages.
Advantages of the Yocto Project
Yocto offers the following advantages:
- The Yocto Project is widely used and supported by a huge community that provides support, tools, and layers. Visit the Yocto community page: https://www.yoctoproject.org/community/learn/ or documentation concerning tools: https://docs.yoctoproject.org/overview-manual/yp-intro.html#components-and-tools
- Wide hardware device support (from board producers) e.g., check variety of OpenEmbedded/Yocto BSP layers for Texas Instruments platforms: https://layers.openembedded.org/layerindex/branch/master/layer/meta-ti-bsp/
- Flexible, and customisable, it allows software modification through layers, recipes and patching; the layered structure allows easy expansion and moving between hardware architectures. Browse the OpenEmbedded Layer Index to get familiar with the great number of submitted layers: https://layers.openembedded.org/layerindex/branch/master/layers/
- High reproducibility (Yocto achieves very high percentages of binary reproducibility e.g., 99.8% for core-image-minimal). The build system ensures consistency across builds, which allows easier debugging! Read more about build system concepts: https://docs.yoctoproject.org/overview-manual/concepts.html#openembedded-build-system-concepts
Challenges of the Yocto Project
Despite its benefits, the Yocto Project presents the following challenges:
- There are also challenges when using Yocto. It takes a lot of time to set up, configure and build and during building consumes a lot of resources (e.g., disk space: 50-100GB).
- Learning Yocto is also challenging due to its complexity. If Yocto was a mug it would say „Steep learning curve” with red letters on it. Now it is your job to turn the challenge into an opportunity. Embedded software developer with Yocto in CV would be a great asset for an employer that wants to choose Yocto for creating custom Linux distribution for their board.
“I experienced myself providing an OS based on Ubuntu for developed software applications and maintenance of it was a nightmare. It was difficult to track dependencies and software versioning, but the worst thing was the lack of reproducibility which made debugging almost impossible. That’s why I found the very idea of the Yocto Project so appealing. I’m at the beginning of my journey yet very excited for more.”
says Karina Murawko-Wiśniewska.
Yocto Project in Action at Mobica
In Mobica we see a big demand for Yocto-based solutions among our customers. The use cases range from industrial automation and monitoring devices to home appliances, to automotive systems, where Yocto competes against more specialised solutions for vehicles. Customers often require us to build a team of driver developers able to work with Yocto, with one or two engineers focusing on the build system itself, where the work resembles being an “Embedded DevOps” and working on the border between low-level programming and system-level configuration.
"I have used Yocto for large telecom and automotive projects as well as smaller personal projects. The reason I always choose Yocto is because of its unparalleled flexibility and customisation options. Yocto allows me to create custom Linux distributions optimised for different hardware platforms to meet the rigorous demands of embedded applications, create SDKs for developers, and automate release and maintenance processes.
Due to its complexity, navigating Yocto's layers, recipes and metadata can be challenging, especially for beginners. There is a steep learning curve, but well worth it. By investing time and effort into mastering Yocto, I have gained invaluable insight into system configuration, package management and compilation processes. This knowledge allows me to effectively develop and deploy embedded solutions with precision and reliability."
quoted Szymon Rajczakowski, Senior Software Engineer, Embedded Competence Centre at Mobica.
Explore A Career at Mobica
If the challenges and opportunities of the Yocto Project excite you, Mobica is seeking skilled individuals ready to tackle these challenges head-on. As part of our team, you'll work on cutting-edge projects, leveraging the Yocto Project to deliver bespoke solutions across various industries.
Explore our Careers Page to keep an eye on Mobica’s open roles.
Are you ready to make your own contribution?
Get started with Mobica today!
Contributor
Karina Murawko-Wisniewska
In Mobica since 2017
Karina has been a pivotal member of the Mobica team since 2017. With her extensive expertise in mobile technologies, including GSM, LTE, and 5G, as well as in cloud technologies like Kubernetes and Docker, she’s a tech lead in the Embedded Competence Centre. Her dedication and exceptional skill set have made her a valuable asset to the team.Expert Engineer