With MMU-less architectures, there couldn’t be shared libraries. Programs like ls and cat, all the UNIX utilities, have to include the library components. The answer is to have one single executable that can take on different personalities, by simply calling it as a different name. The utility called /bin/BusyBox, when executed will list out its personalities. When a link is made between /bin/ls and /bin/BusyBox, BusyBox will take on the personality of the ls program and function in that manner. In this case, all the library code is kept in one executable and there is incremental code for the various applets and personalities. The problem occurs when there is a large executable some of the functions are simplified. The right side of the slide shows a configuration page used in the configuration mechanism. It is used to select the features and components needed with BusyBox. The size increases as more options are selected, but can be trimmed down considerably when features are not needed. Inside the uClinux distribution there are about 170 other applications, which include perl and python. Over 60-70% of the applications will compile and run on this target. Most things needed to run a normal Linux system are there as well as database applications.

