1 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [ ]>
2 <book id="BusyBoxDocumentation">
4 <title>BusyBox - The Swiss Army Knife of Embedded Linux</title>
8 This documentation is free software; you can redistribute
9 it and/or modify it under the terms of the GNU General Public
10 License as published by the Free Software Foundation; either
11 version 2 of the License, or (at your option) any later
16 This program is distributed in the hope that it will be
17 useful, but WITHOUT ANY WARRANTY; without even the implied
18 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19 See the GNU General Public License for more details.
23 You should have received a copy of the GNU General Public
24 License along with this program; if not, write to the Free
25 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
30 For more details see the file COPYING in the source
31 distribution of Linux.
37 <chapter id="Introduction">
38 <title>Introduction</title>
41 BusyBox combines tiny versions of many common UNIX utilities into a single
42 small executable. It provides minimalist replacements for most of the
43 utilities you usually find in fileutils, shellutils, findutils, textutils,
44 grep, gzip, tar, etc. BusyBox provides a fairly complete POSIX environment
45 for any small or embedded system. The utilities in BusyBox generally have
46 fewer options than their full-featured GNU cousins; however, the options
47 that are included provide the expected functionality and behave very much
48 like their GNU counterparts.
52 BusyBox has been written with size-optimization and limited resources in
53 mind. It is also extremely modular so you can easily include or exclude
54 commands (or features) at compile time. This makes it easy to customize
55 your embedded systems. To create a working system, just add a kernel, a
56 shell (such as ash), and an editor (such as elvis-tiny or ae).
61 <title>How to use BusyBox</title>
62 <sect1 id="How-to-use-BusyBox">
67 BusyBox <function> [arguments...] # or
73 <function> [arguments...] # if symlinked
78 <sect1 id="Invoking-BusyBox">
79 <title>Invoking BusyBox</title>
82 When you create a link to BusyBox for the function you wish to use, when
83 BusyBox is called using that link it will behave as if the command itself
99 will cause BusyBox to behave as 'ls' (if the 'ls' command has been compiled
104 You can also invoke BusyBox by issuing the command as an argument on the
105 command line. For example, entering
115 will also cause BusyBox to behave as 'ls'.
120 <sect1 id="Common-options">
121 <title>Common options</title>
124 Most BusyBox commands support the <emphasis>--help</emphasis> option to provide
125 a terse runtime description of their behavior.
130 <chapter id="Commands">
131 <title>BusyBox Commands</title>
132 <sect1 id="Available-BusyBox-Commands">
133 <title>Available BusyBox Commands</title>
135 Currently defined functions include:
139 addgroup, adduser, adjtimex, ar, arping, ash, awk, basename,
140 bunzip2, busybox, bzcat, cal, cat, chgrp, chmod, chown, chroot,
141 chvt, clear, cmp, cp, cpio, crond, crontab, cut, date, dc, dd,
142 deallocvt, delgroup, deluser, df, dirname, dmesg, dos2unix, dpkg,
143 dpkg-deb, du, dumpkmap, dumpleases, dutmp, echo, egrep, env, expr,
144 false, fbset, fdflush, fdformat, fgrep, find, fold, free, freeramdisk,
145 fsck.minix, ftpget, ftpput, getopt, getty, grep, gunzip, gzip,
146 halt, hdparm, head, hexdump, hostid, hostname, httpd, hush, hwclock,
147 id, ifconfig, ifdown, ifup, inetd, init, insmod, ip, ipcalc, iplink,
148 iproute, iptunnel, kill, killall, klogd, lash, length, linuxrc,
149 ln, loadacm, loadfont, loadkmap, logger, login, logname, logread,
150 losetup, ls, lsmod, makedevs, md5sum, mesg, minit, mkdir, mkfifo,
151 mkfs.minix, mknod, mkswap, mktemp, modprobe, more, mount, msh,
152 msvc, mt, mv, nameif, nc, netstat, nslookup, od, openvt, passwd,
153 patch, pidfilehack, pidof, ping, ping6, pivot_root, poweroff,
154 printf, ps, pwd, rdate, readlink, realpath, reboot, renice, reset,
155 rm, rmdir, rmmod, route, rpm, rpm2cpio, run-parts, sed, setkeycodes,
156 sha1sum, sleep, sort, start-stop-daemon, strings, stty, su, sulogin,
157 swapoff, swapon, sync, syslogd, tail, tar, tee, telnet, telnetd,
158 test, tftp, time, top, touch, tr, traceroute, true, tty, udhcpc,
159 udhcpd, umount, uname, uncompress, uniq, unix2dos, unzip,
160 uptime, usleep, uudecode, uuencode, vconfig, vi, vlock, watch,
161 watchdog, wc, wget, which, who, whoami, xargs, yes, zcat, [
170 Usage: ar [OPTION] archive [FILENAME]...
174 Extract or list files from an ar archive.
183 o Preserve original dates
187 v Verbosely list files processed
192 <sect1 id="basename">
193 <title>basename</title>
195 Usage: basename FILE [SUFFIX]
199 Strip directory path and suffixes from FILE. If specified, also removes
209 $ basename /usr/local/bin/foo
211 $ basename /usr/local/bin/
213 $ basename /foo/bar.txt .txt
227 Concatenate <literal>FILE(s)</literal> and prints them to the standard
247 Usage: chgrp [OPTION]... GROUP FILE...
251 Change the group membership of each FILE to GROUP.
260 -R Change files and directories recursively
271 -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
272 $ chgrp root /tmp/foo
274 -r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo
283 Usage: chmod [<emphasis>-R</emphasis>] MODE[,MODE]... FILE...
287 Change file access permissions for the specified
288 <literal>FILE(s)</literal> (or directories). Each MODE is defined by
289 combining the letters for WHO has access to the file, an OPERATOR for
290 selecting how the permissions should be changed, and a PERMISSION for
291 <literal>FILE(s)</literal> (or directories).
295 WHO may be chosen from
300 u User who owns the file
301 g Users in the file's Group
302 o Other users not in the file's group
308 OPERATOR may be chosen from
314 - Remove a permission
315 = Assign a permission
320 PERMISSION may be chosen from
327 x Execute (or access for directories)
328 s Set user (or group) ID bit
329 t Sticky bit (for directories prevents removing files by non-owners)
334 Alternately, permissions can be set numerically where the first three
335 numbers are calculated by adding the octal values, such as
347 An optional fourth digit can also be used to specify
364 -R Change files and directories recursively.
375 -rw-rw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo
378 -rwxrw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo*
381 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
389 Usage: chown [OPTION]... OWNER[<.|:>[GROUP] FILE...
393 Change the owner and/or group of each FILE to OWNER and/or GROUP.
402 -R Change files and directories recursively
413 -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
414 $ chown root /tmp/foo
416 -r--r--r-- 1 root andersen 0 Apr 12 18:25 /tmp/foo
417 $ chown root.root /tmp/foo
419 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
425 <title>chroot</title>
427 Usage: chroot NEWROOT [COMMAND...]
431 Run COMMAND with root directory set to NEWROOT.
441 lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -> /BusyBox
442 $ mount /dev/hdc1 /mnt -t minix
445 -rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls*
457 Change the foreground virtual terminal to /dev/ttyN
477 Usage: cp [OPTION]... SOURCE DEST
482 or: cp [OPTION]... SOURCE... DIRECTORY
487 Copy SOURCE to DEST, or multiple <literal>SOURCE(s)</literal> to
499 -p Preserve file attributes if possible
500 -R Copy directories recursively
509 Usage: cut [OPTION]... [FILE]...
513 Print selected fields from each input FILE to standard output.
522 -b LIST Output only bytes from LIST
523 -c LIST Output only characters from LIST
524 -d CHAR Use CHAR instead of tab as the field delimiter
525 -s Output only the lines containing delimiter
526 -f N Print only these fields
537 $ echo "Hello world" | cut -f 1 -d ' '
539 $ echo "Hello world" | cut -f 2 -d ' '
549 Usage: date [OPTION]... [+FORMAT]
554 or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]]
559 Display the current time in the given FORMAT, or set the system date.
568 -R Output RFC-822 compliant date string
569 -s Set time described by STRING
570 -u Print or set Coordinated Universal Time
581 Wed Apr 12 18:52:41 MDT 2000
590 Usage: dc [EXPRESSION]
594 This is a Tiny RPN calculator that understands the
595 following operations: +, -, /, *, and, or, not, eor. If
596 no arguments are given, dc will process input from
601 The behaviour of BusyBox/dc deviates (just a little ;-)
602 from GNU/dc, but this will be remedied in the future.
619 $ echo 72 9 div 8 mul | dc
629 Usage: dd [OPTION]...
633 Copy a file, converting and formatting according to
643 if=FILE Read from FILE instead of stdin
644 of=FILE Write to FILE instead of stdout
645 bs=N Read and write N bytes at a time
646 count=N Copy only N input blocks
647 skip=N Skip N input blocks
648 seek=N Skip N output blocks
653 Numbers may be suffixed by w (x2), k (x1024), b (x512),
663 $ dd if=/dev/zero of=/dev/ram1 bs=1M count=4
670 <sect1 id="deallocvt">
671 <title>deallocvt</title>
678 Deallocate unused virtual terminal /dev/ttyN.
690 Print the filesystem space used and space available.
700 Filesystem 1k-blocks Used Available Use% Mounted on
701 /dev/sda3 8690864 8553540 137324 98% /
702 /dev/sda1 64216 36364 27852 57% /boot
704 Filesystem 1k-blocks Used Available Use% Mounted on
705 /dev/sda3 8690864 8553540 137324 98% /
711 <title>dirname</title>
718 Strip non-directory suffix from NAME.
739 Usage: dmesg [OPTION]...
743 Print or control the kernel ring buffer.
752 -c Clear the ring buffer after printing
753 -n LEVEL Set the console logging level to LEVEL
754 -s BUFSIZE Query ring buffer using a buffer of BUFSIZE
759 <sect1 id="dos2unix">
760 <title>dos2unix</title>
763 Usage: dos2unix < dosfile > unixfile
767 Converts a text file from dos format to unix format.
772 <sect1 id="dpkg-deb">
773 <title>dpkg-deb</title>
776 Usage: dpkg-deb [OPTION] archive [directory]
780 Debian package archive (.deb) manipulation tool
789 -c List the contents of the filesystem tree archive portion of the package
790 -e Extracts the control information files from a package archive into the specified directory.
791 If no directory is specified then a subdirectory DEBIAN in the current directory is used.
792 -x Silently extracts the filesystem tree from a package archive into the specified directory.
793 -X Extracts the filesystem tree from a package archive into the specified directory, listing the files as it goes.
794 If required the specified directory (but not its parents) will be created.
804 dpkg-deb -e ./busybox_0.48-1_i386.deb
805 dpkg-deb -x ./busybox_0.48-1_i386.deb ./unpack_dir
814 Usage: du [OPTION]... [FILE]...
818 Summarize the disk space used for each FILE or current
819 directory. Disk space printed in units of 1k (i.e.,
829 -l Count sizes many times if hard linked
830 -s Display only a total for each argument
842 12 ./kernel-patches/CVS
855 <sect1 id="dumpkmap">
856 <title>dumpkmap</title>
863 Prints out a binary keyboard translation table to standard output.
872 $ dumpkmap < keymap
885 Dump utmp file format (pipe delimited) from FILE or
895 $ dutmp /var/run/utmp
896 8|7||si|||0|0|0|955637625|760097|0
897 2|0|~|~~|reboot||0|0|0|955637625|782235|0
898 1|20020|~|~~|runlevel||0|0|0|955637625|800089|0
899 8|125||l4|||0|0|0|955637629|998367|0
900 6|245|tty1|1|LOGIN||0|0|0|955637630|998974|0
901 6|246|tty2|2|LOGIN||0|0|0|955637630|999498|0
902 7|336|pts/0|vt00andersen|andersen|:0.0|0|0|0|955637763|0|0
911 Usage: echo [OPTION]... [ARG]...
915 Print ARGs to stdout.
924 -n Suppress trailing newline
925 -e Enable interpretation of escaped characters
926 -E Disable interpretation of escaped characters
936 $ echo "Erik is cool"
938 $ echo -e "Erik\nis\ncool"
942 $ echo "Erik\nis\ncool"
952 Usage: expr EXPRESSION
956 Prints the value of EXPRESSION to standard output.
965 ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2
966 ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0
967 ARG1 < ARG2 ARG1 is less than ARG2
968 ARG1 <= ARG2 ARG1 is less than or equal to ARG2
969 ARG1 = ARG2 ARG1 is equal to ARG2
970 ARG1 != ARG2 ARG1 is unequal to ARG2
971 ARG1 >= ARG2 ARG1 is greater than or equal to ARG2
972 ARG1 > ARG2 ARG1 is greater than ARG2
973 ARG1 + ARG2 arithmetic sum of ARG1 and ARG2
974 ARG1 - ARG2 arithmetic difference of ARG1 and ARG2
975 ARG1 * ARG2 arithmetic product of ARG1 and ARG2
976 ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2
977 ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2
978 STRING : REGEXP anchored pattern match of REGEXP in STRING
979 match STRING REGEXP same as STRING : REGEXP
980 substr STRING POS LENGTH substring of STRING, POS counted from 1
981 index STRING CHARS index in STRING where any CHARS is found, or 0
982 length STRING length of STRING
983 quote TOKEN interpret TOKEN as a string, even if it is a
984 keyword like `match' or an operator like `/'
985 ( EXPRESSION ) value of EXPRESSION
990 Beware that many operators need to be escaped or quoted for shells.
991 Comparisons are arithmetic if both ARGs are numbers, else
992 lexicographical. Pattern matches return the string matched between
993 \( and \) or null; if \( and \) are not used, they return the number
994 of characters matched or 0.
1001 <title>false</title>
1008 Return an exit code of FALSE (1).
1025 <title>fbset</title>
1028 Usage: fbset [OPTION]... [MODE]
1032 Show and modify frame buffer device settings.
1041 -h Display option summary
1042 -fb DEVICE Operate on DEVICE
1043 -db FILE Use FILE for mode database
1044 -g XRES YRES VXRES VYRES DEPTH Set all geometry parameters
1045 -t PIXCLOCK LEFT RIGHT UPPER LOWER HSLEN VSLEN Set all timing parameters
1046 -xres RES Set visible horizontal resolution
1047 -yres RES Set visible vertical resolution
1059 # D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz
1060 geometry 1024 768 1024 768 16
1061 timings 12714 128 32 16 4 128 4
1063 rgba 5/11,6/5,5/0,0/0
1069 <sect1 id="fdflush">
1070 <title>fdflush</title>
1073 Usage: fdflush DEVICE
1077 Force floppy disk drive to detect disk change on DEVICE.
1085 Usage: find [PATH]... [EXPRESSION]
1089 Search for files in a directory hierarchy. The default
1090 PATH is the current directory; default EXPRESSION is
1095 EXPRESSION may consist of:
1100 -follow Dereference symbolic links
1101 -name PATTERN File name (leading directories removed) matches PATTERN
1102 -type X Filetype matches X (where X is one of: f,d,l,b,c,...)
1103 -perm PERMS Permissions match any of (+NNN); all of (-NNN); or exactly (NNN)
1104 -mtime TIME Modified time is greater than (+N); less than (-N); or exactly (N) days
1114 $ find / -name /etc/passwd
1128 Displays the amount of free and used system memory.
1138 total used free shared buffers
1139 Mem: 257628 248724 8904 59644 93124
1140 Swap: 128516 8404 120112
1141 Total: 386144 257128 129016
1146 <sect1 id="freeramdisk">
1147 <title>freeramdisk</title>
1150 Usage: freeramdisk DEVICE
1154 Free all memory used by the ramdisk DEVICE.
1163 $ freeramdisk /dev/ram2
1168 <sect1 id="fsck.minix">
1169 <title>fsck.minix</title>
1172 Usage: fsck.minix [OPTION]... DEVICE
1176 Perform a consistency check on the MINIX filesystem on
1186 -l List all filenames
1187 -r Perform interactive repairs
1188 -a Perform automatic repairs
1190 -s Output super-block information
1191 -m Activate MINIX-like "mode not cleared" warnings
1192 -f Force file system check.
1198 <title>getopt</title>
1201 Usage: getopt [OPTIONS]...
1205 Parse command options
1210 -a, --alternative Allow long options starting with single -\n"
1211 -l, --longoptions=longopts Long options to be recognized\n"
1212 -n, --name=progname The name under which errors are reported\n"
1213 -o, --options=optstring Short options to be recognized\n"
1214 -q, --quiet Disable error reporting by getopt(3)\n"
1215 -Q, --quiet-output No normal output\n"
1216 -s, --shell=shell Set shell quoting conventions\n"
1217 -T, --test Test for getopt(1) version\n"
1218 -u, --unqote Do not quote the output\n"
1231 GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
1232 -n 'example.busybox' -- "$@"`
1233 if [ $? != 0 ] ; then exit 1 ; fi
1234 eval set -- "$GETOPT"
1237 -a|--a-long) echo "Option a" ; shift ;;
1238 -b|--b-long) echo "Option b, argument \`$2'" ; shift 2 ;;
1241 "") echo "Option c, no argument"; shift 2 ;;
1242 *) echo "Option c, argument \`$2'" ; shift 2 ;;
1244 --) shift ; break ;;
1245 *) echo "Internal error!" ; exit 1 ;;
1256 Usage: grep [OPTIONS]... PATTERN [FILE]...
1260 Search for PATTERN in each FILE or stdin.
1269 -h Suppress the prefixing filename on output
1270 -i Ignore case distinctions
1271 -n Print line number with output lines
1272 -q Be quiet. Returns 0 if result was found, 1 otherwise
1273 -v Select non-matching lines
1278 This version of grep matches full regular expressions.
1287 $ grep root /etc/passwd
1288 root:x:0:0:root:/root:/bin/bash
1289 $ grep ^[rR]oo. /etc/passwd
1290 root:x:0:0:root:/root:/bin/bash
1296 <title>gunzip</title>
1299 Usage: gunzip [OPTION]... FILE
1303 Uncompress FILE (or stdin if FILE is '-').
1312 -c Write output to standard output
1313 -t Test compressed file integrity
1323 $ ls -la /tmp/BusyBox*
1324 -rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz
1325 $ gunzip /tmp/BusyBox-0.43.tar.gz
1326 $ ls -la /tmp/BusyBox*
1327 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
1336 Usage: gzip [OPTION]... FILE
1340 Compress FILE (or stdin if FILE is '-') with maximum
1341 compression to FILE.gz (or stdout if FILE is '-').
1350 -c Write output to standard output
1361 $ ls -la /tmp/BusyBox*
1362 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
1363 $ gzip /tmp/BusyBox-0.43.tar
1364 $ ls -la /tmp/BusyBox*
1365 -rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/BusyBox-0.43.tar.gz
1386 Usage: head [OPTION] FILE...
1390 Print first 10 lines of each FILE to standard output.
1391 With more than one FILE, precede each with a header
1392 giving the file name. With no FILE, or when FILE is -,
1393 read standard input.
1402 -n NUM Print first NUM lines instead of first 10
1412 $ head -n 2 /etc/passwd
1413 root:x:0:0:root:/root:/bin/bash
1414 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
1420 <title>hostid</title>
1427 Prints out a unique 32-bit identifier for the current
1428 machine. The 32-bit identifier is intended to be unique
1429 among all UNIX systems in existence.
1433 <sect1 id="hostname">
1434 <title>hostname</title>
1437 Usage: hostname [OPTION]... [HOSTNAME|-F FILE]
1441 Get or set the hostname or DNS domain name. If a
1442 hostname is given (or a file with the -F parameter), the
1443 host name will be set.
1453 -i Addresses for the hostname
1455 -F, --file FILE Use the contents of FILE to specify the hostname
1475 Usage: id [OPTION]... [USERNAME]
1479 Print information for USERNAME or the current user.
1488 -g Print only the group ID
1489 -u Print only the user ID
1490 -n print a name instead of a number (with for -ug)
1491 -r Print the real user ID instead of the effective ID (with -ug)
1502 uid=1000(andersen) gid=1000(andersen)
1515 Init is the parent of all processes.
1519 This version of init is designed to be run only by the
1524 BusyBox init doesn't support multiple runlevels. The
1525 runlevels field of the /etc/inittab file is completely
1526 ignored by BusyBox init. If you want runlevels, use
1531 BusyBox init works just fine without an inittab. If no
1532 inittab is found, it has the following default behavior:
1537 ::sysinit:/etc/init.d/rcS
1543 If it detects that /dev/console is _not_ a serial
1544 console, it will also run:
1549 tty2::askfirst:/bin/sh
1554 If you choose to use an /etc/inittab file, the inittab
1555 entry format is as follows:
1560 <id>:<runlevels>:<action>:<process>
1568 WARNING: This field has a non-traditional meaning for BusyBox init!
1569 The id field is used by BusyBox init to specify the controlling tty
1570 for the specified process to run on. The contents of this field
1571 are appended to "/dev/" and used as-is. There is no need for this
1572 field to be unique, although if it isn't you may have strange
1573 results. If this field is left blank, the controlling tty is set
1574 to the console. Also note that if BusyBox detects that a serial
1575 console is in use, then only entries whose controlling tty is
1576 either the serial console or /dev/null will be run. BusyBox init
1577 does nothing with utmp. We don't need no stinkin' utmp.
1583 <title>runlevels</title>
1586 The runlevels field is completely ignored.
1591 <title>action</title>
1595 Valid actions include: sysinit, respawn, askfirst, wait,
1596 once, and ctrlaltdel.
1601 The available actions can be classified into two groups: actions
1602 that are run only once, and actions that are re-run when the specified
1607 Run only-once actions:
1611 'sysinit' is the first item run on boot. init waits until all
1612 sysinit actions are completed before continuing. Following the
1613 completion of all sysinit actions, all 'wait' actions are run.
1614 'wait' actions, like 'sysinit' actions, cause init to wait until
1615 the specified task completes. 'once' actions are asyncronous,
1616 therefore, init does not wait for them to complete. 'ctrlaltdel'
1617 actions are run immediately before init causes the system to reboot
1618 (unmounting filesystems with a 'ctrlaltdel' action is a very good
1623 Run repeatedly actions:
1627 'respawn' actions are run after the 'once' actions. When a process
1628 started with a 'respawn' action exits, init automatically restarts
1629 it. Unlike sysvinit, BusyBox init does not stop processes from
1630 respawning out of control. The 'askfirst' actions acts just like
1631 respawn, except that before running the specified process it
1632 displays the line "Please press Enter to activate this console."
1633 and then waits for the user to press enter before starting the
1638 Unrecognized actions (like initdefault) will cause init to emit an
1639 error message, and then go along with its business. All actions are
1640 run in the reverse order from how they appear in /etc/inittab.
1646 <title>process</title>
1649 Specifies the process to be executed and its
1655 <title>Example /etc/inittab file</title>
1659 # This is run first except when booting in single-user mode.
1661 ::sysinit:/etc/init.d/rcS
1663 # /bin/sh invocations on selected ttys
1665 # Start an "askfirst" shell on the console (whatever that may be)
1667 # Start an "askfirst" shell on /dev/tty2-4
1668 tty2::askfirst:-/bin/sh
1669 tty2::askfirst:-/bin/sh
1670 tty2::askfirst:-/bin/sh
1672 # /sbin/getty invocations for selected ttys
1674 tty4::respawn:/sbin/getty 38400 tty5
1675 tty5::respawn:/sbin/getty 38400 tty6
1677 # Example of how to put a getty on a serial line (for a terminal)
1679 #::respawn:/sbin/getty -L ttyS0 9600 vt100
1680 #::respawn:/sbin/getty -L ttyS1 9600 vt100
1682 # Example how to put a getty on a modem line.
1683 #::respawn:/sbin/getty 57600 ttyS2
1685 # Stuff to do before rebooting
1686 ::ctrlaltdel:/bin/umount -a -r
1687 ::ctrlaltdel:/sbin/swapoff
1694 <title>insmod</title>
1697 Usage: insmod [OPTION]... MODULE [symbol=value]...
1701 Load MODULE into the kernel.
1710 -f Force module to load into the wrong kernel version.
1711 -k Make module autoclean-able.
1713 -x Do not export externs
1714 -L Prevent simultaneous loads of the same module
1723 Usage: kill [OPTION] PID...
1727 Send a signal (default is SIGTERM) to the specified
1737 -l List all signal names and numbers
1738 -SIG Send signal SIG
1749 252 root root S [apache]
1750 263 www-data www-data S [apache]
1751 264 www-data www-data S [apache]
1752 265 www-data www-data S [apache]
1753 266 www-data www-data S [apache]
1754 267 www-data www-data S [apache]
1760 <sect1 id="killall">
1761 <title>killall</title>
1764 Usage: killall [OPTION] NAME...
1768 Send a signal (default is SIGTERM) to the specified
1778 -l List all signal names and numbers
1779 -SIG Send signal SIG
1795 <title>length</title>
1798 Usage: length STRING
1802 Print the length of STRING.
1821 Usage: ln [OPTION]... TARGET FILE|DIRECTORY
1825 Create a link named FILE or DIRECTORY to the specified
1826 TARGET. You may use '--' to indicate that all following
1827 arguments are non-options.
1836 -s Make symbolic link instead of hard link
1837 -f Remove existing destination file
1847 $ ln -s BusyBox /tmp/ls
1849 lrwxrwxrwx 1 root root 7 Apr 12 18:39 ls -> BusyBox*
1854 <sect1 id="loadacm">
1855 <title>loadacm</title>
1862 Load an acm from stdin.
1871 $ loadacm < /etc/i18n/acmname
1876 <sect1 id="loadfont">
1877 <title>loadfont</title>
1884 Load a console font from stdin.
1893 $ loadfont < /etc/i18n/fontname
1898 <sect1 id="loadkmap">
1899 <title>loadkmap</title>
1906 Load a binary keyboard translation table from stdin.
1915 $ loadkmap < /etc/i18n/lang-keymap
1921 <title>logger</title>
1924 Usage: logger [OPTION]... [MESSAGE]
1928 Write MESSAGE to the system log. If MESSAGE is omitted, log
1938 -s Log to stderr as well as the system log
1939 -t Log using the specified tag (defaults to user name)
1940 -p Enter the message with the specified priority
1941 This may be numerical or a ``facility.level'' pair
1956 <sect1 id="logname">
1957 <title>logname</title>
1964 Print the name of the current user.
1979 <sect1 id="logread">
1980 <title>logread</title>
1983 Usage: logread [OPTION]...
1987 Shows the messages from syslogd (using circular buffer).
1996 -f Output data as the log grows.
2015 Usage: ls [OPTION]... [FILE]...
2028 -a Do not hide entries starting with .
2029 -c With -l: show ctime (the time of last
2030 modification of file status information)
2031 -d List directory entries instead of contents
2032 -e List both full date and full time
2033 -l Use a long listing format
2034 -n List numeric UIDs and GIDs instead of names
2035 -p Append indicator (one of /=@|) to entries
2036 -u With -l: show access time (the time of last
2038 -x List entries by lines instead of by columns
2039 -A Do not list implied . and ..
2040 -C List entries by columns
2041 -F Append indicator (one of */=@|) to entries
2042 -L list entries pointed to by symbolic links
2043 -R List subdirectories recursively
2058 <title>lsmod</title>
2065 List currently loaded kernel modules.
2069 <sect1 id="makedevs">
2070 <title>makedevs</title>
2073 Usage: makedevsf NAME TYPE MAJOR MINOR FIRST LAST [s]
2077 Create a range of block or character special files.
2086 b Make a block (buffered) device
2087 c or u Make a character (un-buffered) device
2088 p Make a named pipe. MAJOR and MINOR are ignored for named pipes
2093 FIRST specifies the number appended to NAME to create
2094 the first device. LAST specifies the number of the last
2095 item that should be created. If 's' is the last
2096 argument, the base device is created as well.
2105 $ makedevs /dev/ttyS c 4 66 2 63
2106 [creates ttyS2-ttyS63]
2107 $ makedevs /dev/hda b 3 0 0 8 s
2108 [creates hda,hda1-hda8]
2114 <title>md5sum</title>
2117 Usage: md5sum [OPTION]... FILE...
2121 Print or check MD5 checksums.
2130 -b Read files in binary mode
2131 -c Check MD5 sums against given list
2132 -t Read files in text mode (default)
2138 The following two options are useful only when verifying
2144 -s Don't output anything, status code shows success
2145 -w Warn about improperly formated MD5 checksum lines
2156 6fd11e98b98a58f64ff3398d7b324003 busybox
2158 6fd11e98b98a58f64ff3398d7b324003 busybox
2159 6fd11e98b98a58f64ff3398d7b324002 busybox
2160 md5sum: MD5 check failed for 'busybox'
2167 <title>mkdir</title>
2170 Usage: mkdir [OPTION]... DIRECTORY...
2174 Create the DIRECTORY(s), if they do not already exist.
2183 -m Set permission mode (as in chmod), not rwxrwxrwx - umask
2184 -p No error if directory exists, make parent directories as needed
2196 /tmp/foo: File exists
2197 $ mkdir /tmp/foo/bar/baz
2198 /tmp/foo/bar/baz: No such file or directory
2199 $ mkdir -p /tmp/foo/bar/baz
2205 <title>mkfifo</title>
2208 Usage: mkfifo [OPTION] NAME
2212 Create a named pipe (identical to 'mknod NAME p').
2221 -m MODE Create the pipe using the specified mode (default a=rw)
2226 <sect1 id="mkfs.minix">
2227 <title>mkfs.minix</title>
2230 Usage: mkfs.minix [OPTION]... NAME [BLOCKS]
2234 Make a MINIX filesystem.
2243 -c Check the device for bad blocks
2244 -n [14|30] Specify the maximum length of filenames
2245 -i Specify the number of inodes for the filesystem
2246 -l FILENAME Read the bad blocks list from FILENAME
2247 -v Make a Minix version 2 filesystem
2253 <title>mknod</title>
2256 Usage: mknod [OPTION]... NAME TYPE MAJOR MINOR
2260 Create a special file (block, character, or pipe).
2269 -m Create the special file using the specified mode (default a=rw)
2279 b Make a block (buffered) device
2280 c or u Make a character (un-buffered) device
2281 p Make a named pipe. MAJOR and MINOR are ignored for named pipes
2291 $ mknod /dev/fd0 b 2 0
2292 $ mknod -m 644 /tmp/pipe p
2298 <title>mkswap</title>
2301 Usage: mkswap [OPTION]... DEVICE [BLOCKS]
2305 Prepare a disk partition to be used as a swap partition.
2314 -c Check for read-ability.
2315 -v0 Make version 0 swap [max 128 Megs].
2316 -v1 Make version 1 swap [big!] (default for kernels > 2.1.117).
2317 BLOCKS Number of block to use (default is entire partition).
2323 <title>mktemp</title>
2326 Usage: mktemp TEMPLATE
2330 Creates a temporary file with its name based on
2331 TEMPLATE. TEMPLATE is any name with six `Xs' (i.e.,
2341 $ mktemp /tmp/temp.XXXXXX
2343 $ ls -la /tmp/temp.mWiLjM
2344 -rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM
2353 Usage: more [FILE]...
2357 Page through text one screenful at a time.
2372 <title>mount</title>
2375 Usage: mount [OPTION]...
2380 or: mount [OPTION]... DEVICE DIRECTORY
2394 -a Mount all filesystems in /etc/fstab
2395 -o One of the many filesystem options listed below
2396 -r Mount the filesystem read-only
2397 -t TYPE Specify the filesystem type
2398 -w Mount the filesystem read-write
2403 Options for use with the -o flag:
2408 async/sync Writes are asynchronous / synchronous
2409 atime/noatime Enable / disable updates to inode access times
2410 dev/nodev Allow / disallow use of special device files
2411 exec/noexec Allow / disallow use of executable files
2412 loop Mount a file via loop device
2413 suid/nosuid Allow / disallow set-user-id-root programs
2414 remount Remount a currently mounted filesystem
2415 ro/rw Mount filesystem read-only / read-write
2420 There are even more flags that are filesystem specific.
2421 You'll have to see the written documentation for those.
2431 /dev/hda3 on / type minix (rw)
2432 proc on /proc type proc (rw)
2433 devpts on /dev/pts type devpts (rw)
2434 $ mount /dev/fd0 /mnt -t msdos -o ro
2435 $ mount /tmp/diskimage /opt -t ext2 -o loop
2444 Usage: mt [OPTION] OPCODE VALUE
2448 Control magnetic tape drive operation.
2457 -f DEVICE Control DEVICE
2466 Usage: mv SOURCE DEST
2471 or: mv SOURCE... DIRECTORY
2476 Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
2485 $ mv /tmp/foo /bin/bar
2503 Open a pipe to HOST:PORT or listen for a connection on PORT.
2512 $ nc foobar.somedomain.com 25
2513 220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600
2515 214-Commands supported:
2516 214- HELO EHLO MAIL RCPT DATA AUTH
2517 214 NOOP QUIT RSET HELP
2519 221 foobar closing connection
2524 <sect1 id="nslookup">
2525 <title>nslookup</title>
2528 Usage: nslookup [HOST]
2532 Query the nameserver for the IP address of the given
2542 $ nslookup localhost
2556 Usage: ping [OPTION]... HOST
2560 Send ICMP ECHO_REQUEST packets to HOST.
2569 -c COUNT Send only COUNT pings
2570 -s SIZE Send SIZE data bytes in packets (default=56)
2571 -q Quiet mode, only displays output at start and when finished
2582 PING slag (127.0.0.1): 56 data bytes
2583 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms
2585 --- debian ping statistics ---
2586 1 packets transmitted, 1 packets received, 0% packet loss
2587 round-trip min/avg/max = 20.1/20.1/20.1 ms
2592 <sect1 id="poweroff">
2593 <title>poweroff</title>
2600 Shut down the system, and request that the kernel turn
2601 off power upon halting.
2606 <title>printf</title>
2609 Usage: printf FORMAT [ARGUMENT]...
2613 Format and print the given data in a manner similar to
2614 the C printf command.
2623 $ printf "Val=%d\n" 5
2637 Report process status. This version of ps accepts no
2657 PID Uid Gid State Command
2659 2 root root S [kflushd]
2660 3 root root S [kupdate]
2661 4 root root S [kpiod]
2662 5 root root S [kswapd]
2663 742 andersen andersen S [bash]
2664 743 andersen andersen S -bash
2665 745 root root S [getty]
2666 2990 andersen andersen R ps
2679 Print the full filename of the current working
2696 <title>rdate</title>
2699 Usage: rdate [OPTION] HOST
2703 Get and possibly set the system date and time from a remote HOST.
2712 -s Set the system date and time (default).
2713 -p Print the date and time.
2719 <title>reboot</title>
2731 <title>renice</title>
2734 Usage: renice priority pid [pid ...]
2738 Changes priority of running processes. Allowed priorities range
2739 from 20 (the process runs only when nothing else is running) to 0
2740 (default priority) to -20 (almost nothing else ever gets to run).
2745 <title>reset</title>
2760 Usage: rm [OPTION]... FILE...
2764 Remove (unlink) the FILE(s). You may use '--' to
2765 indicate that all following arguments are non-options.
2774 -i Always prompt before removing each destinations
2775 -f Remove existing destinations, never prompt
2776 -r or -R Remove the contents of directories recursively
2792 <title>rmdir</title>
2795 Usage: rmdir DIRECTORY...
2799 Remove DIRECTORY(s) if they are empty.
2814 <title>rmmod</title>
2817 Usage: rmmod [OPTION]... [MODULE]...
2821 Unload MODULE(s) from the kernel.
2830 -a Remove all unused modules (recursively)
2845 <sect1 id="run-parts">
2846 <title>run-parts</title>
2849 Usage: run-parts [-t] [-a ARG] [-u MASK] DIRECTORY
2853 Run a bunch of scripts in a directory.
2862 -t Test only. It only print the file to be executed,
2863 without execute them.
2864 -a ARG Pass ARG as an a argument to the programs executed.
2865 -u MASK Set the umask to MASK before executing the programs.
2876 Usage: sed [OPTION]... SCRIPT [FILE]...
2880 Allowed sed scripts come in the following form:
2895 NUMBER Match specified line number
2897 /REGEXP/ Match specified regexp
2902 ! inverts the meaning of the match
2911 s/regexp/replacement/[igp]
2912 which attempt to match regexp against the pattern space
2913 and if successful replaces the matched portion with replacement.
2915 which appends TEXT after the pattern space
2920 This version of sed matches full regular expressions.
2929 -e Add the script to the commands to be executed
2930 -n Suppress automatic printing of pattern space
2940 $ echo "foo" | sed -e 's/f[a-zA-Z]o/bar/g'
2946 <sect1 id="setkeycodes">
2947 <title>setkeycodes</title>
2950 Usage: setkeycodes SCANCODE KEYCODE ...
2954 Set entries into the kernel's scancode-to-keycode map,
2955 allowing unusual keyboards to generate usable keycodes.
2959 SCANCODE may be either xx or e0xx (hexadecimal), and
2960 KEYCODE is given in decimal.
2969 $ setkeycodes e030 127
2983 lash -- the BusyBox LAme SHell (command interpreter)
2987 This command does not yet have proper documentation.
2991 Use lash just as you would use any other shell. It
2992 properly handles pipes, redirects, job control, can be
2993 used as the shell for scripts (#!/bin/sh), and has a
2994 sufficient set of builtins to do what is needed. It does
2995 not (yet) support Bourne Shell syntax. If you need
2996 things like ``if-then-else'', ``while'', and such, use
2997 ash or bash. If you just need a very simple and
2998 extremely small shell, this will do the job.
3003 <title>sleep</title>
3010 Pause for N seconds.
3020 [2 second delay results]
3029 Usage: sort [OPTION]... [FILE]...
3033 Sort lines of text in FILE(s).
3042 -n Compare numerically
3043 -r Reverse after sorting
3053 $ echo -e "e\nf\nb\nd\nc\na" | sort
3064 <sect1 id="swapoff">
3065 <title>swapoff</title>
3068 Usage: swapoff [OPTION] [DEVICE]
3072 Stop swapping virtual memory pages on DEVICE.
3081 -a Stop swapping on all swap devices
3087 <title>swapon</title>
3090 Usage: swapon [OPTION] [DEVICE]
3094 Start swapping virtual memory pages on the given device.
3103 -a Start swapping on all swap devices
3116 Write all buffered filesystem blocks to disk.
3120 <sect1 id="syslogd">
3121 <title>syslogd</title>
3124 Usage: syslogd [OPTION]...
3128 Linux system and kernel (provides klogd) logging
3129 utility. Note that this version of syslogd/klogd ignores
3139 -m NUM Interval between MARK lines (default=20min, 0=off)
3140 -n Run as a foreground process
3141 -K Do not start up the klogd process
3142 -O FILE Use an alternate log file (default=/var/log/messages)
3143 -R HOST[:PORT] Log remotely to IP or hostname on PORT (default PORT=514/UDP)
3144 -L Log locally as well as network logging (default is network only)
3145 -C [size(KiB)] Log to a circular buffer. Read this buffer using 'logread'
3155 $ syslogd -R masterlog:514
3156 $ syslogd -R 192.168.1.1:601
3165 Usage: tail [OPTION] [FILE]...
3169 Print last 10 lines of each FILE to standard output.
3170 With more than one FILE, precede each with a header
3171 giving the file name. With no FILE, or when FILE is -,
3181 -n NUM Print last NUM lines instead of last 10
3182 -f Output data as the file grows. This version
3183 of 'tail -f' supports only one file at a time.
3193 $ tail -n 1 /etc/resolv.conf
3203 Usage: tar [MODE] [OPTION] [FILE]...
3211 MODE may be chosen from
3228 f FILE Use FILE for tarfile (or stdin if '-')
3230 exclude FILE File to exclude
3231 v List files processed
3241 $ zcat /tmp/tarball.tar.gz | tar -xf -
3242 $ tar -cf /tmp/tarball.tar /usr/local
3251 Usage: tee [OPTION]... [FILE]...
3255 Copy stdin to FILE(s), and also to stdout.
3264 -a Append to the given FILEs, do not overwrite
3274 $ echo "Hello" | tee /tmp/foo
3283 <title>telnet</title>
3286 Usage: telnet HOST [PORT]
3290 Establish interactive communication with another
3291 computer over a network using the TELNET protocol.
3296 <title>test, [</title>
3299 Usage: test EXPRESSION
3307 Check file types and compare values returning an exit
3308 code determined by the value of EXPRESSION.
3334 <title>touch</title>
3337 Usage: touch [OPTION]... FILE...
3341 Update the last-modified date on (or create) FILE(s).
3350 -c Do not create files
3361 /bin/ls: /tmp/foo: No such file or directory
3364 -rw-rw-r-- 1 andersen andersen 0 Apr 15 01:11 /tmp/foo
3373 Usage: tr [OPTION]... STRING1 [STRING2]
3377 Translate, squeeze, and/or delete characters from stdin,
3387 -c Take complement of STRING1
3388 -d Delete input characters coded STRING1
3389 -s Squeeze multiple output characters of STRING2 into one character
3399 $ echo "gdkkn vnqkc" | tr [a-y] [b-z]
3413 Return an exit code of TRUE (1).
3437 Print the file name of the terminal connected to stdin.
3446 -s Print nothing, only return an exit status
3463 <title>umount</title>
3466 Usage: umount [OPTION]... DEVICE|DIRECTORY
3479 -a Unmount all file systems
3480 -r Try to remount devices as read-only if mount is busy
3481 -f Force filesystem umount (i.e., unreachable NFS server)
3482 -l Do not free loop device (if a loop device has been used)
3498 <title>uname</title>
3501 Usage: uname [OPTION]...
3505 Print certain system information. With no OPTION, same
3515 -a Print all information
3516 -m Print the machine (hardware) type
3517 -n Print the machine's network node hostname
3518 -r Print the operating system release
3519 -s Print the operating system name
3520 -p Print the host processor type
3521 -v Print the operating system version
3532 Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown
3541 Usage: uniq [INPUT [OUTPUT]]
3545 Discard all but one of successive identical lines from
3546 INPUT (or stdin), writing to OUTPUT (or stdout).
3555 -c prefix lines by the number of occurrences
3556 -d only print duplicate lines
3557 -u only print unique lines
3567 $ echo -e "a\na\nb\nc\nc\na" | sort | uniq
3575 <sect1 id="unix2dos">
3576 <title>unix2dos</title>
3579 Usage: unix2dos < unixfile > dosfile
3583 Converts a text file from unix format to dos format.
3589 <title>unrpm</title>
3592 Usage: unrpm < package.rpm | gzip -d | cpio -idmuv
3596 Extracts an rpm archive.
3602 <title>update</title>
3605 Usage: update [OPTION]...
3609 Periodically flush filesystem buffers.
3618 -S Force use of sync(2) instead of flushing
3619 -s SECS Call sync this often (default 30)
3620 -f SECS Flush some buffers this often (default 5)
3626 <title>uptime</title>
3633 Display how long the system has been running since boot.
3643 1:55pm up 2:30, load average: 0.09, 0.04, 0.00
3649 <title>usleep</title>
3656 Pause for N microseconds.
3666 [pauses for 1 second]
3671 <sect1 id="uudecode">
3672 <title>uudecode</title>
3675 Usage: uudecode [OPTION] [FILE]
3679 Uudecode a uuencoded file.
3688 -o FILE Direct output to FILE
3698 $ uudecode -o busybox busybox.uu
3700 -rwxr-xr-x 1 ams ams 245264 Jun 7 21:35 busybox
3705 <sect1 id="uuencode">
3706 <title>uuencode</title>
3709 Usage: uuencode [OPTION] [INFILE] OUTFILE
3722 -m Use base64 encoding as of RFC1521
3732 $ uuencode busybox busybox
3734 M?T5,1@$!`0````````````(``P`!````L+@$"#0```!0N@,``````#0`(``&
3736 $ uudecode busybox busybox > busybox.uu
3742 <sect1 id="watchdog">
3743 <title>watchdog</title>
3746 Usage: watchdog device
3750 Periodically writes to watchdog device B<device>.
3758 Usage: wc [OPTION]... [FILE]...
3762 Print line, word, and byte counts for each FILE, and a
3763 total line if more than one FILE is specified. With no
3773 -c Print the byte counts
3774 -l Print the newline counts
3775 -L Print the length of the longest line
3776 -w Print the word counts
3787 31 46 1365 /etc/passwd
3793 <title>which</title>
3796 Usage: which [COMMAND]...
3816 <title>whoami</title>
3823 Print the user name associated with the current
3840 <title>xargs</title>
3843 Usage: xargs [OPTIONS] [COMMAND] [ARGS...]
3847 Executes COMMAND on every item given by standard input.
3856 -t Print the command just before it is run
3868 $ find . -name '*.c' -print | xargs rm
3877 Usage: yes [STRING]...
3881 Repeatedly output a line with all specified STRING(s),
3890 Usage: zcat [OPTION]... FILE
3894 Uncompress FILE (or stdin if FILE is '-') to stdout.
3903 -t Test compressed file integrity
3918 <chapter id="LIBC-NSS">
3919 <title>LIBC NSS</title>
3922 GNU Libc uses the Name Service Switch (NSS) to configure the
3923 behavior of the C library for the local environment, and to
3924 configure how it reads system data, such as passwords and group
3925 information. BusyBox has made it Policy that it will never use
3926 NSS, and will never use libc calls that make use of NSS. This
3927 allows you to run an embedded system without the need for
3928 installing an /etc/nsswitch.conf file and without /lib/libnss_*
3929 libraries installed.
3933 If you are using a system that is using a remote LDAP server for
3934 authentication via GNU libc NSS, and you want to use BusyBox,
3935 then you will need to adjust the BusyBox source. Chances are
3936 though, that if you have enough space to install of that stuff
3937 on your system, then you probably want the full GNU utilities.
3941 <chapter id="SEE-ALSO">
3942 <title>SEE ALSO</title>
3945 <literal>textutils(1),</literal>
3946 <literal>shellutils(1),</literal>
3951 <chapter id="MAINTAINER">
3952 <title>MAINTAINER</title>
3955 Erik Andersen <andersen@codepoet.org>
3959 <chapter id="AUTHORS">
3960 <title>AUTHORS</title>
3963 The following people have made significant contributions to
3964 BusyBox -- whether they know it or not.
3968 Erik Andersen <andersen@codepoet.org>
3972 Edward Betts <edward@debian.org>
3976 John Beppu <beppu@codepoet.org>
3980 Brian Candler <B.Candler@pobox.com>
3984 Randolph Chung <tausq@debian.org>
3988 Dave Cinege <dcinege@psychosis.com>
3992 Karl M. Hegbloom <karlheg@debian.org>
3996 Daniel Jacobowitz <dan@debian.org>
4000 Matt Kraai <kraai@alumni.carnegiemellon.edu>
4004 John Lombardo <john@deltanet.com>
4008 Glenn McGrath <bug1@netconnect.com.au>
4012 Bruce Perens <bruce@perens.com>
4016 Chip Rosenthal <chip@unicom.com>, <crosenth@covad.com>
4020 Pavel Roskin <proski@gnu.org>
4024 Gyepi Sam <gyepi@praxis-sw.com>
4028 Linus Torvalds <torvalds@transmeta.com>
4032 Mark Whitley <markw@codepoet.org>
4036 Charles P. Wright <cpwright@villagenet.com>
4040 Enrique Zanardi <ezanardi@ull.es>
4044 Vladimir Oleynik <dzo@simtreas.ru>
4049 </book> <!-- End of the book -->