Introduction to Embedded Linux
To reap the benefits of the rise of connected devices, it is of the utmost importance to understand their characteristics and how they differ from other forms of computing.
Embedded systems
Unlike desktop workstations, embedded systems typically perform a dedicated function.
The system hardware, operating system, and application software in the embedded ecosystem are often custom designed for specific tasks and resource constrained due to limited memory and nonvolatile storage. Embedded systems may exhibit a fixed set of I/O devices, a restricted user interface, and deterministic constraints. Silicon vendors often tailor the processing engine of an embedded system for the running application while optimising the system board for size and cost.
Risking an over-simplification, we can delineate 3 broad categories based on the size of an embedded system:
Small
Small-sized systems comprise a low-powered central processing unit (CPU) with at least 2 MB of read-only memory (ROM) and 4 MB of random-access memory (RAM)
Medium
Medium-sized systems have around 32 MB of ROM, 64 MB of RAM, and a medium-powered CPU
Large
Large-sized systems embedded systems include faster CPUs and a larger memory footprint.
The Raspberry Pi is among the most popular low-cost, credit-card-sized embedded computers.

Embedded Linux systems
Since its inception, Linux has seen widespread adoption across the entire compute spectrum.
As Linux is the most popular OS for developers and hobbyists across kernels, drivers, and distributions, its presence in the embedded ecosystem is also pervasive. Linux spans all spending categories and is widespread across virtually every technology segment, from automotive to the home energy management. Consequently, embedded devices running Linux vary from one another and appear in multiple shapes and forms. Progress in semiconductor technology has substantially helped spur the adoption of Linux in the embedded world. For one, System on a Chip (SoC) hardware with low power and a small footprint is increasingly becoming the premier processor choice of developers. Furthermore, flash memory prices decreased over time and now provide the necessary mass storage for the Linux filesystem. Although processors below 32-bit do not support it, Linux runs on virtually every hardware platform.
Thanks to the careful work of developers who ported the kernel to most CPU architectures, the 32 and 64-bit ARM, x86, RISC-V, MIPS, and Power Architecture are among the processor families on which Linux runs.
Why choose Linux for embedded
The list of reasons behind the rapid growth of embedded Linux is virtually endless. One can trace the ubiquitous presence of Linux in the embedded ecosystem to its key features. Being highly scalable and open-source with extensive community support and tooling, developers can deploy it with no royalties.
Ubuntu, published by Canonical, is the most popular open-source Linux OS, free to use by innovators and developers.
Hence, in this guide, we will evaluate Canonical’s commercially supported embedded Linux distribution (Ubuntu Core) and Yocto. Several other players have a role in the commercial enterprise embedded Linux landscape; the choice in available embedded distributions keeps expanding. Whereas other options include SUSE Linux Enterprise Micro, Red Hat Enterprise Linux, MontaVista, Wind River and Azure Sphere by Microsoft, in this guide, we will focus on the most frequently used Yocto and Ubuntu Core.