An embedded system is a small computer that lives within a larger structure that isn’t itself a computer. It is a bundle of computing hardware and software, designed for a specific function, that lives within a larger physical system. Rooted in a microprocessor or microcontroller, embedded systems are controlled by a real-time operating system, run on a limited amount of power and memory, and range widely in size and UI complexity. Embedded systems are all around us, existing within a vast array of consumer, industrial, medical, and military technologies.
An embedded Linux refers to a scenario where an embedded system runs on an operating system based on the Linux kernel. This Linux distribution will be specifically designed for an embedded system; it will have a smaller size than normal, possessing fewer features and less processing power. Such an instance of Linux can only run device-specific purpose-built applications.
Linux is flexible, low-cost and open source, and it has already been ported to custom-purpose microprocessors. Compared to proprietary embedded operating systems, Linux allows for multiple suppliers of software, development and support; it has a stable kernel; and it facilitates the ability to read, modify and redistribute the source code. Linux has many supported chip architectures, and so can run on devices as small as sockets and as large as mainframes. Linux enables a highly modular building-block approach to constructing a custom embeddable system, meaning added flexibility.
For these reasons, Linux has become very popular within embedded systems such as smartphones and tablets, and smart TVs and routers. Perhaps the best example of an embedded Linux is Android, developed by Google. Android is based on a modified Linux kernel, and released under an open source license. Amongst the better-known other small footprint embedded Linux versions are:
- ETLinux. A complete Linux distribution designed to run on small industrial computers.
- LEM. A small (<8 MB) multi-user, networked Linux version that runs on 386s.
- LOAF. "Linux On A Floppy" distribution that runs on 386s.
- uClinux. Linux for systems without MMUs.
- uLinux. Tiny Linux distribution that runs on 386s.
- ThinLinux. A minimized Linux distribution for dedicated camera servers, X-10 controllers, MP3 players, and other embedded applications.