Often I try to install linux on very small boards (like the boards inside a router a hub etc). This job is not very simple, anyway there are a lot of projects that help in doing this job.
In the following few lines I'm going to describe the most known tools to build your own linux embedded distro:
- Linux Target Image Builder (LTIB) is an open source project based on RPM, Menuconfig and Perl. LTIB is similar in concept to Buildroot and other Linux file system builders. LTIB can develop and deploy BSPs for various target platforms. A user can develop a GNU/Linux image for their specific target. The project is maintained at Savannah, with additional content available at ltib.org. The project was initially sponsored by Freescale Semiconductor and then moved to Savannah. It can be found here.
- PTXdist is a GPL licensed build system for userlands, started by Pengutronix. It uses the Kconfig configuration system from the Linux kernel. Although PTXdist (without patches) still fits on one disc, a whole root filesystem can be built as easy as "ptxdist go". It can be found here.
- uClibc (aka µClibc/pronounced yew-see-lib-see) is a C library for developing embedded Linux systems. It is much smaller than the GNU C Library, but nearly all applications supported by glibc also work perfectly with uClibc. Porting applications from glibc to uClibc typically involves just recompiling the source code. uClibc even supports shared libraries and threading. It currently runs on standard Linux and MMU-less (also known as µClinux) systems with support for alpha, amd64, ARM, Blackfin, cris, h8300, hppa, i386, i960, ia64, m68k, mips/mipsel, PowerPC, SH, SPARC, and v850 processors. uClibc is maintained by Erik Andersen and is licensed under the GNU LESSER GENERAL PUBLIC LICENSE . This license allows you to make closed source commercial applications using uClibc. You do not need to give away all your source code just because you use uClibc and/or run on Linux. uClibc can be found here.
- The Embedded Linux/Microcontroller project is a port of Linux to systems without a Memory Management Unit (MMU). Pronounced "you-see-linux", the name uClinux comes from combining the greek letter "mu" and the english capital "C". "Mu" stands for "micro", and the "C" is for "controller". uClinux first ported to the Motorola MC68328: DragonBall Integrated Microprocessor. The first target system to successfully boot is the PalmPilot using a TRG SuperPilot Board with a custom boot-loader created specifically for our Linux/PalmPilot port. uCLinux can be found here.
- The Embedded Linux Development Kit (ELDK) includes the GNU cross development tools, such as the compilers, binutils, gdb, etc., and a number of pre-built target tools and libraries necessary to provide some functionality on the target system. It is provided for free with full source code, including all patches, extensions, programs and scripts used to build the tools. Some versions of ELDK (4.1) are available in two versions, which use Glibc resp. uClibc as the main C library for the target packages. Packaging and installation is based on the RPM package manager. It can be found here.
- OpenEmbedded offers a best-in-class cross-compile environment (http://www.openembedded.org/wiki/Main_Page). It allows developers to create a complete Linux Distribution for embedded systems. Some of the OpenEmbedded advantages include:
- support for many hardware architectures
- multiple releases for those architectures
- tools for speeding up the process of recreating the base after changes have been made
- easy to customize
- runs on any Linux distribution
- cross-compiles 1000's of packages including GTK+, Qt, the X Windows system, Mono, Java, and about anything else you might ever need
- OpenWrt is described as a Linux distribution for embedded devices. Instead of trying to create a single, static firmware, OpenWrt provides a fully writable filesystem with package management. This frees you from the application selection and configuration provided by the vendor and allows you to customize the device through the use of packages to suit any application. For developer, OpenWrt is the framework to build an application without having to build a complete firmware around it; for users this means the ability for full customization, to use the device in ways never envisioned. OpenWrt is here.
And you what are you using for your embedded linux?