# vi: set sw=4 ts=4:

=head1 NAME

BusyBox - The Swiss Army Knife of Embedded Linux

=head1 SYNTAX

 BusyBox <function> [arguments...]  # or

 <function> [arguments...]	    # if symlinked

=head1 DESCRIPTION

BusyBox combines tiny versions of many common UNIX utilities into a single
small executable. It provides minimalist replacements for most of the utilities
you usually find in GNU coreutils, util-linux, 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 has been written with size-optimization and limited resources in mind.
It is also extremely modular so you can easily include or exclude commands (or
features) at compile time. This makes it easy to customize your embedded
systems. To create a working system, just add /dev, /etc, and a Linux kernel.
BusyBox provides a fairly complete POSIX environment for any small or embedded
system.

BusyBox is extremely configurable.  This allows you to include only the
components you need, thereby reducing binary size. Run 'make config' or 'make
menuconfig' to select the functionality that you wish to enable.  The run
'make' to compile BusyBox using your configuration.

After the compile has finished, you should use 'make install' to install
BusyBox.  This will install the '/bin/busybox' binary, and will also create
symlinks pointing to the '/bin/busybox' binary for each utility that you
compile into BusyBox.  By default, 'make install' will place these symlinks
into the './_install' directory, unless you have defined 'PREFIX', thereby
specifying some alternative location (i.e., 'make PREFIX=/tmp/foo install').
If you wish to install using hardlinks, rather than the default of using
symlinks, you can use 'make PREFIX=/tmp/foo install-hardlinks' instead.

=head1 USAGE

BusyBox is a multi-call binary.  A multi-call binary is an executable program
that performs the same job as more than one utility program.  That means there
is just a single BusyBox binary, but that single binary acts like a large
number of utilities.  This allows BusyBox to be smaller since all the built-in
utility programs (we call them applets) can share code for many common operations.

You can also invoke BusyBox by issuing a command as an argument on the
command line.  For example, entering

	/bin/busybox ls

will also cause BusyBox to behave as 'ls'.

Of course, adding '/bin/busybox' into every command would be painful.  So most
people will invoke BusyBox using links to the BusyBox binary.

For example, entering

	ln -s /bin/busybox ls
	./ls

will cause BusyBox to behave as 'ls' (if the 'ls' command has been compiled
into BusyBox).  Generally speaking, you should never need to make all these
links yourself, as the BusyBox build system will do this for you when you run
the 'make install' command.

If you invoke BusyBox with no arguments, it will provide you with a list of the
applets that have been compiled into your BusyBox binary.

=head1 COMMON OPTIONS

Most BusyBox commands support the B<--help> argument to provide a terse runtime
description of their behavior.  If the CONFIG_FEATURE_VERBOSE_USAGE option has
been enabled, more detailed usage information will also be available.

=head1 COMMANDS

Currently defined functions include:

	addgroup, adduser, adjtimex, ar, arping, ash, awk, basename, bunzip2,
	busybox, bzcat, cal, cat, chgrp, chmod, chown, chroot, chvt, clear, cmp,
	cp, cpio, crond, crontab, cut, date, dc, dd, deallocvt, delgroup, deluser,
	devfsd, df, dirname, dmesg, dos2unix, dpkg, dpkg-deb, du, dumpkmap,
	dumpleases, echo, egrep, env, expr, false, fbset, fdflush, fdformat, fdisk,
	fgrep, find, fold, free, freeramdisk, fsck.minix, ftpget, ftpput, getopt,
	getty, grep, gunzip, gzip, halt, hdparm, head, hexdump, hostid, hostname,
	httpd, hush, hwclock, id, ifconfig, ifdown, ifup, inetd, init, insmod,
	install, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iptunnel, kill, 
	killall, klogd, lash, last, length, linuxrc, ln, loadfont, loadkmap, 
	logger, login, logname, logread, losetup, ls, lsmod, makedevs, md5sum, 
	mesg, mkdir, mkfifo, mkfs.minix, mknod, mkswap, mktemp, modprobe, more, 
	mount, msh, mt, mv, nameif, nc, netstat, nslookup, od, openvt, passwd, 
	patch, pidof, ping, ping6, pipe_progress, pivot_root, poweroff, printf, ps,
	pwd, rdate, readlink, realpath, reboot, renice, reset, rm, rmdir, rmmod, 
	route, rpm, rpm2cpio, run-parts, rx, sed, seq, setkeycodes, sha1sum, sleep,
	sort, start-stop-daemon, strings, stty, su, sulogin, swapoff, swapon, sync,
	sysctl, syslogd, tail, tar, tee, telnet, telnetd, test, tftp, time, top,
	touch, tr, traceroute, true, tty, udhcpc, udhcpd, umount, uname,
	uncompress, uniq, unix2dos, unzip, uptime, usleep, uudecode, uuencode,
	vconfig, vi, vlock, watch, watchdog, wc, wget, which, who, whoami, xargs,
	yes, zcat

=head1 COMMAND DESCRIPTIONS

=over 4


