# 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, 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


