2001-04-06 03:41:23 +08:00
|
|
|
# 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
|
2004-03-27 17:40:15 +08:00
|
|
|
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 provides a fairly complete POSIX
|
|
|
|
environment for any small or embedded system.
|
2001-04-06 03:41:23 +08:00
|
|
|
|
|
|
|
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
|
2004-03-27 17:40:15 +08:00
|
|
|
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 is extremely configurable. This allows you to include only the
|
|
|
|
components you need, thereby reducing binary size. Run 'make config' or 'make
|
|
|
|
menuconfig' for 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.
|
2001-04-06 03:41:23 +08:00
|
|
|
|
|
|
|
=head1 USAGE
|
|
|
|
|
2004-03-27 17:40:15 +08:00
|
|
|
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 the 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.
|
2001-04-06 03:41:23 +08:00
|
|
|
|
|
|
|
For example, entering
|
|
|
|
|
2004-03-27 17:40:15 +08:00
|
|
|
ln -s /bin/busybox ls
|
2001-04-06 03:41:23 +08:00
|
|
|
./ls
|
|
|
|
|
|
|
|
will cause BusyBox to behave as 'ls' (if the 'ls' command has been compiled
|
2004-03-27 17:40:15 +08:00
|
|
|
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.
|
2001-04-06 03:41:23 +08:00
|
|
|
|
2004-03-27 17:40:15 +08:00
|
|
|
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.
|
2001-04-06 03:41:23 +08:00
|
|
|
|
|
|
|
=head1 COMMON OPTIONS
|
|
|
|
|
2004-03-27 17:40:15 +08:00
|
|
|
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.
|
2001-04-06 03:41:23 +08:00
|
|
|
|
|
|
|
=head1 COMMANDS
|
|
|
|
|
|
|
|
Currently defined functions include:
|
|
|
|
|
2003-12-20 15:16:22 +08:00
|
|
|
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, 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, [
|
2001-04-06 03:41:23 +08:00
|
|
|
|
2004-03-27 17:40:15 +08:00
|
|
|
=head1 LIBC NSS
|
|
|
|
|
|
|
|
GNU Libc (glibc) uses the Name Service Switch (NSS) to configure the behavior
|
|
|
|
of the C library for the local environment, and to configure how it reads
|
|
|
|
system data, such as passwords and group information. This is implemented
|
|
|
|
using an /etc/nsswitch.conf configuration file, and using one or more of the
|
|
|
|
/lib/libnss_* libraries. BusyBox tries to avoid using any libc calls that make
|
|
|
|
use of NSS. Some applets, such as login and su, will use libc functions that
|
|
|
|
usually require NSS.
|
|
|
|
|
|
|
|
If you enable CONFIG_USE_BB_PWD_GRP, BusyBox will use internal functions to
|
|
|
|
directly access the /etc/passwd, /etc/group, and /etc/shadow files without
|
|
|
|
using NSS. This may allow you to run your system without the need for
|
|
|
|
installing any of the NSS configuration files and libraries.
|
|
|
|
|
|
|
|
When used with glibc, the BusyBox 'networking' applets will similarly require
|
|
|
|
that you install at least some of the glibc NSS stuff (in particular,
|
|
|
|
/etc/nsswitch.conf, /lib/libnss_dns*, /lib/libnss_files*, and /lib/libresolv*).
|
|
|
|
|
|
|
|
Shameless Plug: As an alternative one could use a C library such as uClibc. In
|
|
|
|
addition to making your system significantly smaller, uClibc does not need or
|
|
|
|
use any NSS support files or libraries.
|
2001-08-28 02:55:10 +08:00
|
|
|
|
2004-03-27 19:35:46 +08:00
|
|
|
=over 4
|
|
|
|
|
|
|
|
|