| # 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, 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 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 however, such as login and su, will use libc functions |
| that 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 require the |
| use of any NSS support files or libraries. |
| |
| =over 4 |
| |
| |