# 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.  Then 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, in the target directory
specified by PREFIX. PREFIX can be set when configuring BusyBox, or you can
specify an alternative location at install time (i.e., with a command line
like 'make PREFIX=/tmp/foo install'). If you enabled any applet installation
scheme (either as symlinks or hardlinks), these will also be installed in
the location pointed to by PREFIX.

=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


