The Linux Foundation has published a free white paper called “The History of Embedded Linux & Best Practices for Getting Started.” Written by tech-writing veteran Henry Kingman, the white paper shows how Linux advantages like virtualization, networking support, and open source licensing helped it gain market share at the expense of RTOSes.
In “The History of Embedded Linux & Best Practices for Getting Started,” Kingman, Editor of tech news site LinuxDevices.com from 2003 through 2009, offers a lively early history of embedded Linux. For example, he relates how MontaVista and Lineo pushed out their first embedded distributions back in 1999. The title is somewhat misleading, in that Kingman does not take us through a step by step history of major product releases, trends, and processor architectures. Nor does he touch on projects like Moblin or Meego, or discuss the meteoric rise of Android.
What Kingman does do quite effectively is show why Linux has risen to the top of the embedded world over the last decade, steadily encroaching on the market share of real-time operating systems (RTOSes). Major technical advantages over RTOSes, he explains, include Linux’s networking and Internet skills, and the ability to exploit processors’ memory management units (MMUs) using virtualization. In addition, Linux has benefited in embedded due to its multiple display options and advanced multimedia performance, writes Kingman.
Royalty free approach wins the day
Just as important as these technical advantages is the royalty free model that predominates in embedded Linux, writes Kingman. This approach, common even in most commercial embedded Linux implementations, helps encourage vertical integration and innovation. In addition, most embedded stacks ship with open source code that can be freely modified, so you’re not dependent on a single company, as you usually are with an RTOS.
Thanks to Richard Stallman’s GPL code, which has come to predominate in embedded Linux licensing, Linux also asks that you share your code innovations with others. Among other benefits, this means Linux developers can often borrow code rather than writing it themselves. Open source OSes without such a requirement, such as NetBSD, gradually faded, notes Kingman.
In addition to extolling these Linux benefits, Kingman notes the drawbacks of using Linux. The first is complexity – the flipside to the open source bonanza. With all the code sharing going on, it’s hard to keep track of code, updates, and various flavors of open source licensing. Compared to RTOS development, there’s a lot more work required to properly maintain and update one’s code.
Another drawback of Linux is that it has no guarantee of backward binary application interface (ABI) compatibility. “That means you cannot count on binaries built for one kernel working on the next, no matter how minor the patch level,” writes Kingman.
Kingman goes on to offer overviews and advice on embedded Linux development fundamentals such as toolchain, buildroot, filesystems, and bootstrap loaders. He touches briefly on more modern efforts at embedded tools standardization such as the Linux Foundation’s Yocto Project and ARM’s Linaro.
The white paper may not be a full history, nor is it a comprehensive textbook, but it does offer an entertaining, if sometime meandering, journey through some interesting facts and facets of embedded Linux, past and present. Kingman touches on technical details such as Kconfig scripts, ConnMan, and audio routing layers, while also discussing the rise of BSPs, Linus Torvalds’s administrative background, and Dr. Bronner’s soap.
Embedded Linux and embedded Android training courses
The white paper should whet the appetite of budding embedded Linux developers who want to check out some of the Linux Foundation’s training courses listed at the end of the paper. These include:
- Embedded Linux Development (LF411) — Advanced Linux training on the key steps to developing an embedded Linux product, with extensive hands-on practice with target devices
- Building Embedded Linux With The Yocto Project (LF405) — Embedded development using the Yocto Project, including the Poky build process and Bitbake, the use of emulators, building images for multiple architectures and the creation of BSPs
- Introduction to Embedded Android Development (LF308) — Overview of the Android build system works and tips on adding new device definitions, customizing build components, obtaining and building a Linux kernel with Android additions, loading it onto the new target board, and configuring the boot process
Free downloads of “The History of Embedded Linux & Best Practices for Getting Started” may be found at this Linux Foundation Training page (requires registration).