7.4. Busybox-1.12.1

BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. The utilities in BusyBox generally have fewer options than their full-featured GNU cousins; however, the options that are included provide the expected functionality and behave very much like their GNU counterparts. BusyBox provides a fairly complete environment for any small or embedded system.

7.4.1. Installation of Busybox

The following patch fixes some issues that are related to the headers we are using:

patch -Np1 -i ../busybox-1.12.1-fixes-1.patch

The following patch corrects some includes in iptunnel.c to be compatible with the sanatized kernel headers installed earlier:

patch -Np1 -i ../busybox-1.12.1-iptunnel_headers-1.patch

Create the default configuration:

make defconfig
[Note]

Note

Below we are just telling Busybox to use the default configuration of uClibc. For those for more adventureous, you can use make menuconfig, and do a more custom build of your Busybox.

We will need to edit the configuration file, to make sure everything gets compiled:

BUSYBOX_OPTIONS="CONFIG_DMALLOC CONFIG_BUILD_AT_ONCE CONFIG_BUILD_LIBBUSYBOX
    CONFIG_FEATURE_SH_IS_NONE CONFIG_LOCALE_SUPPORT CONFIG_TFTP CONFIG_FTPGET
    CONFIG_FTPPUT CONFIG_IPCALC CONFIG_TFTP CONFIG_HUSH CONFIG_LASH
    CONFIG_MSH CONFIG_INETD CONFIG_DPKG CONFIG_RPM2CPIO CONFIG_RPM
    CONFIG_FOLD CONFIG_LOGNAME CONFIG_OD CONFIG_CRONTAB CONFIG_UUDECODE
    CONFIG_UUENCODE CONFIG_SULOGIN CONFIG_DC CONFIG_DEBUG_YANK_SUSv2
    CONFIG_DEBUG_INIT CONFIG_DEBUG_CROND_OPTION CONFIG_FEATURE_UDHCP_DEBUG
    CONFIG_TASKSET CONFIG_CHATTR CONFIG_FSCK CONFIG_LSATTR CONFIG_CHPST
    CONFIG_SETUIDGID CONFIG_ENVUIDGID CONFIG_ENVDIR CONFIG_SOFTLIMIT
    CONFIG_FEATURE_2_4_MODULES"
for config in $BUSYBOX_OPTIONS; do
    cp .config{,.orig}
    sed -e "s:${config}=y:${config}=n:" .config.orig > .config
done
BUSYBOX_OPTIONS="CONFIG_FEATURE_SH_IS_ASH CONFIG_FEATURE_TRACEROUTE_VERBOSE
    CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE"
for config in $BUSYBOX_OPTIONS; do
    cp .config{,.orig}
    sed -e "s:# ${config} is not set:${config}=y:" .config.orig > .config
done

Compile the package:

make ARCH=i386 CROSS_COMPILE="${CLFS_TARGET}-" CFLAGS="${BUILD}"

Install the package:

make ARCH=i386 CROSS_COMPILE="${CLFS_TARGET}-" CFLAGS="${BUILD}" \
    CONFIG_PREFIX="${CLFS}" install

If your going to build your kernel with modules, you will need to make sure depmod.pl is available:

cp examples/depmod.pl ${CLFS}/cross-tools/bin
chmod 755 ${CLFS}/cross-tools/bin/depmod.pl

7.4.2. Contents of Busybox

Installed programs: To be Written