Yocto is a powerful distro and build system environment. It enables developers to build a complete distribution from scratch, allowing full customization of the root filesystem's content. Widely used in embedded systems development, Yocto provides a structured framework for package management and system customization. By defining recipes, the build system automatically downloads the required packages based on configuration settings and generates an image that can be easily deployed to the target device.
Yocto’s Evolution
Since its launch in 2010, Yocto has undergone significant development. The environment is built on BitBake, which was created in 2003 and serves as the build system's core engine. Primarily developed in Python, BitBake was initially part of the OpenEmbedded project, where a vast collection of recipes and functions were developed.
Yocto, which builds upon OpenEmbedded, has introduced additional tools, scripts, and package-building functionalities to accommodate a broad range of Linux-based embedded systems. Finally, an additional layer of recipes and functions is provided through Poky, which constitutes a "true" distribution (often referred to simply as "Yocto").
The Yocto Learning Curve
Mastering the Yocto ecosystem requires a considerable effort. The sheer number of predefined variables can be overwhelming, discouraging some developers. However, Yocto remains an essential tool for production environments with a large number of deployed devices. It provides effective version control for both software and hardware components, making it a go-to solution for long-term embedded projects.
Buildroot: A Simpler Alternative
In contrast, Buildroot (2001) offers a much simpler alternative, following a monolithic approach primarily based on Makefiles. While it achieves similar goals to Yocto, it is more limited in flexibility but easier to use and leads to significantly shorter build times, typically around 45 minutes, compared to 2+ hours for Yocto (depending on hardware capabilities).
A New Approach: InfraBase (IB)
At EDGEMTech, we sought to combine the power of BitBake and its highly modular recipe-based approach with the ability to integrate prebuilt packages within the BitBake ecosystem. This vision stems from years of experience in R&D projects and the embedded Linux environment, where the typical stack consists of:
A bootloader like U-Boot
The Linux kernel
The root filesystem
A set of user-space applications
As shown in the diagram below, additional components, such as a hypervisor and one or more guest operating systems, can also be part of the system architecture.

QEMU is widely used for target emulation, providing a powerful debugging environment. Given the complexity of different targets, it is crucial to support multiple configurations.
We call this new approach InfraBase (IB). The diagram below illustrates the distinction between Yocto and IB.

IB embraces all core concepts of Yocto while extending its capabilities. It allows the build system to interface not only with Buildroot but also with debootstrap or any other build system.
Structurally, IB consists of a build/ directory, which contains all meta-layers, configurations, and classes, while maintaining a standard filesystem hierarchy with bootloader, kernel, root filesystem, applications, QEMU, and more. It efficiently manages files using symbolic links or direct copies from BitBake-generated elements.
InfraBase: Open Source Release Coming Soon!
We'd love to hear about your needs and your opinion of Yocto. We look forward to hearing from you!
We will soon release InfraBase as an open-source project in collaboration with HEIG-VD. Stay tuned! 🚀