summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorErik Andersen2000-05-19 05:35:19 +0000
committerErik Andersen2000-05-19 05:35:19 +0000
commit330fd2b5767110f29544131d4c72c77e0506b6df (patch)
treeaa360774a903d3ebb0b2b5f3031c2e359f9c3afb /docs
parentd356c6e9d1bc091c64200ecc401aa9b6ffb53151 (diff)
downloadbusybox-330fd2b5767110f29544131d4c72c77e0506b6df.zip
busybox-330fd2b5767110f29544131d4c72c77e0506b6df.tar.gz
More libc portability updates, add in the website (which has not been
archived previously). Wrote 'which' during the meeting today. -Erik
Diffstat (limited to 'docs')
-rw-r--r--docs/busybox.net/BusyBox.html2460
-rw-r--r--docs/busybox.net/images/background.pngbin0 -> 4711 bytes
-rw-r--r--docs/busybox.net/images/busybox2.jpgbin0 -> 8204 bytes
-rw-r--r--docs/busybox.net/index.html434
4 files changed, 2894 insertions, 0 deletions
diff --git a/docs/busybox.net/BusyBox.html b/docs/busybox.net/BusyBox.html
new file mode 100644
index 0000000..5a65db1
--- /dev/null
+++ b/docs/busybox.net/BusyBox.html
@@ -0,0 +1,2460 @@
+<HTML>
+<HEAD>
+<TITLE>BusyBox - The Swiss Army Knife of Embedded Linux</TITLE>
+<LINK REV="made" HREF="mailto:none">
+</HEAD>
+
+<BODY>
+
+<!-- INDEX BEGIN -->
+
+<UL>
+
+ <LI><A HREF="#NAME">NAME</A>
+ <LI><A HREF="#SYNTAX">SYNTAX</A>
+ <LI><A HREF="#DESCRIPTION">DESCRIPTION</A>
+ <LI><A HREF="#USAGE">USAGE</A>
+ <LI><A HREF="#COMMON_OPTIONS">COMMON OPTIONS</A>
+ <LI><A HREF="#COMMANDS">COMMANDS</A>
+ <LI><A HREF="#LIBC_NSS">LIBC NSS</A>
+ <LI><A HREF="#SEE_ALSO">SEE ALSO</A>
+ <LI><A HREF="#MAINTAINER">MAINTAINER</A>
+ <LI><A HREF="#AUTHORS">AUTHORS</A>
+</UL>
+<!-- INDEX END -->
+
+<HR>
+<P>
+<H1><A NAME="NAME">NAME</A></H1>
+<P>
+BusyBox - The Swiss Army Knife of Embedded Linux
+
+<P>
+<HR>
+<H1><A NAME="SYNTAX">SYNTAX</A></H1>
+<P>
+<PRE> BusyBox &lt;function&gt; [arguments...] # or
+</PRE>
+<P>
+<PRE> &lt;function&gt; [arguments...] # if symlinked
+</PRE>
+<P>
+<HR>
+<H1><A NAME="DESCRIPTION">DESCRIPTION</A></H1>
+<P>
+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 emdedded system. The utilities in BusyBox generally have
+fewer options then their full featured GNU cousins; however, the options
+that are included provide the expected functionality and behave very much
+like their GNU counterparts.
+
+<P>
+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).
+
+<P>
+<HR>
+<H1><A NAME="USAGE">USAGE</A></H1>
+<P>
+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.
+
+<P>
+For example, entering
+
+<P>
+<PRE> ln -s ./BusyBox ls
+ ./ls
+</PRE>
+<P>
+will cause BusyBox to behave as 'ls' (if the 'ls' command has been compiled
+into BusyBox).
+
+<P>
+You can also invoke BusyBox by issuing the command as an argument on the
+command line. For example, entering
+
+<P>
+<PRE> ./BusyBox ls
+</PRE>
+<P>
+will also cause BusyBox to behave as 'ls'.
+
+<P>
+<HR>
+<H1><A NAME="COMMON_OPTIONS">COMMON OPTIONS</A></H1>
+<P>
+Most BusyBox commands support the <STRONG>--help</STRONG> option to provide a terse runtime description of their behavior.
+
+<P>
+<HR>
+<H1><A NAME="COMMANDS">COMMANDS</A></H1>
+<P>
+Currently defined functions include:
+
+<P>
+basename, cat, chgrp, chmod, chown, chroot, clear, chvt, cp, cut, date, dd,
+df, dirname, dmesg, du, dutmp, echo, false, fbset, fdflush, find, free,
+freeramdisk, deallocvt, fsck.minix, grep, gunzip, gzip, halt, head, hostid,
+hostname, id, init, kill, killall, length, ln, loadacm, loadfont, loadkmap,
+logger, logname, ls, lsmod, makedevs, math, mkdir, mkfifo, mkfs.minix,
+mknod, mkswap, mktemp, nc, more, mount, mt, mv, nslookup, ping, poweroff,
+printf, ps, pwd, reboot, rm, rmdir, rmmod, sed, setkeycodes, sh, sfdisk,
+sleep, sort, sync, syslogd, swapon, swapoff, tail, tar, test, tee, touch,
+tr, true, tty, umount, uname, uniq, update, uptime, usleep, wc, whoami,
+yes, zcat, [
+
+<P>
+-------------------------------
+
+<DL>
+<DT><STRONG><A NAME="item_basename">basename</A></STRONG><DD>
+<P>
+Usage: basename FILE [SUFFIX]
+
+<P>
+Strips directory path and suffixes from FILE. If specified, also removes
+any trailing SUFFIX.
+
+<P>
+Example:
+
+<P>
+<PRE> $ basename /usr/local/bin/foo
+ foo
+ $ basename /usr/local/bin/
+ bin
+ $ basename /foo/bar.txt .txt
+ bar
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_cat">cat</A></STRONG><DD>
+<P>
+Usage: cat [FILE ...]
+
+<P>
+Concatenates <CODE>FILE(s)</CODE> and prints them to the standard output.
+
+<P>
+Example:
+
+<P>
+<PRE> $ cat /proc/uptime
+ 110716.72 17.67
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_chgrp">chgrp</A></STRONG><DD>
+<P>
+Usage: chgrp [OPTION]... GROUP FILE...
+
+<P>
+Change the group membership of each FILE to GROUP.
+
+<P>
+Options:
+
+<P>
+<PRE> -R change files and directories recursively
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ ls -l /tmp/foo
+ -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
+ $ chgrp root /tmp/foo
+ $ ls -l /tmp/foo
+ -r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_chmod">chmod</A></STRONG><DD>
+<P>
+Usage: chmod [<STRONG>-R</STRONG>] MODE[,MODE]... FILE...
+
+<P>
+Changes file access permissions for the specified <CODE>FILE(s)</CODE> (or
+directories). Each MODE is defined by combining the letters for WHO has
+access to the file, an OPERATOR for selecting how the permissions should be
+changed, and a PERISSION for <CODE>FILE(s)</CODE> (or directories).
+
+<P>
+WHO may be chosen from
+
+<P>
+<PRE> u User who owns the file
+ g Users in the file's Group
+ o Other users not in the file's group
+ a All users
+</PRE>
+<P>
+OPERATOR may be chosen from
+
+<P>
+<PRE> + Add a permission
+ - Remove a permission
+ = Assign a permission
+
+PERMISSION may be chosen from
+</PRE>
+<P>
+<PRE> r Read
+ w Write
+ x Execute (or access for directories)
+ s Set user (or group) ID bit
+ t Stickey bit (for directories prevents removing files by non-owners)
+</PRE>
+<P>
+Alternately, permissions can be set numerically where the first three
+numbers are calculated by adding the octal values, such as
+
+<P>
+<PRE> 4 Read
+ 2 Write
+ 1 Execute
+</PRE>
+<P>
+An optional fourth digit can also be used to specify
+
+<P>
+<PRE> 4 Set user ID
+ 2 Set group ID
+ 1 Stickey bit
+</PRE>
+<P>
+Options:
+
+<P>
+<PRE> -R Change files and directories recursively.
+
+Example:
+</PRE>
+<P>
+<PRE> $ ls -l /tmp/foo
+ -rw-rw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo
+ $ chmod u+x /tmp/foo
+ $ ls -l /tmp/foo
+ -rwxrw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo*
+ $ chmod 444 /tmp/foo
+ $ ls -l /tmp/foo
+ -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_chown">chown</A></STRONG><DD>
+<P>
+Usage: chown [OPTION]... OWNER[&lt;.|:&gt;[GROUP] FILE...
+
+<P>
+Changes the owner and/or group of each FILE to OWNER and/or GROUP.
+
+<P>
+Options:
+
+<P>
+<PRE> -R Changes files and directories recursively
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ ls -l /tmp/foo
+ -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
+ $ chown root /tmp/foo
+ $ ls -l /tmp/foo
+ -r--r--r-- 1 root andersen 0 Apr 12 18:25 /tmp/foo
+ $ chown root.root /tmp/foo
+ ls -l /tmp/foo
+ -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_chroot">chroot</A></STRONG><DD>
+<P>
+Usage: chroot NEWROOT [COMMAND...]
+
+<P>
+Run COMMAND with root directory set to NEWROOT. Example:
+
+<P>
+<PRE> $ ls -l /bin/ls
+ lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -&gt; /BusyBox
+ $ mount /dev/hdc1 /mnt -t minix
+ $ chroot /mnt
+ $ ls -l /bin/ls
+ -rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls*
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_clear">clear</A></STRONG><DD>
+<P>
+Clears the screen.
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_chvt">chvt</A></STRONG><DD>
+<P>
+Usage: chvt N
+
+<P>
+Changes the foreground virtual terminal to /dev/ttyN
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_cp">cp</A></STRONG><DD>
+<P>
+Usage: cp [OPTION]... SOURCE DEST
+
+<P>
+<PRE> or: cp [OPTION]... SOURCE... DIRECTORY
+</PRE>
+<P>
+Copies SOURCE to DEST, or multiple <CODE>SOURCE(s)</CODE> to DIRECTORY.
+
+<P>
+Options:
+
+<P>
+<PRE> -a Same as -dpR
+ -d Preserves links
+ -p Preserves file attributes if possable
+ -R Copies directories recursively
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_cut">cut</A></STRONG><DD>
+<P>
+Usage: cut [OPTION]... [FILE]...
+
+<P>
+Prints selected fields from each input FILE to standard output.
+
+<P>
+Options:
+
+<P>
+<PRE> -b LIST Output only bytes from LIST
+ -c LIST Output only characters from LIST
+ -d DELIM Use DELIM instead of tab as the field delimiter
+ -f N Print only these fields
+ -n Ignored
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ echo &quot;Hello world&quot; | cut -f 1 -d ' '
+ Hello
+ $ echo &quot;Hello world&quot; | cut -f 2 -d ' '
+ world
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_date">date</A></STRONG><DD>
+<P>
+Usage: date [OPTION]... [+FORMAT]
+
+<P>
+<PRE> or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]]
+</PRE>
+<P>
+Displays the current time in the given FORMAT, or sets the system date.
+
+<P>
+Options:
+
+<P>
+<PRE> -R Outputs RFC-822 compliant date string
+ -s Sets time described by STRING
+ -u Prints or sets Coordinated Universal Time
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ date
+ Wed Apr 12 18:52:41 MDT 2000
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_dd">dd</A></STRONG><DD>
+<P>
+Usage: dd [if=name] [of=name] [bs=n] [count=n] [skip=n] [seek=n]
+
+<P>
+Copy a file, converting and formatting according to options
+
+<P>
+<PRE> if=FILE read from FILE instead of stdin
+ of=FILE write to FILE instead of stdout
+ bs=n read and write n bytes at a time
+ count=n copy only n input blocks
+ skip=n skip n input blocks
+ seek=n skip n output blocks
+</PRE>
+<P>
+Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2)
+Example:
+
+<P>
+<PRE> $ dd if=/dev/zero of=/dev/ram1 bs=1M count=4
+ 4+0 records in
+ 4+0 records out
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_df">df</A></STRONG><DD>
+<P>
+Usage: df [filesystem ...]
+
+<P>
+Prints the filesystem space used and space available.
+
+<P>
+Example:
+
+<P>
+<PRE> $ df
+ Filesystem 1k-blocks Used Available Use% Mounted on
+ /dev/sda3 8690864 8553540 137324 98% /
+ /dev/sda1 64216 36364 27852 57% /boot
+ $ df /dev/sda3
+ Filesystem 1k-blocks Used Available Use% Mounted on
+ /dev/sda3 8690864 8553540 137324 98% /
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_dirname">dirname</A></STRONG><DD>
+<P>
+Usage: dirname NAME
+
+<P>
+Strip non-directory suffix from file name
+
+<P>
+Example:
+
+<P>
+<PRE> $ dirname /tmp/foo
+ /tmp
+ $ dirname /tmp/foo/
+ /tmp
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_dmesg">dmesg</A></STRONG><DD>
+<P>
+Usage: dmesg [<STRONG>-c</STRONG>] [<STRONG>-n</STRONG> level] [<STRONG>-s</STRONG> bufsize] Print or controls the kernel ring buffer.
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_du">du</A></STRONG><DD>
+<P>
+Usage: du [OPTION]... [FILE]...
+
+<P>
+Summarize disk space used for each FILE and/or directory. Disk space is
+printed in units of 1k (i.e. 1024 bytes).
+
+<P>
+Options:
+
+<P>
+<PRE> -l count sizes many times if hard linked
+ -s display only a total for each argument
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ ./BusyBox du
+ 16 ./CVS
+ 12 ./kernel-patches/CVS
+ 80 ./kernel-patches
+ 12 ./tests/CVS
+ 36 ./tests
+ 12 ./scripts/CVS
+ 16 ./scripts
+ 12 ./docs/CVS
+ 104 ./docs
+ 2417 .
+
+-------------------------------
+</PRE>
+<DT><STRONG><A NAME="item_dutmp">dutmp</A></STRONG><DD>
+<P>
+Usage: dutmp [FILE]
+
+<P>
+Dump utmp file format (pipe delimited) from FILE or stdin to stdout.
+
+<P>
+Example:
+
+<P>
+<PRE> $ dutmp /var/run/utmp
+ 8|7||si|||0|0|0|955637625|760097|0
+ 2|0|~|~~|reboot||0|0|0|955637625|782235|0
+ 1|20020|~|~~|runlevel||0|0|0|955637625|800089|0
+ 8|125||l4|||0|0|0|955637629|998367|0
+ 6|245|tty1|1|LOGIN||0|0|0|955637630|998974|0
+ 6|246|tty2|2|LOGIN||0|0|0|955637630|999498|0
+ 7|336|pts/0|vt00andersen|andersen|:0.0|0|0|0|955637763|0|0
+
+-------------------------------
+</PRE>
+<DT><STRONG><A NAME="item_echo">echo</A></STRONG><DD>
+<P>
+Usage: echo [-neE] [ARG ...]
+
+<P>
+Prints the specified ARGs to stdout
+
+<P>
+Options:
+
+<P>
+<PRE> -n suppress trailing newline
+ -e interpret backslash-escaped characters (i.e. \t=tab etc)
+ -E disable interpretation of backslash-escaped characters
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ echo &quot;Erik is cool&quot;
+ Erik is cool
+ $ echo -e &quot;Erik\nis\ncool&quot;
+ Erik
+ is
+ cool
+ $ echo &quot;Erik\nis\ncool&quot;
+ Erik\nis\ncool
+
+-------------------------------
+</PRE>
+<DT><STRONG><A NAME="item_false">false</A></STRONG><DD>
+<P>
+Returns an exit code of FALSE (1)
+
+<P>
+Example:
+
+<P>
+<PRE> $ false
+ $ echo $?
+ 1
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_fbset">fbset</A></STRONG><DD>
+<P>
+Usage: fbset [options] [mode]
+
+<P>
+Show and modify frame buffer device settings
+
+<P>
+Options:
+
+<P>
+<PRE> -h
+ -fb
+ -db
+ -a
+ -i
+ -g
+ -t
+ -accel
+ -hsync
+ -vsync
+ -laced
+ -double
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ fbset
+ mode &quot;1024x768-76&quot;
+ # D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz
+ geometry 1024 768 1024 768 16
+ timings 12714 128 32 16 4 128 4
+ accel false
+ rgba 5/11,6/5,5/0,0/0
+ endmode
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_fdflush">fdflush</A></STRONG><DD>
+<P>
+Usage: fdflush device
+
+<P>
+Force floppy disk drive to detect disk change
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_find">find</A></STRONG><DD>
+<P>
+Usage: find [PATH...] [EXPRESSION]
+
+<P>
+Search for files in a directory hierarchy. The default PATH is the current
+directory; default EXPRESSION is '-print'
+
+<P>
+EXPRESSION may consist of:
+
+<P>
+<PRE> -follow Dereference symbolic links.
+ -name PATTERN File name (leading directories removed) matches PATTERN.
+ -print print the full file name followed by a newline to stdout.
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ find / -name /etc/passwd
+ /etc/passwd
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_free">free</A></STRONG><DD>
+<P>
+Usage: free
+
+<P>
+Displays the amount of free and used system memory.
+
+<P>
+Example:
+
+<P>
+<PRE> $ free
+ total used free shared buffers
+ Mem: 257628 248724 8904 59644 93124
+ Swap: 128516 8404 120112
+ Total: 386144 257128 129016
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_freeramdisk">freeramdisk</A></STRONG><DD>
+<P>
+Usage: freeramdisk DEVICE
+
+<P>
+Frees all memory used by the specified ramdisk.
+
+<P>
+Example:
+
+<P>
+<PRE> $ freeramdisk /dev/ram2
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_deallocvt">deallocvt</A></STRONG><DD>
+<P>
+Usage: deallocvt N
+
+<P>
+Deallocates unused virtual terminal /dev/ttyN
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_fsck">fsck.minix</A></STRONG><DD>
+<P>
+Usage: fsck.minix [<STRONG>-larvsmf</STRONG>] /dev/name
+
+<P>
+Performs a consistency check for MINIX filesystems.
+
+<P>
+OPTIONS:
+
+<P>
+<PRE> -l Lists all filenames
+ -r Perform interactive repairs
+ -a Perform automatic repairs
+ -v verbose
+ -s Outputs super-block information
+ -m Activates MINIX-like &quot;mode not cleared&quot; warnings
+ -f Force file system check.
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_grep">grep</A></STRONG><DD>
+<P>
+Usage: grep [OPTIONS]... PATTERN [FILE]...
+
+<P>
+Search for PATTERN in each FILE or standard input.
+
+<P>
+OPTIONS:
+
+<P>
+<PRE> -h suppress the prefixing filename on output
+ -i ignore case distinctions
+ -n print line number with output lines
+ -q be quiet. Returns 0 if result was found, 1 otherwise
+ -v select non-matching lines
+</PRE>
+<P>
+This version of grep matches full regular expresions.
+
+<P>
+Example:
+
+<P>
+<PRE> $ grep root /etc/passwd
+ root:x:0:0:root:/root:/bin/bash
+ $ grep ^[rR]oo. /etc/passwd
+ root:x:0:0:root:/root:/bin/bash
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_gunzip">gunzip</A></STRONG><DD>
+<P>
+Usage: gunzip [OPTION]... FILE
+
+<P>
+Uncompress FILE (or standard input if FILE is '-').
+
+<P>
+Options:
+
+<P>
+<PRE> -c Write output to standard output
+ -t Test compressed file integrity
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ ls -la /tmp/BusyBox*
+ -rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz
+ $ gunzip /tmp/BusyBox-0.43.tar.gz
+ $ ls -la /tmp/BusyBox*
+ -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_gzip">gzip</A></STRONG><DD>
+<P>
+Usage: gzip [OPTION]... FILE
+
+<P>
+Compress FILE with maximum compression. When FILE is '-', reads standard
+input. Implies <STRONG>-c</STRONG>.
+
+<P>
+Options:
+
+<P>
+<PRE> -c Write output to standard output instead of FILE.gz
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ ls -la /tmp/BusyBox*
+ -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
+ $ gzip /tmp/BusyBox-0.43.tar
+ $ ls -la /tmp/BusyBox*
+ -rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/BusyBox-0.43.tar.gz
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_halt">halt</A></STRONG><DD>
+<P>
+Usage: halt
+
+<P>
+This comand halts the system.
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_head">head</A></STRONG><DD>
+<P>
+Usage: head [OPTION] [FILE]...
+
+<P>
+Print first 10 lines of each FILE to standard output. With more than one
+FILE, precede each with a header giving the file name. With no FILE, or
+when FILE is -, read standard input.
+
+<P>
+Options:
+
+<P>
+<PRE> -n NUM Print first NUM lines instead of first 10
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ head -n 2 /etc/passwd
+ root:x:0:0:root:/root:/bin/bash
+ daemon:x:1:1:daemon:/usr/sbin:/bin/sh
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_hostid">hostid</A></STRONG><DD>
+<P>
+Usage: hostid
+
+<P>
+Prints out a unique 32-bit identifier for the current machine. The 32-bit
+identifier is intended to be unique among all UNIX systems in existence.
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_hostname">hostname</A></STRONG><DD>
+<P>
+Usage: hostname [OPTION] {hostname | <STRONG>-F</STRONG> file}
+
+<P>
+Get or set the hostname or DNS domain name. If a hostname is given (or a
+file with the <STRONG>-F</STRONG> parameter), the host name will be set.
+
+<P>
+Options:
+
+<P>
+<PRE> -s Short
+ -i Addresses for the hostname
+ -d DNS domain name
+ -F FILE Use the contents of FILE to specify the hostname
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ hostname
+ slag
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_id">id</A></STRONG><DD>
+<P>
+Print information for USERNAME or the current user
+
+<P>
+Options:
+
+<P>
+<PRE> -g prints only the group ID
+ -u prints only the user ID
+ -r prints the real user ID instead of the effective ID (with -ug)
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ id
+ uid=1000(andersen) gid=1000(andersen)
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_init">init</A></STRONG><DD>
+<P>
+Usage: init
+
+<P>
+Init is the parent of all processes.
+
+<P>
+This version of init is designed to be run only by the kernel.
+
+<P>
+BusyBox init doesn't support multiple runlevels. The runlevels field of the
+/etc/inittab file is completely ignored by BusyBox init. If you want
+runlevels, use sysvinit.
+
+<P>
+BusyBox init works just fine without an inittab. If no inittab is found, it
+has the following default behavior:
+
+<P>
+<PRE> ::sysinit:/etc/init.d/rcS
+ ::askfirst:/bin/sh
+</PRE>
+<P>
+if it detects that /dev/console is _not_ a serial console, it will also
+run:
+
+<P>
+<PRE> tty2::askfirst:/bin/sh
+</PRE>
+<P>
+If you choose to use an /etc/inittab file, the inittab entry format is as
+follows:
+
+<P>
+<PRE> &lt;id&gt;:&lt;runlevels&gt;:&lt;action&gt;:&lt;process&gt;
+</PRE>
+<P>
+<PRE> &lt;id&gt;:
+</PRE>
+<P>
+<PRE> WARNING: This field has a non-traditional meaning for BusyBox init!
+ The id field is used by BusyBox init to specify the controlling tty for
+ the specified process to run on. The contents of this field are
+ appended to &quot;/dev/&quot; and used as-is. There is no need for this field to
+ be unique, although if it isn't you may have strange results. If this
+ field is left blank, it is completely ignored. Also note that if
+ BusyBox detects that a serial console is in use, then all entries
+ containing non-empty id fields will _not_ be run. BusyBox init does
+ nothing with utmp. We don't need no stinkin' utmp.
+</PRE>
+<P>
+<PRE> &lt;runlevels&gt;:
+</PRE>
+<P>
+<PRE> The runlevels field is completely ignored.
+</PRE>
+<P>
+<PRE> &lt;action&gt;:
+</PRE>
+<P>
+<PRE> Valid actions include: sysinit, respawn, askfirst, wait,
+ once, and ctrlaltdel.
+</PRE>
+<P>
+<PRE> askfirst acts just like respawn, but before running the specified
+ process it displays the line &quot;Please press Enter to activate this
+ console.&quot; and then waits for the user to press enter before starting
+ the specified process.
+</PRE>
+<P>
+<PRE> Unrecognised actions (like initdefault) will cause init to emit
+ an error message, and then go along with its business.
+</PRE>
+<P>
+<PRE> &lt;process&gt;:
+</PRE>
+<P>
+<PRE> Specifies the process to be executed and it's command line.
+</PRE>
+<P>
+Example /etc/inittab file:
+
+<P>
+<PRE> # This is run first except when booting in single-user mode.
+ #
+ ::sysinit:/etc/init.d/rcS
+</PRE>
+<P>
+<PRE> # /bin/sh invocations on selected ttys
+ #
+ # Start an &quot;askfirst&quot; shell on the console (whatever that may be)
+ ::askfirst:/bin/sh
+ # Start an &quot;askfirst&quot; shell on /dev/tty2
+ tty2::askfirst:/bin/sh
+</PRE>
+<P>
+<PRE> # /sbin/getty invocations for selected ttys
+ #
+ tty4::respawn:/sbin/getty 38400 tty4
+ tty5::respawn:/sbin/getty 38400 tty5
+</PRE>
+<P>
+<PRE> # Example of how to put a getty on a serial line (for a terminal)
+ #
+ #ttyS0::respawn:/sbin/getty -L ttyS0 9600 vt100
+ #ttyS1::respawn:/sbin/getty -L ttyS1 9600 vt100
+ #
+ # Example how to put a getty on a modem line.
+ #ttyS2::respawn:/sbin/getty -x0 -s 57600 ttyS2
+</PRE>
+<P>
+<PRE> # Stuff to do before rebooting
+ ::ctrlaltdel:/bin/umount -a -r &gt; /dev/null 2&gt;&amp;1
+ ::ctrlaltdel:/sbin/swapoff -a &gt; /dev/null 2&gt;&amp;1
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_kill">kill</A></STRONG><DD>
+<P>
+Usage: kill [<STRONG>-signal</STRONG>] process-id [process-id ...]
+
+<P>
+Send a signal (default is SIGTERM) to the specified
+<CODE>process(es).</CODE>
+
+<P>
+Options:
+
+<P>
+<PRE> -l List all signal names and numbers.
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ ps | grep apache
+ 252 root root S [apache]
+ 263 www-data www-data S [apache]
+ 264 www-data www-data S [apache]
+ 265 www-data www-data S [apache]
+ 266 www-data www-data S [apache]
+ 267 www-data www-data S [apache]
+ $ kill 252
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_killall">killall</A></STRONG><DD>
+<P>
+Usage: killall [<STRONG>-signal</STRONG>] process-name [process-name ...]
+
+<P>
+Send a signal (default is SIGTERM) to the specified
+<CODE>process(es).</CODE>
+
+<P>
+Options:
+
+<P>
+<PRE> -l List all signal names and numbers.
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ killall apache
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_length">length</A></STRONG><DD>
+<P>
+Usage: length STRING
+
+<P>
+Prints out the length of the specified STRING.
+
+<P>
+Example:
+
+<P>
+<PRE> $ length &quot;Hello&quot;
+ 5
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_ln">ln</A></STRONG><DD>
+<P>
+Usage: ln [OPTION] TARGET... LINK_NAME|DIRECTORY
+
+<P>
+Create a link named LINK_NAME or DIRECTORY to the specified TARGET Options:
+
+<P>
+<PRE> -s make symbolic links instead of hard links
+ -f remove existing destination files
+
+Example:
+</PRE>
+<P>
+<PRE> $ ln -s BusyBox /tmp/ls
+ $ ls -l /tmp/ls
+ lrwxrwxrwx 1 root root 7 Apr 12 18:39 ls -&gt; BusyBox*
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_loadacm">loadacm</A></STRONG><DD>
+<P>
+Usage: loadacm
+
+<P>
+Loads an acm from standard input.
+
+<P>
+Example:
+
+<P>
+<PRE> $ loadacm &lt; /etc/i18n/acmname
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_loadfont">loadfont</A></STRONG><DD>
+<P>
+Usage: loadfont
+
+<P>
+Loads a console font from standard input.
+
+<P>
+Example:
+
+<P>
+<PRE> $ loadfont &lt; /etc/i18n/fontname
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_loadkmap">loadkmap</A></STRONG><DD>
+<P>
+Usage: loadkmap
+
+<P>
+Loads a binary keyboard translation table from standard input.
+
+<P>
+Example:
+
+<P>
+<PRE> $ loadkmap &lt; /etc/i18n/lang-keymap
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_logger">logger</A></STRONG><DD>
+<P>
+Usage: logger [OPTION]... [MESSAGE]
+
+<P>
+Write MESSAGE to the system log. If MESSAGE is '-', log stdin.
+
+<P>
+Options:
+
+<P>
+<PRE> -s Log to stderr as well as the system log.
+ -t Log using the specified tag (defaults to user name).
+ -p Enter the message with the specified priority.
+ This may be numerical or a ``facility.level'' pair.
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ logger &quot;hello&quot;
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_logname">logname</A></STRONG><DD>
+<P>
+Usage: logname
+
+<P>
+Print the name of the current user.
+
+<P>
+Example:
+
+<P>
+<PRE> $ logname
+ root
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_ls">ls</A></STRONG><DD>
+<P>
+Usage: ls [<STRONG>-1acdelnpuxACF</STRONG>] [filenames...]
+
+<P>
+Options:
+
+<P>
+<PRE> -a do not hide entries starting with .
+ -c with -l: show ctime (the time of last
+ modification of file status information)
+ -d list directory entries instead of contents
+ -e list both full date and full time
+ -l use a long listing format
+ -n list numeric UIDs and GIDs instead of names
+ -p append indicator (one of /=@|) to entries
+ -u with -l: show access time (the time of last
+ access of the file)
+ -x list entries by lines instead of by columns
+ -A do not list implied . and ..
+ -C list entries by columns
+ -F append indicator (one of */=@|) to entries
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_lsmod">lsmod</A></STRONG><DD>
+<P>
+Usage: lsmod
+
+<P>
+Shows a list of all currently loaded kernel modules.
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_makedevs">makedevs</A></STRONG><DD>
+<P>
+Usage: makedevs NAME TYPE MAJOR MINOR FIRST LAST [s]
+
+<P>
+Creates a range of block or character special files
+
+<P>
+TYPEs include:
+
+<P>
+<PRE> b: Make a block (buffered) device.
+ c or u: Make a character (un-buffered) device.
+ p: Make a named pipe. MAJOR and MINOR are ignored for named pipes.
+</PRE>
+<P>
+FIRST specifies the number appended to NAME to create the first device.
+LAST specifies the number of the last item that should be created. If 's'
+is the last argument, the base device is created as well.
+
+<P>
+Example:
+
+<P>
+<PRE> $ makedevs /dev/ttyS c 4 66 2 63
+ [creates ttyS2-ttyS63]
+ $ makedevs /dev/hda b 3 0 0 8 s
+ [creates hda,hda1-hda8]
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_math">math</A></STRONG><DD>
+<P>
+Usage: math expression ...
+
+<P>
+This is a Tiny RPN calculator that understands the following operations: +,
+-, /, *, and, or, not, eor.
+
+<P>
+Example:
+
+<P>
+<PRE> $ math 2 2 add
+ 4
+ $ math 8 8 \* 2 2 + /
+ 16
+ $ math 0 1 and
+ 0
+ $ math 0 1 or
+ 1
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_mkdir">mkdir</A></STRONG><DD>
+<P>
+Usage: mkdir [OPTION] DIRECTORY...
+
+<P>
+Create the <CODE>DIRECTORY(ies),</CODE> if they do not already exist
+
+<P>
+Options:
+
+<P>
+<PRE> -m set permission mode (as in chmod), not rwxrwxrwx - umask
+ -p no error if dir exists, make parent directories as needed
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ mkdir /tmp/foo
+ $ mkdir /tmp/foo
+ /tmp/foo: File exists
+ $ mkdir /tmp/foo/bar/baz
+ /tmp/foo/bar/baz: No such file or directory
+ $ mkdir -p /tmp/foo/bar/baz
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_mkfifo">mkfifo</A></STRONG><DD>
+<P>
+Usage: mkfifo [OPTIONS] name
+
+<P>
+Creates a named pipe (identical to 'mknod name p')
+
+<P>
+Options:
+
+<P>
+<PRE> -m create the pipe using the specified mode (default a=rw)
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_mkfs">mkfs.minix</A></STRONG><DD>
+<P>
+Usage: mkfs.minix [<STRONG>-c</STRONG> | <STRONG>-l</STRONG> filename] [<STRONG>-nXX</STRONG>] [<STRONG>-iXX</STRONG>] /dev/name [blocks]
+
+<P>
+Make a MINIX filesystem.
+
+<P>
+OPTIONS:
+
+<P>
+<PRE> -c Check the device for bad blocks
+ -n [14|30] Specify the maximum length of filenames
+ -i Specify the number of inodes for the filesystem
+ -l FILENAME Read the bad blocks list from FILENAME
+ -v Make a Minix version 2 filesystem
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_mknod">mknod</A></STRONG><DD>
+<P>
+Usage: mknod [OPTIONS] NAME TYPE MAJOR MINOR
+
+<P>
+Create a special file (block, character, or pipe).
+
+<P>
+Options:
+
+<P>
+<PRE> -m create the special file using the specified mode (default a=rw)
+</PRE>
+<P>
+TYPEs include: b: Make a block (buffered) device. c or u: Make a character
+(un-buffered) device. p: Make a named pipe. MAJOR and MINOR are ignored for
+named pipes.
+
+<P>
+Example:
+
+<P>
+<PRE> $ mknod /dev/fd0 b 2 0
+ $ mknod -m 644 /tmp/pipe p
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_mkswap">mkswap</A></STRONG><DD>
+<P>
+Usage: mkswap [<STRONG>-c</STRONG>] [<STRONG>-v0</STRONG>|<STRONG>-v1</STRONG>] device [block-count]
+
+<P>
+Prepare a disk partition to be used as a swap partition.
+
+<P>
+Options:
+
+<P>
+<PRE> -c Check for read-ability.
+ -v0 Make version 0 swap [max 128 Megs].
+ -v1 Make version 1 swap [big!] (default for kernels &gt; 2.1.117).
+ block-count Number of block to use (default is entire partition).
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_mktemp">mktemp</A></STRONG><DD>
+<P>
+Usage: mktemp [<STRONG>-q</STRONG>] TEMPLATE
+
+<P>
+Creates a temporary file with its name based on TEMPLATE. TEMPLATE is any
+name with six `Xs' (i.e. /tmp/temp.XXXXXX).
+
+<P>
+Example:
+
+<P>
+<PRE> $ mktemp /tmp/temp.XXXXXX
+ /tmp/temp.mWiLjM
+ $ ls -la /tmp/temp.mWiLjM
+ -rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_nc">nc</A></STRONG><DD>
+<P>
+Usage: nc [IP] [port]
+
+<P>
+Netcat opens a pipe to IP:port
+
+<P>
+Example:
+
+<P>
+<PRE> $ nc foobar.somedomain.com 25
+ 220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600
+ help
+ 214-Commands supported:
+ 214- HELO EHLO MAIL RCPT DATA AUTH
+ 214 NOOP QUIT RSET HELP
+ quit
+ 221 foobar closing connection
+
+-------------------------------
+</PRE>
+<DT><STRONG><A NAME="item_more">more</A></STRONG><DD>
+<P>
+Usage: more [file ...]
+
+<P>
+More is a filter for paging through text one screenful at a time.
+
+<P>
+Example:
+
+<P>
+<PRE> $ dmesg | more
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_mount">mount</A></STRONG><DD>
+<P>
+Usage: mount [flags] mount [flags] device directory [<STRONG>-o</STRONG> options,more-options]
+
+<P>
+Flags:
+
+<P>
+<PRE> -a: Mount all file systems in fstab.
+ -o option: One of many filesystem options, listed below.
+ -r: Mount the filesystem read-only.
+ -t fs-type: Specify the filesystem type.
+ -w: Mount for reading and writing (default).
+</PRE>
+<P>
+Options for use with the ``<STRONG>-o</STRONG>'' flag:
+
+<P>
+<PRE> async/sync: Writes are asynchronous / synchronous.
+ atime/noatime: Enable / disable updates to inode access times.
+ dev/nodev: Allow use of special device files / disallow them.
+ exec/noexec: Allow use of executable files / disallow them.
+ loop: Mounts a file via loop device.
+ suid/nosuid: Allow set-user-id-root programs / disallow them.
+ remount: Re-mount a currently-mounted filesystem, changing its flags.
+ ro/rw: Mount for read-only / read-write.
+ There are EVEN MORE flags that are specific to each filesystem.
+ You'll have to see the written documentation for those.
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ mount
+ /dev/hda3 on / type minix (rw)
+ proc on /proc type proc (rw)
+ devpts on /dev/pts type devpts (rw)
+ $ mount /dev/fd0 /mnt -t msdos -o ro
+ $ mount /tmp/diskimage /opt -t ext2 -o loop
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_mt">mt</A></STRONG><DD>
+<P>
+Usage: mt [<STRONG>-f</STRONG> device] opcode value
+
+<P>
+Control magnetic tape drive operation
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_mv">mv</A></STRONG><DD>
+<P>
+Usage: mv SOURCE DEST
+
+<P>
+<PRE> or: mv SOURCE... DIRECTORY
+</PRE>
+<P>
+Rename SOURCE to DEST, or move <CODE>SOURCE(s)</CODE> to DIRECTORY.
+
+<P>
+Example:
+
+<P>
+<PRE> $ mv /tmp/foo /bin/bar
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_nslookup">nslookup</A></STRONG><DD>
+<P>
+Usage: nslookup [HOST]
+
+<P>
+Queries the nameserver for the IP address of the given HOST
+
+<P>
+Example:
+
+<P>
+<PRE> $ nslookup localhost
+ Server: default
+ Address: default
+</PRE>
+<P>
+<PRE> Name: debian
+ Address: 127.0.0.1
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_ping">ping</A></STRONG><DD>
+<P>
+Usage: ping [OPTION]... host
+
+<P>
+Send ICMP ECHO_REQUEST packets to network hosts.
+
+<P>
+Options:
+
+<P>
+<PRE> -c COUNT Send only COUNT pings.
+ -q Quiet mode, only displays output at start
+ and when finished.
+Example:
+</PRE>
+<P>
+<PRE> $ ping localhost
+ PING slag (127.0.0.1): 56 data bytes
+ 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms
+</PRE>
+<P>
+<PRE> --- debian ping statistics ---
+ 1 packets transmitted, 1 packets received, 0% packet loss
+ round-trip min/avg/max = 20.1/20.1/20.1 ms
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_poweroff">poweroff</A></STRONG><DD>
+<P>
+Shuts down the system, and requests that the kernel turn off power upon
+halting.
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_printf">printf</A></STRONG><DD>
+<P>
+Usage: printf format [argument...]
+
+<P>
+Formats and prints the given data in a manner similar to the C printf
+command.
+
+<P>
+Example:
+
+<P>
+<PRE> $ printf &quot;Val=%d\n&quot; 5
+ Val=5
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_ps">ps</A></STRONG><DD>
+<P>
+Usage: ps
+
+<P>
+Report process status
+
+<P>
+This version of ps accepts no options.
+
+<P>
+Example:
+
+<P>
+<PRE> $ ps
+ PID Uid Gid State Command
+ 1 root root S init
+ 2 root root S [kflushd]
+ 3 root root S [kupdate]
+ 4 root root S [kpiod]
+ 5 root root S [kswapd]
+ 742 andersen andersen S [bash]
+ 743 andersen andersen S -bash
+ 745 root root S [getty]
+ 2990 andersen andersen R ps
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_pwd">pwd</A></STRONG><DD>
+<P>
+Prints the full filename of the current working directory.
+
+<P>
+Example:
+
+<P>
+<PRE> $ pwd
+ /root
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_reboot">reboot</A></STRONG><DD>
+<P>
+Instructs the kernel to reboot the system.
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_rm">rm</A></STRONG><DD>
+<P>
+Usage: rm [OPTION]... FILE...
+
+<P>
+Remove (unlink) the <CODE>FILE(s).</CODE>
+
+<P>
+Options:
+
+<P>
+<PRE> -f remove existing destinations, never prompt
+ -r or -R remove the contents of directories recursively
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ rm -rf /tmp/foo
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_rmdir">rmdir</A></STRONG><DD>
+<P>
+Usage: rmdir [OPTION]... DIRECTORY...
+
+<P>
+Remove the <CODE>DIRECTORY(ies),</CODE> if they are empty.
+
+<P>
+Example:
+
+<P>
+<PRE> # rmdir /tmp/foo
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_rmmod">rmmod</A></STRONG><DD>
+<P>
+Usage: rmmod [OPTION]... [MODULE]...
+
+<P>
+Unloads the specified kernel modules from the kernel.
+
+<P>
+Options:
+
+<P>
+<PRE> -a Try to remove all unused kernel modules.
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ rmmod tulip
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_sed">sed</A></STRONG><DD>
+<P>
+Usage: sed [<STRONG>-n</STRONG>] <STRONG>-e</STRONG> script [file...]
+
+<P>
+Allowed sed scripts come in the following form:
+
+<P>
+<PRE> 'ADDR [!] COMMAND'
+</PRE>
+<P>
+<PRE> where address ADDR can be:
+ NUMBER Match specified line number
+ $ Match last line
+ /REGEXP/ Match specified regexp
+ (! inverts the meaning of the match)
+</PRE>
+<P>
+<PRE> and COMMAND can be:
+ s/regexp/replacement/[igp]
+ which attempt to match regexp against the pattern space
+ and if successful replaces the matched portion with replacement.
+</PRE>
+<P>
+<PRE> aTEXT
+ which appends TEXT after the pattern space
+</PRE>
+<P>
+Options:
+
+<P>
+<PRE> -e add the script to the commands to be executed
+ -n suppress automatic printing of pattern space
+</PRE>
+<P>
+This version of sed matches full regular expresions.
+
+<P>
+Example:
+
+<P>
+<PRE> $ echo &quot;foo&quot; | sed -e 's/f[a-zA-Z]o/bar/g'
+ bar
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_setkeycodes">setkeycodes</A></STRONG><DD>
+<P>
+Usage: setkeycodes SCANCODE KEYCODE ...
+
+<P>
+Set entries into the kernel's scancode-to-keycode map, allowing unusual
+keyboards to generate usable keycodes.
+
+<P>
+SCANCODE may be either xx or e0xx (hexadecimal), and KEYCODE is given in
+decimal
+
+<P>
+Example:
+
+<P>
+<PRE> # setkeycodes e030 127
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_sh">sh</A></STRONG><DD>
+<P>
+Usage: sh
+
+<P>
+lash -- the BusyBox LAme SHell (command interpreter)
+
+<P>
+This command does not yet have proper documentation.
+
+<P>
+Use lash just as you would use any other shell. It properly handles pipes,
+redirects, job control, can be used as the shell for scripts (#!/bin/sh),
+and has a sufficient set of builtins to do what is needed. It does not
+(yet) support Bourne Shell syntax. If you need things like
+``if-then-else'', ``while'', and such, use ash or bash. If you just need a
+very simple and extremely small shell, this will do the job.
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_sfdisk">sfdisk</A></STRONG><DD>
+<P>
+Usage: sfdisk [options] device ...
+
+<P>
+device: something like /dev/hda or /dev/sda
+
+<P>
+useful options:
+
+<P>
+<PRE> -s [or --show-size]: list size of a partition
+ -c [or --id]: print or change partition Id
+ -l [or --list]: list partitions of each device
+ -d [or --dump]: idem, but in a format suitable for later input
+ -i [or --increment]: number cylinders etc. from 1 instead of from 0
+ -uS, -uB, -uC, -uM: accept/report in units of sectors/blocks/cylinders/MB
+ -T [or --list-types]:list the known partition types
+ -D [or --DOS]: for DOS-compatibility: waste a little space
+ -R [or --re-read]: make kernel reread partition table
+ -N# : change only the partition with number #
+ -n : do not actually write to disk
+ -O file : save the sectors that will be overwritten to file
+ -I file : restore these sectors again
+ -v [or --version]: print version
+ -? [or --help]: print this message
+</PRE>
+<P>
+dangerous options:
+
+<P>
+<PRE> -g [or --show-geometry]: print the kernel's idea of the geometry
+ -x [or --show-extended]: also list extended partitions on output
+</PRE>
+<P>
+<PRE> or expect descriptors for them on input
+ -L [or --Linux]: do not complain about things irrelevant for Linux
+ -q [or --quiet]: suppress warning messages
+ You can override the detected geometry using:
+ -C# [or --cylinders #]:set the number of cylinders to use
+ -H# [or --heads #]: set the number of heads to use
+ -S# [or --sectors #]: set the number of sectors to use
+</PRE>
+<P>
+You can disable all consistency checking with:
+
+<P>
+<PRE> -f [or --force]: do what I say, even if it is stupid
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_sleep">sleep</A></STRONG><DD>
+<P>
+Usage: sleep N
+
+<P>
+Pause for N seconds.
+
+<P>
+Example:
+
+<P>
+<PRE> $ sleep 2
+ [2 second delay results]
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_sort">sort</A></STRONG><DD>
+<P>
+Usage: sort [<STRONG>-n</STRONG>] [<STRONG>-r</STRONG>] [FILE]...
+
+<P>
+Sorts lines of text in the specified files
+
+<P>
+Example:
+
+<P>
+<PRE> $ echo -e &quot;e\nf\nb\nd\nc\na&quot; | sort
+ a
+ b
+ c
+ d
+ e
+ f
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_sync">sync</A></STRONG><DD>
+<P>
+Usage: sync
+
+<P>
+Write all buffered filesystem blocks to disk.
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_syslogd">syslogd</A></STRONG><DD>
+<P>
+Usage: syslogd [OPTION]...
+
+<P>
+Linux system and kernel (provides klogd) logging utility. Note that this
+version of syslogd/klogd ignores /etc/syslog.conf.
+
+<P>
+Options:
+
+<P>
+<PRE> -m Change the mark timestamp interval. default=20min. 0=off
+ -n Do not fork into the background (for when run by init)
+ -K Do not start up the klogd process (by default syslogd spawns klogd).
+ -O Specify an alternate log file. default=/var/log/messages
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_swapon">swapon</A></STRONG><DD>
+<P>
+Usage: swapon [OPTION] [device]
+
+<P>
+Start swapping virtual memory pages on the given device.
+
+<P>
+Options:
+
+<P>
+<PRE> -a Start swapping on all swap devices
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_swapoff">swapoff</A></STRONG><DD>
+<P>
+Usage: swapoff [OPTION] [device]
+
+<P>
+Stop swapping virtual memory pages on the given device.
+
+<P>
+Options:
+
+<P>
+<PRE> -a Stop swapping on all swap devices
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_tail">tail</A></STRONG><DD>
+<P>
+Usage: tail [OPTION] [FILE]...
+
+<P>
+Print last 10 lines of each FILE to standard output. With more than one
+FILE, precede each with a header giving the file name. With no FILE, or
+when FILE is -, read standard input.
+
+<P>
+Options:
+
+<P>
+<PRE> -n NUM Print last NUM lines instead of first 10
+ -f Output data as the file grows. This version
+ of 'tail -f' supports only one file at a time.
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ tail -n 1 /etc/resolv.conf
+ nameserver 10.0.0.1
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_tar">tar</A></STRONG><DD>
+<P>
+Usage: tar -[cxtvO] [<STRONG>--exclude</STRONG> File] [<STRONG>-f</STRONG> tarFile] [FILE] ...
+
+<P>
+Create, extract, or list files from a tar file. Note that this version of
+tar treats hard links as separate files.
+
+<P>
+Main operation mode:
+
+<P>
+<PRE> c create
+ x extract
+ t list
+</PRE>
+<P>
+File selection:
+
+<P>
+<PRE> f name of tarfile or &quot;-&quot; for stdin
+ O extract to stdout
+ --exclude file to exclude
+</PRE>
+<P>
+Informative output:
+
+<P>
+<PRE> v verbosely list files processed
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ zcat /tmp/tarball.tar.gz | tar -xf -
+ $ tar -cf /tmp/tarball.tar /usr/local
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_test">test, [</A></STRONG><DD>
+<P>
+Usage: test EXPRESSION or [ EXPRESSION ]
+
+<P>
+Checks file types and compares values returning an exit code determined by
+the value of EXPRESSION.
+
+<P>
+Example:
+
+<P>
+<PRE> $ test 1 -eq 2
+ $ echo $?
+ 1
+ $ test 1 -eq 1
+ $ echo $?
+ 0
+ $ [ -d /etc ]
+ $ echo $?
+ 0
+ $ [ -d /junk ]
+ $ echo $?
+ 1
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_tee">tee</A></STRONG><DD>
+<P>
+Usage: tee [OPTION]... [FILE]...
+
+<P>
+Copy standard input to each FILE, and also to standard output.
+
+<P>
+Options:
+
+<P>
+<PRE> -a append to the given FILEs, do not overwrite
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ echo &quot;Hello&quot; | tee /tmp/foo
+ $ cat /tmp/foo
+ Hello
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_touch">touch</A></STRONG><DD>
+<P>
+Usage: touch [<STRONG>-c</STRONG>] file [file ...]
+
+<P>
+Update the last-modified date on (or create) the selected file[s].
+
+<P>
+Example:
+
+<P>
+<PRE> $ ls -l /tmp/foo
+ /bin/ls: /tmp/foo: No such file or directory
+ $ touch /tmp/foo
+ $ ls -l /tmp/foo
+ -rw-rw-r-- 1 andersen andersen 0 Apr 15 01:11 /tmp/foo
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_tr">tr</A></STRONG><DD>
+<P>
+Usage: tr [-cds] STRING1 [STRING2]
+
+<P>
+Translate, squeeze, and/or delete characters from standard input, writing
+to standard output.
+
+<P>
+Options:
+
+<P>
+<PRE> -c take complement of STRING1
+ -d delete input characters coded STRING1
+ -s squeeze multiple output characters of STRING2 into one character
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ echo &quot;gdkkn vnqkc&quot; | tr [a-y] [b-z]
+ hello world
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_true">true</A></STRONG><DD>
+<P>
+Returns an exit code of TRUE (0)
+
+<P>
+Example:
+
+<P>
+<PRE> $ true
+ $ echo $?
+ 0
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_tty">tty</A></STRONG><DD>
+<P>
+Usage: tty
+
+<P>
+Print the file name of the terminal connected to standard input.
+
+<P>
+Options:
+
+<P>
+<PRE> -s print nothing, only return an exit status
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ tty
+ /dev/tty2
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_umount">umount</A></STRONG><DD>
+<P>
+Usage: umount [flags] filesystem|directory
+
+<P>
+Flags:
+
+<P>
+<PRE> -a: Unmount all file systems
+ -r: Try to remount devices as read-only if mount is busy
+ -f: Force filesystem umount (i.e. unreachable NFS server)
+ -l: Do not free loop device (if a loop device has been used)
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ umount /dev/hdc1
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_uname">uname</A></STRONG><DD>
+<P>
+Usage: uname [OPTION]...
+
+<P>
+Print certain system information. With no OPTION, same as <STRONG>-s</STRONG>.
+
+<P>
+Options:
+
+<P>
+<PRE> -a print all information
+ -m the machine (hardware) type
+ -n print the machine's network node hostname
+ -r print the operating system release
+ -s print the operating system name
+ -p print the host processor type
+ -v print the operating system version
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ uname -a
+ Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_uniq">uniq</A></STRONG><DD>
+<P>
+Usage: uniq [OPTION]... [INPUT [OUTPUT]]
+
+<P>
+Discard all but one of successive identical lines from INPUT (or standard
+input), writing to OUTPUT (or standard output).
+
+<P>
+Example:
+
+<P>
+<PRE> $ echo -e &quot;a\na\nb\nc\nc\na&quot; | sort | uniq
+ a
+ b
+ c
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_update">update</A></STRONG><DD>
+<P>
+Usage: update [options]
+
+<P>
+Periodically flushes filesystem buffers.
+
+<P>
+Options:
+
+<P>
+<PRE> -S force use of sync(2) instead of flushing
+ -s SECS call sync this often (default 30)
+ -f SECS flush some buffers this often (default 5)
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_uptime">uptime</A></STRONG><DD>
+<P>
+Usage: uptime
+
+<P>
+Tells how long the system has been running since boot.
+
+<P>
+Example:
+
+<P>
+<PRE> $ uptime
+ 1:55pm up 2:30, load average: 0.09, 0.04, 0.00
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_usleep">usleep</A></STRONG><DD>
+<P>
+Usage: usleep N
+
+<P>
+Pauses for N microseconds.
+
+<P>
+Example:
+
+<P>
+<PRE> $ usleep 1000000
+ [pauses for 1 second]
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_wc">wc</A></STRONG><DD>
+<P>
+Usage: wc [OPTION]... [FILE]...
+
+<P>
+Print line, word, and byte counts for each FILE, and a total line if more
+than one FILE is specified. With no FILE, read standard input.
+
+<P>
+Options:
+
+<P>
+<PRE> -c print the byte counts
+ -l print the newline counts
+ -L print the length of the longest line
+ -w print the word counts
+</PRE>
+<P>
+Example:
+
+<P>
+<PRE> $ wc /etc/passwd
+ 31 46 1365 /etc/passwd
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_whoami">whoami</A></STRONG><DD>
+<P>
+Usage: whoami
+
+<P>
+Prints the user name associated with the current effective user id.
+
+<P>
+Example:
+
+<P>
+<PRE> $ whoami
+ andersen
+</PRE>
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_yes">yes</A></STRONG><DD>
+<P>
+Usage: yes [OPTION]... [STRING]...
+
+<P>
+Repeatedly outputs a line with all specified <CODE>STRING(s),</CODE> or
+`y'.
+
+<P>
+-------------------------------
+
+<DT><STRONG><A NAME="item_zcat">zcat</A></STRONG><DD>
+<P>
+This is essentially an alias for invoking ``gunzip <STRONG>-c</STRONG>'', where it decompresses the file inquestion and send the output to
+stdout.
+
+<P>
+-------------------------------
+
+</DL>
+<P>
+<HR>
+<H1><A NAME="LIBC_NSS">LIBC NSS</A></H1>
+<P>
+GNU Libc 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. BusyBox has made it
+Policy that it will never use NSS, and will never use and libc calls that
+make use of NSS. This allows you to run an embedded system without the need
+for installing an /etc/nsswitch.conf file and without and /lib/libnss_*
+libraries installed.
+
+<P>
+If you are using a system that is using a remote LDAP server for
+authentication via GNU libc NSS, and you want to use BusyBox, then you will
+need to adjust the BusyBox source. Chances are though, that if you have
+enough space to install of that stuff on your system, then you probably
+want the full GNU utilities.
+
+<P>
+<HR>
+<H1><A NAME="SEE_ALSO">SEE ALSO</A></H1>
+<P>
+<CODE>textutils(1),</CODE> <CODE>shellutils(1),</CODE> etc...
+
+<P>
+<HR>
+<H1><A NAME="MAINTAINER">MAINTAINER</A></H1>
+<P>
+Erik Andersen &lt;<A
+HREF="mailto:andersee@debian.org">andersee@debian.org</A>&gt; &lt;<A
+HREF="mailto:andersen@lineo.com">andersen@lineo.com</A>&gt;
+
+<P>
+<HR>
+<H1><A NAME="AUTHORS">AUTHORS</A></H1>
+<P>
+The following people have contributed code to BusyBox whether they know it
+or not.
+
+<P>
+Erik Andersen &lt;<A
+HREF="mailto:andersee@debian.org">andersee@debian.org</A>&gt;
+
+<br>
+
+<P>
+John Beppu &lt;<A HREF="mailto:beppu@lineo.com">beppu@lineo.com</A>&gt;
+
+<br>
+
+<P>
+Brian Candler &lt;<A
+HREF="mailto:B.Candler@pobox.com">B.Candler@pobox.com</A>&gt;
+
+<br>
+
+<P>
+Randolph Chung &lt;<A
+HREF="mailto:tausq@debian.org">tausq@debian.org</A>&gt;
+
+<br>
+
+<P>
+Dave Cinege &lt;<A
+HREF="mailto:dcinege@psychosis.com">dcinege@psychosis.com</A>&gt;
+
+<br>
+
+<P>
+Karl M. Hegbloom &lt;<A
+HREF="mailto:karlheg@debian.org">karlheg@debian.org</A>&gt;
+
+<br>
+
+<P>
+John Lombardo &lt;<A
+HREF="mailto:john@deltanet.com">john@deltanet.com</A>&gt;
+
+<br>
+
+<P>
+Bruce Perens &lt;<A HREF="mailto:bruce@perens.com">bruce@perens.com</A>&gt;
+
+<br>
+
+<P>
+Linus Torvalds &lt;<A
+HREF="mailto:torvalds@transmeta.com">torvalds@transmeta.com</A>&gt;
+
+<br>
+
+<P>
+Charles P. Wright &lt;<A
+HREF="mailto:cpwright@villagenet.com">cpwright@villagenet.com</A>&gt;
+
+<br>
+
+<P>
+Enrique Zanardi &lt;<A
+HREF="mailto:ezanardi@ull.es">ezanardi@ull.es</A>&gt;
+
+<br>
+
+</BODY>
+
+</HTML>
diff --git a/docs/busybox.net/images/background.png b/docs/busybox.net/images/background.png
new file mode 100644
index 0000000..11666ce
--- /dev/null
+++ b/docs/busybox.net/images/background.png
Binary files differ
diff --git a/docs/busybox.net/images/busybox2.jpg b/docs/busybox.net/images/busybox2.jpg
new file mode 100644
index 0000000..abf8f06
--- /dev/null
+++ b/docs/busybox.net/images/busybox2.jpg
Binary files differ
diff --git a/docs/busybox.net/index.html b/docs/busybox.net/index.html
new file mode 100644
index 0000000..ff865dc
--- /dev/null
+++ b/docs/busybox.net/index.html
@@ -0,0 +1,434 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+
+<HTML>
+<HEAD>
+<TITLE>BusyBox</TITLE>
+</HEAD>
+
+<body text="#000000" alink="#660000" link="#660000" bgcolor="#ffffff" vlink="#660000" background="images/background.png" >
+
+<basefont face="lucida, helvetica, arial" size="3">
+
+
+<CENTER>
+ <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
+ <TR>
+ <td bgcolor="#000000">
+ <FONT FACE="lucida, helvetica" COLOR="#ccccc0">
+ <B>B&nbsp;u&nbsp;s&nbsp;y&nbsp;B&nbsp;o&nbsp;x</B>
+ </FONT>
+ </TD>
+ </TR>
+ </TABLE>
+ <a href="/"><IMG SRC="images/busybox2.jpg" alt="BusyBox" border="0" width="360" height="230"</a><BR>
+
+
+<!-- Begin Introduction section -->
+
+
+<TABLE WIDTH=95% CELLSPACING=1 CELLPADDING=4 BORDER=1>
+<TR><TD BGCOLOR="#ccccc0" ALIGN=center>
+ <A NAME="intro"> <BIG><B>
+ The Swiss Army Knife of Embedded Linux
+ </font>
+ </A></B></BIG>
+</TD></TR>
+<TR><TD BGCOLOR="#eeeee0">
+
+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 emdedded system. The utilities in BusyBox generally have fewer options then
+their full featured GNU cousins; however, the options that are included provide
+the expected functionality and behave very much like their GNU counterparts.
+<p>
+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).
+<p>
+
+BusyBox is now maintained by
+<a href="http://www.xmission.com/~andersen/erik/erik.html">
+Erik Andersen</a>, and its ongoing development is being sponsored by
+<a href="http://www.lineo.com/">Lineo</a>.
+<p>
+BusyBox is licensed under the
+<a href="http://www.gnu.org/copyleft/gpl.html">GNU GENERAL PUBLIC LICENSE</a>
+
+
+<!-- Begin Download section -->
+
+<TR><TD BGCOLOR="#ccccc0" ALIGN=center>
+ <A NAME="download"><BIG><B>
+ Download
+ </A></B></BIG>
+</TD></TR>
+<TR><TD BGCOLOR="#eeeee0">
+<ul>
+ <li> Source for the latest release can always be downloaded from
+ <a href="ftp://ftp.lineo.com/pub/busybox">ftp://ftp.lineo.com/pub/busybox</a>.
+</ul>
+
+
+<!-- Begin Latest News section -->
+
+<TR><TD BGCOLOR="#ccccc0" ALIGN=center>
+ <A NAME="news">
+ <BIG><B>
+ Latest News</A>
+ </B></BIG>
+ </A>
+</TD></TR>
+<TR><TD BGCOLOR="#eeeee0">
+
+<ul>
+
+ <p> <li> <b>19 April 2000 -- syslogd bugfix</b>
+ <br>
+ Turns out that there was still a bug in busybox syslogd.
+ For example, with the following test app:
+<pre>
+ #include &lt;syslog.h&gt
+
+ int do_log(char* msg, int delay)
+ {
+ openlog("testlog", LOG_PID, LOG_DAEMON);
+ while(1) {
+ syslog(LOG_ERR, "%s: testing one, two, three\n", msg);
+ sleep(delay);
+ }
+ closelog();
+ return(0);
+ };
+
+ int main(void)
+ {
+ if (fork()==0)
+ do_log("A", 2);
+ do_log("B", 3);
+ }
+</pre>
+ it should be logging stuff from both "A" and "B". As released in 0.43 only stuff
+ from "A" would have been logged. This means that if init tries to log something
+ while say ppp has the syslog open, init would block (which is bad, bad, bad).
+ <p>
+ Karl M. Hegbloom has created a
+ <a href="ftp://ftp.lineo.com/pub/busybox/busybox-0.43-syslog_patch">fix for the problem</a>.
+ Thanks Karl!
+
+
+ <p> <li> <b>18 April 2000 -- BusyBox 0.43 released (finally!)</b>
+ <br>
+ I have finally gotten everything into a state where I feel pretty
+ good about things. This is definitely the most stable, solid release
+ so far. A lot of bugs have been fixed, and the following new apps
+ have been added: sh, basename, dirname, killall, uptime,
+ freeramdisk, tr, echo, test, and usleep. Tar has been completely
+ rewritten from scratch. Bss size has also been greatly reduced.
+ More details are available in the
+ <a href="ftp://ftp.lineo.com/pub/busybox/Changelog">changelog</a>.
+ Oh, and as a special bonus, I wrote some fairly comprehensive
+ <em>documentation</em>, complete with examples and full usage information.
+
+ <p>
+ Many thanks go out to the fine people that have helped by submitting patches
+ and bug reports; particularly instrumental in helping for this release were
+ Karl Hegbloom, Pavel Roskin, Friedrich Vedder, Emanuele Caratti,
+ Bob Tinsley, Nicolas Pitre, Avery Pennarun, Arne Bernin, John Beppu, and Jim Gleason.
+ There were others so if I somehow forgot to mention you, I'm very sorry.
+ <p>
+
+ You can grab BusyBox 0.43 tarballs <a href="ftp://ftp.lineo.com/pub/busybox/">here</a>.
+
+ <p> <li> <b>9 April 2000 -- BusyBox 0.43 pre release</b>
+ <br>
+ Unfortunately, I have not yet finished all the things I want to
+ do for BusyBox 0.43, so I am posting this pre-release for people
+ to poke at. This contains my complete rewrite of tar, which now weighs in at
+ 5k (7k with all options turned on) and works for reading and writing
+ tarballs (which it does correctly for everything I have been able to throw
+ at it). Tar also (optionally) supports the "--exclude" option (mainly because
+ the Linux Router Project folks asked for it). This also has a pre-release
+ of the micro shell I have been writing. This pre-release should be stable
+ enough for production use -- it just isn't a release since I have some structural
+ changes I still want to make.
+ <p>
+ The pre-release can be found <a href="ftp://ftp.lineo.com/pub/busybox/">here</a>.
+ Please let me know ASAP if you find <em>any</em> bugs.
+
+ <p> <li> <b>28 March 2000 -- Andersen Baby Boy release</b>
+ <br>
+ I am pleased to announce that on Tuesday March 28th at 5:48pm, weighing in at 7
+ lbs. 12 oz, Micah Erik Andersen was born at LDS Hospital here in Salt Lake City.
+ He was born in the emergency room less then 5 minutes after we arrived -- and
+ it was such a relief that we even made it to the hospital at all. Despite the
+ fact that I was driving at an amazingly unlawful speed and honking at everybody
+ and thinking decidely unkind thoughts about the people in our way, my wife
+ (inconsiderate of my feelings and complete lack of medical training) was lying
+ down in the back seat saying things like "I think I need to start pushing now"
+ (which she then proceeded to do despite my best encouraging statements to the
+ contrary).
+ <p>
+ Anyway, I'm glad to note that despite the much-faster-than-we-were-expecting
+ labor, both Shaunalei and our new baby boy are doing wonderfuly.
+ <p>
+ So now that I am done with my excuse for the slow release cycle...
+ Progress on the next release of BusyBox has been slow but steady. I expect
+ to have a release sometime during the first week of April. This release will
+ include a number of important changes, including the addition of a shell, a
+ re-write of tar (to accomodate the Linux Router Project), and syslogd can now
+ accept multiple concurrent connections, fixing lots of unexpected blocking
+ problems.
+
+
+ <p> <li> <b>11 February 2000 -- BusyBox 0.42 released</b>
+ <br>
+
+ This is the most solid BusyBox release so far. Many, many
+ bugs have been fixed. See the
+<a href="ftp://ftp.lineo.com/pub/busybox/Changelog">changelog</a> for details.
+
+ Of particular interest, init will now cleanly unmount
+ filesystems on reboot, cp and mv have been rewritten and
+ behave much better, and mount and umount no longer leak
+ loop devices. Many thanks go out to Randolph Chung,
+ Karl M. Hegbloom, Taketoshi Sano, and Pavel Roskin for
+ their hard work on this release of BusyBox. Please pound
+ on it and let me know if you find any bugs.
+
+ <p> <li> <b>19 January 2000 -- BusyBox 0.41 released</b>
+ <br>
+
+ This release includes bugfixes to cp, mv, logger, true, false,
+ mkdir, syslogd, and init. New apps include wc, hostid,
+ logname, tty, whoami, and yes. New features include loop device
+ support in mount and umount, and better TERM handling by init.
+ The changelog can be found <a href="ftp://ftp.lineo.com/pub/busybox/Changelog">here</a>.
+
+ <p> <li> <b>7 January 2000 -- BusyBox 0.40 released</b>
+ <br>
+
+ This release includes bugfixes to init (now includes inittab support),
+ syslogd, head, logger, du, grep, cp, mv, sed, dmesg, ls, kill, gunzip, and mknod.
+ New apps include sort, uniq, lsmod, rmmod, fbset, and loadacm.
+ In particular, this release fixes an important bug in tar which
+ in some cases produced serious security problems.
+ As always, the changelog can be found <a href="ftp://ftp.lineo.com/pub/busybox/Changelog">here</a>.
+
+ <p> <li> <b>11 December 1999 -- BusyBox Website</b>
+ <br>
+ I have received permission from Bruce Perens (the original author of BusyBox)
+ to set up this site as the new primary website for BusyBox. This website
+ will always contain pointers to the latest and greatest, and will also
+ contain the latest documentation on how to use BusyBox, what it can do,
+ what arguments its apps support, etc.
+
+ <p> <li> <b>10 December 1999 -- BusyBox 0.39 released</b>
+ <br>
+ This release includes fixes to init, reboot, halt, kill, and ls, and contains
+ the new apps ping, hostname, mkfifo, free, tail, du, tee, and head. A full
+ changelog can be found <a href="ftp://ftp.lineo.com/pub/busybox/Changelog">here</a>.
+ <p> <li> <b>5 December 1999 -- BusyBox 0.38 released</b>
+ <br>
+ This release includes fixes to tar, cat, ls, dd, rm, umount, find, df,
+ and make install, and includes new apps syslogd/klogd and logger.
+</ul>
+
+
+<!-- Begin Docs section -->
+
+<TR><TD BGCOLOR="#ccccc0" ALIGN=center>
+ <A NAME="docs"><BIG><B>
+ Documentation
+ </A></B></BIG>
+</TD></TR>
+<TR><TD BGCOLOR="#eeeee0">
+Current documentation for BusyBox includes:
+<ul>
+ <li> <a href="BusyBox.html">BusyBox.html</a>
+ This is a list of the all the available commands in BusyBox with complete
+ usage information and examples of how to use each app. I spent
+ a <em>lot</em> of time updating these docs and trying to make them
+ fairly comprehensive for the BusyBox 0.43 release. If you find any
+ errors (factual, grammatical, whatever) please let me know.
+
+ <li> More documentation will follow.
+</ul>
+
+
+<!-- Begin Links section -->
+
+<TR><TD BGCOLOR="#ccccc0" ALIGN=center>
+ <A NAME="related">
+ <BIG><B>
+ Related Software</A>
+ </B></BIG>
+ </A>
+</TD></TR>
+<TR><TD BGCOLOR="#eeeee0">
+
+<ul>
+
+ <li><a href="http://www.debian.org/Packages/unstable/shells/ash.html">ash</a>
+ is a very small Bourne shell. If you need a shell for your embedded systems, this is it.
+ <p>
+
+ <li><a href="http://www.debian.org/Packages/unstable/base/ae.html">ae</a>
+ is a tiny full-screen text editor with both modal (vi-like) and modeless
+ (emacs-like) modes, determined by an ae.rc config file. It makes a nice editor
+ if people that don't know "vi" will need to work on your embedded system.
+ <p>
+
+ <li> <a href="http://www.debian.org/Packages/unstable/base/elvis-tiny.html">elvis-tiny</a>
+ is based on a 1991 Minix version of the elvis "vi" clone. It behaves as one would
+ expect a minamalist vi to behave, and is very small.
+ <p>
+
+ <li> <a href="http://www.asty.org/nano/">nano</a>
+ A small GPLed pico clone that makes a nice editor for people that don't know "vi".
+ <p>
+
+ <li><a href="http://www.debian.org/Packages/unstable/net/iproute.html">iproute</a>
+ Much more flexible replacement for ifconfig, route, etc. It is quite small, and for
+ most networking applications, it is all you need. It also provides support for extremely
+ advanced networking and provides Quality of Service(QoS) support, but most people will
+ just need to use the "ip" command and will not even need to install the rest.
+ <p>
+
+ <li><a href="http://www.debian.org/Packages/unstable/net/pump.html">Pump</a>
+ This is the DHCP/BOOTP client written by RedHat. When compiled properly, it
+ gives you dhcp client support for about 35k.
+ <p>
+
+ <li><a href="http://www.pcug.org.au/~dbell/">sash</a>
+ The Stand Alone SHell. This is a small shell (not Bourne shell compatable)
+ that is similar to busybox in that it provides a number of common utilities as built-ins.
+ <p>
+
+ <li><a href="http://sourceware.cygnus.com/newlib/">NewLib</a>
+ This is a small C library intended for use on embedded systems. If you are finding
+ GNU libc is a bit too big for your applications, try NewLib and it may help.
+ <p>
+
+ <li><a href="http://linuxassembly.org/asmutils.html">asmutils</a>
+ asmutils is similar to BusyBox in that it provides a number of common application
+ for embedded systems that are very tiny. In fact, they are a _lot_ smaller than the
+ equivalent apps in busybox -- but the price you pay for the size is reduced portability
+ (x86 only) and interfaces that are tied directly to a perticular kernel (no libc involved).
+ <p>
+
+ <li><a href="http://tinylogin.lineo.com/">TinyLogin</a>
+ is a nice embedded tool for handling authentication, changing passwords,
+ and similar tasks, and which nicely complements BusyBox.
+ <p>
+
+</ul>
+
+<!-- Begin Projects section -->
+
+<TR><TD BGCOLOR="#ccccc0" ALIGN=center>
+ <A NAME="docs"><BIG><B>
+ Projects using BusyBox
+ </A></B></BIG>
+</TD></TR>
+<TR><TD BGCOLOR="#eeeee0">
+I know of the following projects that use BusyBox
+<ul>
+ <li> <a href="http://www.lineo.com/products/embedix.html">Lineo Embedix Linux</a>
+ <li> <a href="http://cvs.debian.org/boot-floppies/">Debian boot floppies project</a>
+ <li> <a href="http://www.linuxrouter.org/">Linux Router Project </a>
+ <li> <a href="http://linux-embedded.org/">LEM</a>
+ <li> <a href="http://www.toms.net/rb/">tomsrtbt</a>
+
+</ul>
+Do you use BusyBox? I'd love to know about it and I'd be happy to link to you.
+
+
+
+<!-- Begin Links section -->
+
+<TR><TD BGCOLOR="#ccccc0" ALIGN=center>
+ <A NAME="links">
+ <BIG><B>
+ Important Links</A>
+ </B></BIG>
+ </A>
+</TD></TR>
+<TR><TD BGCOLOR="#eeeee0">
+
+<ul>
+
+ <li> <A HREF="http://perens.com/FreeSoftware/">
+ Free Software from Bruce Perens</A><br>
+ The original idea for BusyBox, and all versions up to 0.26 were written
+ by <A HREF="mailto:bruce@perens.com">Bruce Perens</a>. This is his BusyBox website.
+ <p>
+
+ <li> <A HREF="http://freshmeat.net/appindex/1999/04/11/923859921.html">
+ Freshmeat AppIndex record for BusyBox</A>
+ <p>
+
+ <li> <A HREF="http://www.lineo.com/">Lineo</A> is sponsoring BusyBox development.
+ <p>
+
+</ul>
+
+
+
+
+<!-- End of Table -->
+
+</TD></TR>
+</TABLE>
+</P>
+
+
+
+<!-- Footer -->
+<HR>
+<TABLE WIDTH="100%">
+ <TR>
+ <TD>
+ <font size="-1" face="arial, helvetica, sans-serif">
+ Mail all comments, insults, suggestions and bribes to
+ <a href="mailto:andersen@lineo.com">Erik Andersen</a><BR>
+ The Busybox logo is copyright 1999,2000, Erik Andersen.
+ </font>
+ </TD>
+
+ <TD>
+ <a href="http://www.vim.org"><img border=0 width=88 height=32
+ src="images/anim.written.in.vi.gif"
+ alt="This site created with the vi editor"></a>
+ </TD>
+
+ <TD>
+ <a href="http://www.gimp.org/"><img border=0 width=88 height=38
+ src="images/gfx_by_gimp.gif" alt="Graphics by GIMP"></a>
+ </TD>
+
+ <TD>
+ <a href="http://www.linuxtoday.com"><img width=90 height=36
+ src="images/ltbutton2.jpg" alt="Linux Today"></a>
+ </TD>
+
+ <TD>
+ <p><a href="http://slashdot.org"><img width=90 height=36
+ src="images/sdsmall.gif" alt="Slashdot"></a>
+ </TD>
+
+ <TD>
+ <a href="http://freshmeat.net"><img width=90 height=36
+ src="images/fm.mini.jpg" alt="Freshmeat"></a>
+ </TD>
+
+ </TR>
+</TABLE>
+
+
+</BODY>
+</HTML>
+