You will find Linux inside a wide range of devices today, yet it was not intended to be used as an embedded operating system in the beginning. In trying to understand how Linux moved out of the pure PC environment and into the fabric of our technology I have put together the following timeline showing what I consider to be the important milestones. I am aware that it is missing many details, and I would welcome feedback and comments from all who may read this. Either post a comment at the bottom or mail me at "chris dot simmonds at 2net dot co dot uk".
I had better start by defining what I mean by "embedded". I have decided to be fairly inclusive, taking in a combination of single-purpose, non-user-programmable devices (webcam, set-top box, robot controller) and resource limited devices (PDA, smart phone, and, at the extreme end, tablet). The common characteristics are
So, with that out of the way, here is the timeline.
Linus releases Linux 0.1 as an open source Unix kernel for IBM PCs
By the time Linux has got to version 1.2 it supports Alpha, i386, MIPS and SPARC architectures. This is important both because it means that the source code is sufficiently modular to be ported to other architectures and because MIPS processors were becoming popular in low cost devices.
Bruce Perens begins the Busybox project to make it possible to fit a small Linux image onto a 1.44 MiB floppy disk and so make bootable install and rescue disks for the Debian distribution. Coincidentally, it was also ideal for generating small footprint Linux images for embedded devices, and it remains the base of very many embedded devices today.
Linux 2.0 adds support for two more architectures common in embedded devices: m68k and ppc
One of the first companies to focus on embedded Linux, Timesys (http://www.timesys.com), is founded by Dr. Raj Rajkumar and Srini Vasan. Early emphasis on adding real-time capabilities. Alas, they decided to keep the changes proprietary - as binary modules - and so none of their work found its way into the mainline kernel and it has all been superseded now.
Dave Cinege initiates the Linux Router Project (LRP) (http://en.wikipedia.org/wiki/Linux_Router_Project). LRP used Busybox to create a bootable Linux on a floppy disk which could turn a PC into a router for use in the home or small businesses. Some say this is the first real embedded Linux project. LRP was x86/PC centred, but lead via the "Arlan Wireless Howto" to Linux on the WRT54G and so to Linux on most home and commercial routers. Read David Täht's article about the significance of that here: http://the-edge.blogspot.co.uk/2010/10/who-invented-embedded-linux-based...
Busybox maintenance taken over by Dave Cinege for The Linux Router Project (LRP). Cinege made several additions, created a modularized build environment, and shifted BusyBox's focus into general high level embedded systems
Kenneth Albanowski and D. Jeff Dionne begin work on uClinux: http://www.uclinux.org/. uClinux is a version of Linux for systems without a Memory Management Unit (MMU). It was first ported to the Motorola MC68328 DragonBall processor and the first target system was the 3com PalmPilot using a TRG SuperPilot board. uClinux has since been ported to a wide range of processors and helped to expand the range of hardware that can run Linux. It also gave rise to uClibc, a very small C library (http://uclibc.org/), and build tool called Buildroot (http://buildroot.org/).
The Corel/Rebel.com Netwinder ships. The Netwinder is an ARM-powerd PC (so not really embedded!) that was an impetus to implementing Linux on ARM hardware (Red Hat to start with, then the Debian ARM port). Sold in WS (web server), LC (thin client) and DM (developer machine) variants. Later used for network management running OfficeServer. Still used in some open source projects, but the hardware is long out of production. It has a StrongARM SA-110 cpu @275 MHz, 32 Mib RAM, 2 GiB hard disk. For more info, see http://www.netwinder.org/
Kerbango 100E Internet radio (http://en.wikipedia.org/wiki/Kerbango) is announced. It used a PowerPC (MPC823) running at 80MHz. Kerbango was bought by 3com in 2000, when the publicity and well-known backer helped to legitimise embedded Linux and helped to get Montavista (see below) started. It never shipped as a product.
Finally, the ARM architecture is added to Linux, in version 2.2.0.
David Woodhouse begins work on the Memory Technology Devices (MTD) layer: http://lists.infradead.org/pipermail/linux-mtd/1999-May/000000.html. MTD creates a framework for accessing flash memory and is the basis of the various flash-based file systems that follow. Flash memory is a key component of most embedded devices.
Montavista is founded by Jim Ready. Montavista, alongside Timesys, was important in propagating the idea of Linux as a viable embedded operating system.
Lineo is founded by Bryan Sparks. Lineo did not last as long as Timesys and Montavista, but also made important contributions to embedded Linux.
TiVo (http://www.tivo.com) ship their first generation DVR (Digital video recorder) in March. TiVo was one of the first consumer products to run Linux. Under the hood, the first generation box had a PowerPC 403 processor, 16 MiB Ram and a 14 GiB hard drive.
Axis (http://www.axis.com) release the 2100 webcam. As well as being among the fist commercial products to run Linux, Axis contributed in two other ways. They created a robust file system for the NOR flash memory they used. It was called jffs (journalling flash file system) and later evolved into jffs2 which is used in a large number of devices through to today. Their second contribution was to uCLinux, which was needed to run on their MMU-less ETRAX processor. The hardware spec for the 2100 was ETRAX-100 risc cpu, 8/16 MiB ram, 2 MiB NOR flash, uClinux 2.0.33. There is a mention of this at http://www.axis.com/25years/milestones.htm.
Software consultancy Denx (http://www.denx.de/) begin work on PPCBoot, merging code from fadsboot (Dan Malek) and 8xxrom-0.3.0 (Magnus Damm). PPCBoot 0.41 was released July 2000, initially for MPC 8xx boards. PPCBoot evolved into U-Boot which is used to boot Linux on many millions of embedded boards today.
Timesys launch Linux/RT 1.0, the first commercially-supported Linux with real-time extensions
handhelds.org launched in June. handhelds.org was a focus for porting Linux to a variety of portable devices, starting with the Compaq iPAQ H3600. This is the site as captured by archive.org in August 2000: http://web.archive.org/web/20000815063255/http://www.handhelds.org/
Initially the software platform consisted of
Interesting side note: for native compilation there was a cluster of iPAQs at the Compaq Cambridge Research Laboratory (CRL). Each machine had 32 Mib RAM and either local disk or networked storage via NFS. Developers would use ssh to log in and build code, see http://web.archive.org/web/20100814143512/http://handhelds.org/projects/... and http://web.archive.org/web/20090621123639/http://handhelds.org/cam.html
Ingo Molnar and Andrew Morton begin work on the "voluntary preempt patch" to improve real-time behaviour in Linux. The patch reduces worst-case interrupt latencies by breaking up lengthy processing cycles in the kernel into smaller chunks and re-scheduling if an interrupt handler has set the "need_resched" flag. Working with the mainline Linux community was in contrast to other contemporary real-time projects which attempted sand-box Linux. This work was eventually merged into the 2.6 kernel.
Rick Lehrbaum launches LinuxDevices.com, which for many years was a reference for finding out what was happening in the world of embedded Linux. Alas, it was closed down in 2012, but you can still see some of the content through archive.com, for example http://web.archive.org/web/20090621125542/http://www.linuxdevices.com/
jffs2 (sponsored by RedHat) appears in Linux 2.4.10, bring flash storage to mainline Linux
Robert Love begins work on the kernel preemption patch. It is largely complimentary to the voluntary preempt patch and is another step in improving the real-time behaviour of Linux. Kernel preemption was adopted by Montavista in their MVL 4.0 release and became a standard configuration option in Linux 2.6
Sharp ship the Zaurus SL-5000D PDA running Linux 2.4.10 (provided by Lineo). It had a StrongARM SA-1110 CPU @ 206 MHz, 64 MiB RAM, 16 MiB NOR flash. Note that this is the developer edition (hence the 'D' in the product name). The first commercial Linux Zaurus was the SL5500 which shipped in 2002 (http://en.wikipedia.org/wiki/Sharp_Zaurus)
Showing the shape of things to come was project Mercury at Compaq CRL: http://web.archive.org/web/20010620015914/http://crl.research.compaq.com.... Jim Gettys, amongst others, put together a prototype mobile handset consisting of an iPAQ H3600 with an add-on sleeve called the BackPAQ which provided GSM/CDMA/802.11b/Bluetooth wireless communication, a full VGA (640x480) camera, accelerometer and 1GiB of storage on an IBM Microdrive. The accelerometer was used to re-orientate the screen from portrait to landscape as the device was rotated. Jim named it "The Unobtainium" when talking to journalists who had heard of but not seen the device. A few hundred were made for research and development but it never went into production.
In May, the Familiar Linux distribution for hand held computers gains visibility from being hosted at familiar.handhelds.org http://web.archive.org/web/20010517003850/http://familiar.handhelds.org/ Already at v0.4, Familiar Linux had many features useful to handheld devices including anti-aliased fonts, the Blackbox window manager and a small package manager named ipkg. It leveraged a lot of work done for the Debian ARM port. The initial user interface, called the GNOME Palmtop Environment (GPE), was based on GTK+ and XFree86 with Keith Packard's Tiny-X server. Familiar was the start of a long line of development which resulted on the one hand with Nokia Maemo Linux and on the other with OpenEmbedded and Yocto.
In December, Buildroot emerges from the uClinux/uClibc project as a way of building small embedded Linux systems to test uClibc. Buldroot has continued to be maintained and is still in use today.
Linksys release the WRT54G wireless router (http://en.wikipedia.org/wiki/Wrt54g). This was the first commercial router running Linux and it spawned a whole industry of Linux-based home routers. The original WRT54G had a Broadcom BCM4702 processor (MIPS32 core) running at 125 MHz, 16 MiB RAM, 4 MiB Flash
Charles Manning announces the yaffs file system (http://www.yaffs.net/), which allows Linux devices to access NAND flash memory. NAND was new technology at the time, but has since replaced NOR flash almost completely. The yaffs version 2 file system (yaffs2) is used today in many Android devices.
The Open Palmtop Integrated Environment (OPIE) begins development as an alternative UI for Familiar Linux, replacing GPE. OPIE was based on QT Embedded from Trolltech and so did not need an X server. OPIE can be found at http://opie.sourceforge.net.
U-Boot (later Das U-Boot) is released. U-Boot was a renaming of PPCBoot 2.0.0, which by this time had support for architectures other than just PPC, including ARM and Motorola Coldfire.
The Embedded Linux Consortium is founded and publish the ELC Platform Specification: https://wiki.linuxfoundation.org/en/ELC/ELCPS. The ELCPS was an attempt to create a standard for embedded Linux similar to the Linux Standard Base (LSB) for desktop and server Linux distributions. It never gained any traction and in 2005 the ELC was merged into the Open Source Development Labs (OSDL), now The Linux Foundation. It turns out that the inventiveness of embedded engineers just cannot be tamed. Yes, I'm looking at you, the Google Android team.
Linux 2.6 is released in December. From an embedded perspective, notable additions were real-time support in the shape of both the voluntary preemption and preeemptible kernel patches, and the inclusion of much of the code base from the uClinux project.
Motorola choose Linux and Java for their smart phones, beginning with the A 760 in SE Asia and later in 2004 the A 780 in the USA. This marks the start of Linux as a cell phone operating system. The A 780 used an ARM 925 chip (an Intel PXA270) at 316 MHz, had 48 MiB flash storage and a QVGA (240 x 320 pixel) touch screen. The Linux port was provided by Montavista.
The OpenEmbedded Project is born, creating a common build system and code base for Familiar Linux, OpenZaurus and OpenSIMpad. OE is the basis of several embedded distributions today, including Yocto and Montavista Linux.
Matthew Allum forms OpendHand, a UK-based consultancy, developing software for mobile platforms. Matthew had been working for some time at handhelds.org, especially on the problem of making effective use of the small screens then common - QVGA (240x320) and upwards. One thing to come out of this was a simple full-screen X11 window manager named Matchbox and the Clutter UI library. OpenedHand worked with Nokia on the 770 tablet and with One Laptop Per Child OLPCx1. A little later on, OpenedHand employee Richard Purdie created Poky Linux (poky rhymes with hockey) based on OpenEmbedded. For more information, see this link http://web.archive.org/web/20070401185003/http://projects.o-hand.com/
Building croos toolchains gets a little easier with Dan Kegel's crosstool scripts at http://kegel.com/crosstool/. Crosstool was based on Bill Gatliff's crossgcc FAQ and build script. Building the toolchain up to this point had always been a stumbling block right at the start of the project. Crosstool has been superseded by crosstool-NG, http://crosstool-ng.org/
Ingo Molnar, Thomas Gleixner and others begin work on the PREEMPT_RT kernel patch which further improves the real-time behaviour of Linux, bringing it close to hard real-time
Nokia release the 770 Internet Tablet running their Maemo Linux distribution. Maemo was built - indirectly - on the base provided by Familiar Linux/GPE and used some of the technology from OpenedHand. The 770 was the first of a line of devices leading up to the N9 phone.
LiMo foundation formed to create a standard Linux cell phone operating system. LiMo is little known in the west, but is used as the basis of a large number of phones in SE Asia, especially Japan where it is very popular on NTT DoCoMo. LiMo founders include Motorola, NEC, NTT DoCoMo, Panasonic and Samsung.
The first Android handset, the T-Mobile G1 (aka the HTC Dream), is shipped in October. It had a Qualcomm MSM7210A (ARM11) processor running @ 528 MHz, 256 MiB NAND flash storage, 192 MiB RAM, 3.2-inch touchscreen @ 320 x 480. Launched with Android 1.0 and a modified Linux 2.6.25 kernel. Android has turned out to be the most successful Linux distribution so far.
Beagleboard launched (http://web.archive.org/web/20080731064636/http://beagleboard.org/). Beagleboard is a low cost - $150 - dev board that set a new standard for price and performance. It has an ARM Cortex A8 CPU (a TI OMAP3530 in fact) running at 600 MHz, 128 MiB RAM, 256 MiB NAND flash, HDMI video and USB 2.0 host and OTG and it has been immensely popular with professionals and hobbyists.
OpenedHand bought out by Intel.
Nokia launch the N900 handset (http://en.wikipedia.org/wiki/Nokia_N900), the first phone running Maemo Linux. It was followed by the N950 and N9 phones. There are no known plans for Nokia to continue this line.
Intel spin off Poky Linux, acquired as part of OpenedHand, as the Yocto Project and transfer ownership to the Linux Foundation.
Linaro (http://www.linaro.org/) is formed as a not-for-profit organisation to improve kernel and gcc support for ARM based SoCs.
Intel and Nokia merge their mobile Linux designs (Moblin and Maemo) into a single project named MeeGo
Raspberry Pi announced, though not shipped until 2012 (http://www.raspberrypi.org/). The 'Pi follows on from the Beagleboard in many ways, setting an even lower price point - $35 - for only slightly less powerful hardware. What is really interesting, however, is the way it has gained attention outside the normal embedded space and been adopted as a platform for teaching computing in the UK and other countries.
It is announced that a new project called Tizen project will encompass and replace the LiMo, Moblin and MeeGo cell phone operating systems. Tizen is run by the Linux Foundation but the principal sponsors were Intel and Samsung. This article gives some background (http://arstechnica.com/information-technology/2011/09/meego-rebooted-as-...)