Building:
=========

The BusyBox build process is similar to the Linux kernel build:

  make menuconfig     # This creates a file called ".config"
  make                # This creates the "busybox" executable
  make install        # or make PREFIX=/path/from/root install

The full list of configuration and install options is available by typing:

  make help

Quick Start:
============

The easy way to try out BusyBox for the first time, without having to install
it, is to enable all features and then use "standalone shell" mode with a
blank command $PATH:

  make allyesconfig
  make
  PATH= ./busybox ash

Standalone shell mode causes busybox's built-in command shell to run
any built-in busybox applets directly, without looking for external
programs by that name.  Supplying an empty command path (as above) means
the only commands busybox can find are the built-in ones.

(Note that the standalone shell requires the /proc directory to function.)

Configuring Busybox:
====================

Busybox is optimized for size, but enabling the full set of functionality
still results in a fairly large executable (more than 1 megabyte when
statically linked).  To save space, busybox can be configured with only the
set of applets needed for each environment.  The minimal configuration, with
all applets disabled, produces a 4k executable.  (It's useless, but very small.)

The manual configurators "make config" and "make menuconfig" modify the
existing configuration.  Quick ways to get starting configurations include
"make allyesconfig" (enables almost all options), "make allnoconfig" (disables
all options), "make allbaseconfig" (enables all applets but disables all
optional features), and "make defconfig" (reset to defaults).

Configuring BusyBox produces a file ".config", which can be saved for future
use.

Installing Busybox:
===================

Busybox is a single executable that can behave like many different commands,
and BusyBox uses the name it was invoked under to determine the desired
behavior.  (Try "mv busybox ls" and then "./ls -l".)

Installing busybox consists of creating symlinks (or hardlinks) to the busybox
binary for each applet enabled in busybox, and making sure these symlinks are
in the shell's command $PATH.  Running "make install" creates these symlinks,
or "make install-hardlinks" creates hardlinks instead (useful on systems with
a limited number of inodes).  This install process ues the file
"busybox.links" (created by make), which contains the list of enabled applets
and the path at which to install them.

The special applet name "busybox" (or with any optional suffix, such as
"busybox-static") uses the first argument to determine which applet to behave
as (for example, "./busybox cat LICENSE").  (Running the busybox applet with
no arguments gives a list of all enabled applets.)

Building out-of-tree:
=====================

By default, the BusyBox build puts its temporary files in the source tree.
Building from a read-only source tree, or to building multiple
configurations from the same source directory, requires the ability to
put the temporary files somewhere else.

To build out of tree, use the O=$BUILDPATH option during the configuration
step, as in:

  make O=/some/empty/directory allyesconfig
  cd /some/empty/directory
  make
  make PREFIX=. install

(Note, O= requires an absolute path.)

Alternately, cd to the empty directory and do this instead:

  make top_srcdir=/path/to/source -f /path/to/source/Makefile allyesconfig
  make
  make install

More Information:
=================

Se also the busybox FAQ, under the questions "How can I get started using
BusyBox" and "How do I build a BusyBox-based system?"  The BusyBox FAQ is
available from http://www.busybox.net/FAQ.html or as the file
docs/busybox.net/FAQ.html in this tarball.
