Excellence in Software Engineering
Operating System Customization for IoT: Yocto Project Overview
11 March 2020

Author: Alihan Doğuş YALÇIN, SSoftware Engineer – Information Systems & Cyber Security Group

Operating systems for embedded devices have become even more important with the growth of the Internet of Things (IoT) industry. There are a variety of Linux Distributions for embedded environment in the market, but the distributions all have unneeded packages, libraries and functionless kernel modules for development boards. Developers can find a documentation to hack the distributions and change the distribution features again and again to fit all dependencies. However, finding the best operating system for the specific needs of a project without waste time and money is a challenge for software developers. Get ready for stressful days or choose the easier and cheaper way.

Yocto Project is an open-source project that creates a working area to develop a custom Linux-based operating system for any embedded device. It is independent from the hardware architecture and supported by semiconductor companies like Intel, AMD, Qualcomm, NXP and Texas Instruments. Therefore, Yocto Project supports different architecture like ARM, MIPS, x86. Yocto Project is currently in the Zeus (3.0.2) version. New versions are released every 6 months and Yocto Project is lately announced to give long term support starting from release 3.1.

The main part and reference distribution of the Yocto Project is Poky and Poky is all you need to create your first Linux-based distribution. Poky is contained of two fundamental parts: Metadata and Bitbake.

  • Metadata is the set of task definitions that consist of recipe (.bb) files, class (.bbclass) files and configuration (.conf) files. These files can be defined in different layers for different functionalities according to the software application stack or Board Support Package (BSP). The semiconductor companies mentioned above have their Yocto layers to create board-specific packages and hardware configurations. Also, layers are available for different software solutions like mender which is used for OTA software updates for IoT devices and influxdata which is metric collection and visualization framework. A layer can override another layer depending on the layer’s priority. The layer of highest priority overrides settings of recipes beneath it.
  • Bitbake is a task executor that controls every step of building an image. It collects tasks specified in metadata and builds the tasks to create a complete image with a specific Linux kernel and root file system. Bitbake is written in Python and developed by OpenEmbedded.

The number of connected IoT devices is growing each year and companies create IoT solutions for different boards and architectures. But, finding an operating system to handle all IoT solutions is impossible. Yocto Project has all the tools and methods to create a Linux-based operating system for IoT projects with different requirements. Add needed packages and remove useless ones, leave the rest to Yocto.

Meanwhile, at ICterra, in Robust Edge project, our security and management solution for IoT devices, we are creating security-based Linux distributions, images and recipes for specific IoT problems using Yocto Project. Yocto simplifies our work to improve embedded Linux security for different architectures and boards starting from Linux kernel to application layer. Thus, we are developing more secure operating systems for IoT devices with less effort.  

For more information about Yocto Project, visit www.yoctoproject.org

Past Articles



Likely, most people who are interested in subjects within the scope of IoT have an awareness of its applications in Smart Home.