Busybox and Embedded Systems
BusyBox is a multi-call binary that is a key component of many embedded systems, especially when an extremely small footprint is required. (A multi-call binary can perform the functions of many different applications.)
Version 1.00 of BusyBox can be used on any Linux system with a 2.2.x kernel or later, and features special configuration options when used to emulate system commands such as insmod, which have differing requirements between the 2.4 and 2.6 kernels.
How it works
The easiest way for BusyBox to perform the function of one of the applications that it can emulate is by creating and naming a symbolic link and connecting it to the BusyBox binary. You then type the name of the symbolic link, which executes BusyBox. In C programming language terms, the BusyBox executable examines argv[0] to see how it was called and then behaves as though it were the specified application. For example, to get BusyBox to provide the insmod command, issue this command on your root filesystem host:
# ln -s /bin/busybox /sbin/insmod
Then BusyBox will perform the insmod command when insmod is called from any script or application.
On desktop systems, or where the full functionality of traditional applications is needed, it is common to include all of the standalone applications that you want. In embedded systems, or in any resource-limited situation, BusyBox is an attractive way to provide the capabilities of many applications with a single binary and a large number of symbolic links.
On Unix and Linux systems, symbolic links only require eight characters each, because information about the file to which they point can actually be stored in the inode associated with the link itself. This can provide a tremendous savings in disk space.
Enabling and disabling kernel-specific features
BusyBox includes an integrated configuration mechanism as one of its default make targets, which provides a terminal-oriented, menu-driven interface. This built-in configuration mechanism simplifies enabling or disabling various core characteristics of the BusyBox binary, selecting the applications whose functions you want BusyBox to emulate, and enabling or disabling kernel-specific features.
Find out more about BusyBox at http://www.busybox.net.