Linux began life as a hobbyist operating system (OS) designed for PCs using 80386 processors. But since its introduction in 1991, it has grown into a broadly used OS, running on PCs, servers, mainframes, and Internet of Things (IoT) devices. A majority of the top supercomputers in the world run on Linux.
Linux’s range of support is impressive. From the smallest of devices to the largest mainframes and supercomputers, many run a variation of this popular operating system. The reasons for Linux’s popularity are dependent on the usage; in some cases, it’s the open-source aspect, and in others, it’s the scale of device support and the spectrum of processors and platforms.
Let’s now dig into some of the key reasons for Linux’s popularity in the IoT market.
Linux is an open-source operating system that scales from small resource-constrained computers to the largest supercomputer. Its source is portable, meaning it runs on a variety of different processor architectures (Intel®, Arm, IBM PowerPC, etc.).
Linux features a stack architecture (Figure 1). The top-level of Linux houses the user space where applications reside (along with tools, libraries, shells, etc.). The kernel-space holds the Linux kernel and the device drivers. The Linux kernel provides scheduling, process and memory management, and a core set of features. Device drivers comprise the largest amount of code within the Linux operating system, given the scope of devices that are supported. When building an IoT device or gateway, Linux makes it easy to take advantage of peripherals (network or wireless interfaces, display interfaces, etc.) and to use them within their desired context.
Figure 1: High-Level Stack Architecture of Linux. (Source: Author)
In traditional firmware development, the developer builds code for a target system and then downloads the code to the target for testing. Linux can host all development tools on the target system, making it very easy to develop and test code using Linux.
Security is a key issue in IoT design. Linux provides a secure platform for IoT applications in a number of ways. First, Linux is an open-source operating system, which means defects that could lead to exploits are discovered and fixed quickly (as compared to closed-source operating systems that have fewer eyes scrutinizing them). Second, Linux incorporates many security features; from a security module framework (that supports various security implementations like AppArmor) to in-kernel features that promote security (such as randomization of address space layout).
Linux has become so popular as the software platform for IoT that you can find not one but many Linux distributions to address IoT designs. Table 1 lists the most popular Linux distributions for IoT.
Table 1: Popular Linux Distributions for Linux.
Distribution
Description
AndroidThings
Android-based OS with support for Android APIs and Google services.
Debian Tinker
Debian blend for small devices.
OpenWrt
Linux-based distribution for embedded devices (used primarily in wireless router devices).
Raspbian
Raspbian is a derivative of the Debian Linux operating system that runs on Raspberry Pi hardware (includes over 35K packages).
Tizen
Samsung’s embedded Linux stack that powers much of Samsung’s consumer and IoT devices.
Ubuntu Core
Ubuntu Core is an embedded version of Ubuntu that runs on minimal resource systems (such as Pi).
Yocto
Yocto isn’t itself a distribution, but an open-source project that helps create custom Linux distributions for embedded and IoT devices.
Linux is at the heart of the IoT ecosystem, from the smallest of IoT devices, to edge gateways and the cloud. A recent online survey sponsored by the Eclipse IoT Working Group, AGILE IoT, IEEE, and the Open Mobile Alliance found that among IOT developers, approximately 72 percent of respondents used Linux for their IoT devices. Factors such as its open-source operating system, scalability, security features, and a wide range of distributions, make Linux a popular choice for IoT development.
M. Tim Jones is a veteran embedded firmware architect with over 30 years of architecture and development experience. Tim is the author of several books and many articles across the spectrum of software and firmware development. His engineering background ranges from the development of kernels for geosynchronous spacecraft to embedded systems architecture and protocol development.