A Survey of Embedded Linux Packages
Because Linux is openly and freely available in source form, a great many variations and configurations of Linux distributions have evolved in order to match the needs of a broad range of markets and applications. There are implementations ranging from handheld devices including PDAs and cell phones, to Internet appliances, thin clients, firewalls, telephony infrastructure equipment and even supercomputer clusters. There are small-footprint versions and real-time enhanced versions. And despite the origins of Linux as a PC operating system, there are now ports to numerous non-X86 CPUs, with and without memory management units, including PowerPC, ARM, MIPS, 68K and even microcontrollers. And there's more coming, all the time!
One of the most interesting characteristics about embedded Linux, is the abundance of choice. Even for a given architecture, such as PowerPC, there tends to be an abundance of available alternatives. So, how do you decide which distribution to use? That depends.
First, it's important to realize that all Linux distributions are, more or less, variations on the same theme. That is, they tend to be collections of the same basic components, including the Linux kernel (of course), drivers, command shells (command processors), GUI and windowing frameworks, utilities and libraries.
So, what makes them different? The distinctions between distributions frequently center around which of the many hundreds of Linux utilities are included, what modules or utilities (both open-source and proprietary) are added, kernel patches and modifications, and how the installation, configuration, maintenance and upgrade process is managed. How easy is it, for example, to build a small-footprint Linux system that closely matches your application's unique requirements?
Then there's the question of proprietary open-source software. This might be an important philosophical issue for you or your company. You (or your company) may want to restrict your Linux-related activities to using exclusively open-source software so there are no licensing restrictions or royalty requirements, and so that you can supply source code to your customers. Or, you might prefer a more pragmatic approach, using (and sometimes licensing) whatever software components best match your application's needs—whether proprietary or open-source.
Either way, whether you decide to use pure open source, or to mix open and proprietary software components, using Linux in embedded applications is unlikely to be totally “free” of costs. You'll either invest resources to create your own implementation, money for tools and licensed components, or pay for outside services and support.
That said, there are certainly a wide variety of excellent open-source tools and utilities that you can download free of charge; and, there are also excellent proprietary tools and utilities that you would need to license or purchase. Then, too, bear in mind that the companies that offer “commercial” embedded Linux distributions generally possess a high level of expertise and have well-trained staff ready and waiting to assist you in your project. Paying money to one of the “commercial” embedded Linux suppliers can have many advantages, including development tools, useful utilities—and, of course, support. The proprietary embedded Linux suppliers' companies are actively investing in developing tools and services to differentiate their Linux offerings from the pack, and (or) to advance their standing as a prospective partner for companies building embedded applications that will have Linux inside. In many cases, they are also contributing to the overall pool of open-source software.
Taken as a whole, there are a great many options—both open-source and proprietary—that fall into these general areas:
Tools to automate and simplify the process of generating a Linux configuration that is tuned to a specific embedded system's requirements.
Graphical user interfaces (GUIs), windowing environments and browsers that vary in size, appearance, features and capabilities.
Drivers and utilities that support the specific needs of a diverse range of applications including telephony equipment, multimedia devices, mobile computing, wireless capabilities and more.
Linux kernel enhancements and add-ons that support the “hard”, “firm”, or “soft” real-time performance requirements of such applications as streaming media, IP telephony, machine control, etc.
What follows, are brief descriptions of many of the currently available commercial and noncommercial sources for embedded Linux solutions. Bear in mind that new projects and products come into being on an almost daily basis. For this reason, LinuxDevices maintains a set of continually updated on-line embedded Linux Quick Reference Guides that are available for free public access.