What is embedded Linux? Part I

Hello everybody out there using minix –

 I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones.  […] It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that’s all I have :-(.[1]

The above is an excerpt from Linus Torvalds’ original 1991 announcement of what would become the Linux operating system (OS). In hindsight, the post’s modesty is striking. Today, more than 96.4% of the top 1 million server applications run on Linux [2]. Across public clouds, 90% of the workloads use Linux as their OS, with Ubuntu being the most popular Linux distribution [3] [4]. Although Linux debuted as a general-purpose operating system (GPOS) for x86-based hardware, it has since expanded far beyond server rooms and has become a ubiquitous operating system. Over the years, it has been widely adopted by the embedded systems world, becoming a standard platform for a range of applications, from industrial controllers to consumer electronics.


This two-part series offers a broad overview of Linux in the embedded and Internet of Things (IoT) domains. In Part I, we’ll explore the embedded ecosystem, the role Linux plays in it, and why the OS has become increasingly popular in this space. Part II will turn to the challenges enterprises face when deploying and maintaining embedded systems.

The embedded landscape 

Embedded systems come in many shapes and sizes, but they generally share a few characteristics: they perform a specific function, have limited resources, and include some form of processing engine. For simplicity, we can roughly group embedded Linux systems into three size categories:

  • Small-sized systems: low-power CPU, ≥ 2 MB ROM, ≥ 4 MB RAM
  • Medium-sized systems: ~ 32 MB ROM, ~ 64 MB RAM, mid-range CPU
  • Large-sized systems: high-performance CPUs, larger memory footprints

Linux now appears across almost all areas of consumer and industrial electronics, from automotive infotainment to smart energy management.

This wasn’t always the case. Advances in semiconductor technology have played a decisive role in enabling Linux adoption in embedded contexts. Falling flash memory costs have made it possible to store complete Linux filesystems on embedded devices [5].  At the same time, energy-efficient, small-footprint System-on-Chip (SoC) designs have become the processor of choice for embedded developers. Today, most embedded platforms with at least a 32-bit processor can run Linux, and many do.

What is embedded Linux?

We’re now in a better position to look at the opening question, “What is embedded Linux?”

There are three levels at which we can attempt an answer:

  • The system
  • The kernel (i.e., the core of the OS)
  • The distro

The system

An embedded Linux system is simply an embedded device whose operating system is built around the Linux kernel.

The Linux kernel

There is no special “embedded edition” of the Linux kernel. Developers can often use an official upstream kernel, but in practice, embedded projects frequently require kernel configurations tailored to specific hardware. This might involve enabling or disabling certain drivers, tweaking scheduler behaviour, or applying board support patches.

The distro (or distribution)

The third perspective to consider is that of a distribution. Here, “distribution” is an umbrella term usually comprising software packages, services and a development framework on top of the OS itself. Ubuntu Core, the flavor of Ubuntu for embedded devices, is an example of an embedded Linux distro.

Why use embedded Linux?

The next question that arises is, what makes Linux the perfect candidate for an embedded system? From scalability to developer support and tooling, there are myriad reasons why this is true. An in-depth discussion for each requires its own book. Here, we’ll limit ourselves to mentioning a few prominent ones:

  • Hardware support
  • Networking
  • Modularity
  • Commercial support

Hardware support

Linux runs on a wide range of architectures, including ARM (32- and 64-bit), x86, MIPS, and PowerPC. A 32-bit CPU can address 2³² memory locations, while 64-bit CPUs can access vastly larger address spaces. Systems below 32-bit (e.g., 8- or 16-bit microcontrollers) are typically too resource-constrained to run Linux, relying instead on RTOS or bare-metal designs.

Networking

Networking is often essential in modern embedded devices, and Linux has a mature, feature-rich networking stack. Whether your device needs Wi-Fi, mobile broadband (WWAN), or Ethernet, Linux supports a wide array of protocols. Tools like NetworkManager make configuration straightforward and are available on platforms like Ubuntu Core.

Modularity

Linux is highly modular: you can strip it down to the essentials for a minimal footprint or build it up with layers of services and applications. For example, Ubuntu Core lets developers include configurations for both specific kernels and userland based on hardware and software requirements.

Commercial support

Another crucial but sometimes overlooked consideration for choosing Linux for your embedded systems is the availability of commercial support.

Freely available, community-maintained build systems such as Yocto and Buildroot enable developers to create custom Linux distros for most hardware architectures. Unfortunately, the various challenges that community projects do not address are bound to surface when shipping embedded Linux in production. This gap is readily filled by embedded Linux vendors who provide enterprise-grade support and expertise, substantially reducing time to market.

It’s not only expensive for an enterprise to provide its own set of fixes, security patches, and hardware testing – it’s also distracting from its core business. Luckily, the kernel experts at Canonical, the publisher of Ubuntu, are here to help. Canonical’s team builds, patches and maintains Ubuntu Core for embedded devices.

If you’re interested, a focused discussion on the benefits and disadvantages awaiting embedded developers when rolling their own Linux distro versus relying on a commercially supported solution is available in this webinar or this whitepaper.

Conclusion

By now, the readers should feel familiar with the role played by Linux within the embedded landscape. In part I of this two-part blog series we saw how Linux, with its well-established presence among servers and clouds, is rapidly becoming the de-facto OS for the embedded world. There are obvious reasons to choose Linux for an embedded system, from hardware and networking protocol support to its extensive configurability and modularity.  You can gain an appreciation of how Ubuntu Core, the embedded flavour of the most widely deployed server operating system on the Internet, is setting new standards for embedded Linux by browsing through its documentation.

In part II of this blog series, we’ll argue how developers must pay close attention to the issues of security and updatability if they are to reap the benefits of the explosive IoT growth. See you there.

Are you evaluating Ubuntu Linux for your next embedded project?

Get in touch

Further reading

Why is Linux the OS of choice for embedded systems? Check out the official guide to Linux for embedded applications in whitepaper or webinar form.

Interested in a detailed comparison of Yocto and Ubuntu Core? Check the Yocto vs Ubuntu Core whitepaper.

Learn how Ubuntu Core, snaps and Snapcraft create a platform for secure, open-source embedded Linux development and deployment.

Do you have a question, feedback, or news worth sharing? Join the conversation on IoT Discourse to discuss everything related to the Internet of Things and tightly connected, embedded devices.

Open source is what we do

We believe in the power of open source software. Besides driving projects like Ubuntu, we contribute staff, code and funding to many more.

Read about the projects we support ›

Newsletter signup

Get the latest Ubuntu news and updates in your inbox.

By submitting this form, I confirm that I have read and agree to Canonical's Privacy Policy.

Related posts

Canonical launches Ubuntu Core 24 

Immutable Ubuntu Core delivers a new factory installation system for IoT device makers, GPU support for AIoT and device management integrations with Landscape...

Advantech RSB-3810, a new Single Board Computer powered by MediaTek Genio 1200, is now certified on Ubuntu 22.04 LTS

Discover this new hardware solution designed for IoT and edge applications Canonical has partnered with MediaTek to optimise Ubuntu for IoT innovations and...

Real-time OS examples: use cases across industries  

In sectors where precision and predictability are non-negotiable, timing is everything. Whether coordinating robotic arms on a factory floor, maintaining...