# 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 fileutils, shellutils, findutils, textutils, grep, gzip,
tar, etc.  BusyBox provides a fairly complete POSIX environment for any small
or embedded system.  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 a kernel, a shell (such as ash),
and an editor (such as elvis-tiny or ae).

=head1 USAGE

When you create a link to BusyBox for the function you wish to use, when BusyBox
is called using that link it will behave as if the command itself has been invoked.

For example, entering

	ln -s ./BusyBox ls
	./ls

will cause BusyBox to behave as 'ls' (if the 'ls' command has been compiled
into BusyBox). 

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

	./BusyBox ls

will also cause BusyBox to behave as 'ls'. 

=head1 COMMON OPTIONS

Most BusyBox commands support the B<-h> option to provide a
terse runtime description of their behavior. 

=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, df, dirname, dmesg, dos2unix, dpkg,
        dpkg-deb, du, dumpkmap, dumpleases, dutmp, echo, egrep, env, expr,
        false, fbset, fdflush, fdformat, 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, ip, ipcalc, iplink,
        iproute, iptunnel, kill, killall, klogd, lash, length, linuxrc,
        ln, loadacm, loadfont, loadkmap, logger, login, logname, logread,
        losetup, ls, lsmod, makedevs, md5sum, mesg, minit, mkdir, mkfifo,
        mkfs.minix, mknod, mkswap, mktemp, modprobe, more, mount, msh,
        msvc, mt, mv, nameif, nc, netstat, nslookup, od, openvt, passwd,
        patch, pidfilehack, pidof, ping, ping6, pivot_root, poweroff,
        printf, ps, pwd, rdate, readlink, realpath, reboot, renice, reset,
        rm, rmdir, rmmod, route, rpm, rpm2cpio, run-parts, sed, setkeycodes,
        sha1sum, sleep, sort, start-stop-daemon, strings, stty, su, sulogin,
        swapoff, swapon, sync, 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, [

=over 4


