From 330fd2b5767110f29544131d4c72c77e0506b6df Mon Sep 17 00:00:00 2001 From: Erik Andersen Date: Fri, 19 May 2000 05:35:19 +0000 Subject: More libc portability updates, add in the website (which has not been archived previously). Wrote 'which' during the meeting today. -Erik --- docs/busybox.net/BusyBox.html | 2460 ++++++++++++++++++++++++++++++++ docs/busybox.net/images/background.png | Bin 0 -> 4711 bytes docs/busybox.net/images/busybox2.jpg | Bin 0 -> 8204 bytes docs/busybox.net/index.html | 434 ++++++ 4 files changed, 2894 insertions(+) create mode 100644 docs/busybox.net/BusyBox.html create mode 100644 docs/busybox.net/images/background.png create mode 100644 docs/busybox.net/images/busybox2.jpg create mode 100644 docs/busybox.net/index.html (limited to 'docs/busybox.net') diff --git a/docs/busybox.net/BusyBox.html b/docs/busybox.net/BusyBox.html new file mode 100644 index 000000000..5a65db127 --- /dev/null +++ b/docs/busybox.net/BusyBox.html @@ -0,0 +1,2460 @@ + + +BusyBox - The Swiss Army Knife of Embedded Linux + + + + + + + + + + +
+

+

NAME

+

+BusyBox - The Swiss Army Knife of Embedded Linux + +

+


+

SYNTAX

+

+

 BusyBox <function> [arguments...]  # or
+
+

+

 <function> [arguments...]          # if symlinked
+
+

+


+

DESCRIPTION

+

+BusyBox combines tiny versions of many common UNIX utilities into a single +small executable. It provides minimalist replacements for most of the +utilities you usually find in fileutils, shellutils, findutils, textutils, +grep, gzip, tar, etc. BusyBox provides a fairly complete POSIX environment +for any small or 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. + +

+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). + +

+


+

USAGE

+

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

+For example, entering + +

+

        ln -s ./BusyBox ls
+        ./ls
+
+

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

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

+

        ./BusyBox ls
+
+

+will also cause BusyBox to behave as 'ls'. + +

+


+

COMMON OPTIONS

+

+Most BusyBox commands support the --help option to provide a terse runtime description of their behavior. + +

+


+

COMMANDS

+

+Currently defined functions include: + +

+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, [ + +

+------------------------------- + +

+
basename
+

+Usage: basename FILE [SUFFIX] + +

+Strips directory path and suffixes from FILE. If specified, also removes +any trailing SUFFIX. + +

+Example: + +

+

        $ basename /usr/local/bin/foo
+        foo
+        $ basename /usr/local/bin/
+        bin
+        $ basename /foo/bar.txt .txt
+        bar
+
+

+------------------------------- + +

cat
+

+Usage: cat [FILE ...] + +

+Concatenates FILE(s) and prints them to the standard output. + +

+Example: + +

+

        $ cat /proc/uptime
+        110716.72 17.67
+
+

+------------------------------- + +

chgrp
+

+Usage: chgrp [OPTION]... GROUP FILE... + +

+Change the group membership of each FILE to GROUP. + +

+Options: + +

+

        -R      change files and directories recursively
+
+

+Example: + +

+

        $ 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
+
+

+------------------------------- + +

chmod
+

+Usage: chmod [-R] MODE[,MODE]... FILE... + +

+Changes file access permissions for the specified FILE(s) (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 FILE(s) (or directories). + +

+WHO may be chosen from + +

+

        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
+
+

+OPERATOR may be chosen from + +

+

        +       Add a permission
+        -       Remove a permission
+        =       Assign a permission
+ 
+PERMISSION may be chosen from
+
+

+

        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)
+
+

+Alternately, permissions can be set numerically where the first three +numbers are calculated by adding the octal values, such as + +

+

        4       Read
+        2       Write
+        1       Execute
+
+

+An optional fourth digit can also be used to specify + +

+

        4       Set user ID
+        2       Set group ID
+        1       Stickey bit
+
+

+Options: + +

+

        -R      Change files and directories recursively.
+ 
+Example:
+
+

+

        $ 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
+
+

+------------------------------- + +

chown
+

+Usage: chown [OPTION]... OWNER[<.|:>[GROUP] FILE... + +

+Changes the owner and/or group of each FILE to OWNER and/or GROUP. + +

+Options: + +

+

        -R      Changes files and directories recursively
+
+

+Example: + +

+

        $ 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
+
+

+------------------------------- + +

chroot
+

+Usage: chroot NEWROOT [COMMAND...] + +

+Run COMMAND with root directory set to NEWROOT. Example: + +

+

        $ ls -l /bin/ls
+        lrwxrwxrwx    1 root     root          12 Apr 13 00:46 /bin/ls -> /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*
+
+

+------------------------------- + +

clear
+

+Clears the screen. + +

+------------------------------- + +

chvt
+

+Usage: chvt N + +

+Changes the foreground virtual terminal to /dev/ttyN + +

+------------------------------- + +

cp
+

+Usage: cp [OPTION]... SOURCE DEST + +

+

   or: cp [OPTION]... SOURCE... DIRECTORY
+
+

+Copies SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY. + +

+Options: + +

+

        -a      Same as -dpR
+        -d      Preserves links
+        -p      Preserves file attributes if possable
+        -R      Copies directories recursively
+
+

+------------------------------- + +

cut
+

+Usage: cut [OPTION]... [FILE]... + +

+Prints selected fields from each input FILE to standard output. + +

+Options: + +

+

        -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
+
+

+Example: + +

+

        $ echo "Hello world" | cut -f 1 -d ' '
+        Hello
+        $ echo "Hello world" | cut -f 2 -d ' '
+        world
+
+

+------------------------------- + +

date
+

+Usage: date [OPTION]... [+FORMAT] + +

+

  or:  date [OPTION] [MMDDhhmm[[CC]YY][.ss]]
+
+

+Displays the current time in the given FORMAT, or sets the system date. + +

+Options: + +

+

        -R      Outputs RFC-822 compliant date string
+        -s      Sets time described by STRING
+        -u      Prints or sets Coordinated Universal Time
+
+

+Example: + +

+

        $ date
+        Wed Apr 12 18:52:41 MDT 2000
+
+

+------------------------------- + +

dd
+

+Usage: dd [if=name] [of=name] [bs=n] [count=n] [skip=n] [seek=n] + +

+Copy a file, converting and formatting according to options + +

+

        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
+
+

+Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2) +Example: + +

+

        $ dd if=/dev/zero of=/dev/ram1 bs=1M count=4
+        4+0 records in
+        4+0 records out
+
+

+------------------------------- + +

df
+

+Usage: df [filesystem ...] + +

+Prints the filesystem space used and space available. + +

+Example: + +

+

        $ 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% /
+
+

+------------------------------- + +

dirname
+

+Usage: dirname NAME + +

+Strip non-directory suffix from file name + +

+Example: + +

+

        $ dirname /tmp/foo
+        /tmp
+        $ dirname /tmp/foo/
+        /tmp
+
+

+------------------------------- + +

dmesg
+

+Usage: dmesg [-c] [-n level] [-s bufsize] Print or controls the kernel ring buffer. + +

+------------------------------- + +

du
+

+Usage: du [OPTION]... [FILE]... + +

+Summarize disk space used for each FILE and/or directory. Disk space is +printed in units of 1k (i.e. 1024 bytes). + +

+Options: + +

+

        -l      count sizes many times if hard linked
+        -s      display only a total for each argument
+
+

+Example: + +

+

        $ ./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    .
+         
+-------------------------------
+
+
dutmp
+

+Usage: dutmp [FILE] + +

+Dump utmp file format (pipe delimited) from FILE or stdin to stdout. + +

+Example: + +

+

        $ 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
+         
+-------------------------------
+
+
echo
+

+Usage: echo [-neE] [ARG ...] + +

+Prints the specified ARGs to stdout + +

+Options: + +

+

        -n      suppress trailing newline
+        -e      interpret backslash-escaped characters (i.e. \t=tab etc)
+        -E      disable interpretation of backslash-escaped characters
+
+

+Example: + +

+

        $ echo "Erik is cool"
+        Erik is cool
+        $  echo -e "Erik\nis\ncool"
+        Erik
+        is
+        cool
+        $ echo "Erik\nis\ncool"
+        Erik\nis\ncool
+         
+-------------------------------
+
+
false
+

+Returns an exit code of FALSE (1) + +

+Example: + +

+

        $ false
+        $ echo $?
+        1
+
+

+------------------------------- + +

fbset
+

+Usage: fbset [options] [mode] + +

+Show and modify frame buffer device settings + +

+Options: + +

+

        -h
+        -fb
+        -db
+        -a
+        -i
+        -g
+        -t
+        -accel
+        -hsync
+        -vsync
+        -laced
+        -double
+
+

+Example: + +

+

        $ fbset
+        mode "1024x768-76"
+                        # 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
+
+

+------------------------------- + +

fdflush
+

+Usage: fdflush device + +

+Force floppy disk drive to detect disk change + +

+------------------------------- + +

find
+

+Usage: find [PATH...] [EXPRESSION] + +

+Search for files in a directory hierarchy. The default PATH is the current +directory; default EXPRESSION is '-print' + +

+EXPRESSION may consist of: + +

+

        -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.
+
+

+Example: + +

+

        $ find / -name /etc/passwd
+        /etc/passwd
+
+

+------------------------------- + +

free
+

+Usage: free + +

+Displays the amount of free and used system memory. + +

+Example: + +

+

        $ free
+                                  total         used         free       shared      buffers
+          Mem:       257628       248724         8904        59644        93124
+         Swap:       128516         8404       120112
+        Total:       386144       257128       129016
+
+

+------------------------------- + +

freeramdisk
+

+Usage: freeramdisk DEVICE + +

+Frees all memory used by the specified ramdisk. + +

+Example: + +

+

        $ freeramdisk /dev/ram2
+
+

+------------------------------- + +

deallocvt
+

+Usage: deallocvt N + +

+Deallocates unused virtual terminal /dev/ttyN + +

+------------------------------- + +

fsck.minix
+

+Usage: fsck.minix [-larvsmf] /dev/name + +

+Performs a consistency check for MINIX filesystems. + +

+OPTIONS: + +

+

        -l      Lists all filenames
+        -r      Perform interactive repairs
+        -a      Perform automatic repairs
+        -v      verbose
+        -s      Outputs super-block information
+        -m      Activates MINIX-like "mode not cleared" warnings
+        -f      Force file system check.
+
+

+------------------------------- + +

grep
+

+Usage: grep [OPTIONS]... PATTERN [FILE]... + +

+Search for PATTERN in each FILE or standard input. + +

+OPTIONS: + +

+

        -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
+
+

+This version of grep matches full regular expresions. + +

+Example: + +

+

        $ 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
+
+

+------------------------------- + +

gunzip
+

+Usage: gunzip [OPTION]... FILE + +

+Uncompress FILE (or standard input if FILE is '-'). + +

+Options: + +

+

        -c      Write output to standard output
+        -t      Test compressed file integrity
+
+

+Example: + +

+

        $ 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
+
+

+------------------------------- + +

gzip
+

+Usage: gzip [OPTION]... FILE + +

+Compress FILE with maximum compression. When FILE is '-', reads standard +input. Implies -c. + +

+Options: + +

+

        -c      Write output to standard output instead of FILE.gz
+
+

+Example: + +

+

        $ 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
+
+

+------------------------------- + +

halt
+

+Usage: halt + +

+This comand halts the system. + +

+------------------------------- + +

head
+

+Usage: head [OPTION] [FILE]... + +

+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. + +

+Options: + +

+

        -n NUM          Print first NUM lines instead of first 10
+
+

+Example: + +

+

        $ head -n 2 /etc/passwd
+        root:x:0:0:root:/root:/bin/bash
+        daemon:x:1:1:daemon:/usr/sbin:/bin/sh
+
+

+------------------------------- + +

hostid
+

+Usage: hostid + +

+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. + +

+------------------------------- + +

hostname
+

+Usage: hostname [OPTION] {hostname | -F file} + +

+Get or set the hostname or DNS domain name. If a hostname is given (or a +file with the -F parameter), the host name will be set. + +

+Options: + +

+

        -s              Short
+        -i              Addresses for the hostname
+        -d              DNS domain name
+        -F FILE         Use the contents of FILE to specify the hostname
+
+

+Example: + +

+

        $ hostname
+        slag 
+
+

+------------------------------- + +

id
+

+Print information for USERNAME or the current user + +

+Options: + +

+

        -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)
+
+

+Example: + +

+

        $ id
+        uid=1000(andersen) gid=1000(andersen)
+
+

+------------------------------- + +

init
+

+Usage: init + +

+Init is the parent of all processes. + +

+This version of init is designed to be run only by the kernel. + +

+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. + +

+BusyBox init works just fine without an inittab. If no inittab is found, it +has the following default behavior: + +

+

        ::sysinit:/etc/init.d/rcS
+        ::askfirst:/bin/sh
+
+

+if it detects that /dev/console is _not_ a serial console, it will also +run: + +

+

        tty2::askfirst:/bin/sh
+
+

+If you choose to use an /etc/inittab file, the inittab entry format is as +follows: + +

+

        <id>:<runlevels>:<action>:<process>
+
+

+

        <id>: 
+
+

+

                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 "/dev/" 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.
+
+

+

        <runlevels>: 
+
+

+

                The runlevels field is completely ignored.
+
+

+

        <action>: 
+
+

+

                Valid actions include: sysinit, respawn, askfirst, wait, 
+                once, and ctrlaltdel.
+
+

+

                askfirst acts just like respawn, but before running the specified
+                process it displays the line "Please press Enter to activate this
+                console." and then waits for the user to press enter before starting
+                the specified process.
+
+

+

                Unrecognised actions (like initdefault) will cause init to emit
+                an error message, and then go along with its business.
+
+

+

        <process>: 
+
+

+

                Specifies the process to be executed and it's command line.
+
+

+Example /etc/inittab file: + +

+

        # This is run first except when booting in single-user mode.
+        #
+        ::sysinit:/etc/init.d/rcS
+
+

+

        # /bin/sh invocations on selected ttys
+        #
+        # Start an "askfirst" shell on the console (whatever that may be)
+        ::askfirst:/bin/sh
+        # Start an "askfirst" shell on /dev/tty2
+        tty2::askfirst:/bin/sh
+
+

+

        # /sbin/getty invocations for selected ttys
+        #
+        tty4::respawn:/sbin/getty 38400 tty4
+        tty5::respawn:/sbin/getty 38400 tty5
+
+

+

        # 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
+
+

+

        # Stuff to do before rebooting
+        ::ctrlaltdel:/bin/umount -a -r > /dev/null 2>&1
+        ::ctrlaltdel:/sbin/swapoff -a > /dev/null 2>&1
+
+

+------------------------------- + +

kill
+

+Usage: kill [-signal] process-id [process-id ...] + +

+Send a signal (default is SIGTERM) to the specified +process(es). + +

+Options: + +

+

        -l      List all signal names and numbers.
+
+

+Example: + +

+

        $ 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
+
+

+------------------------------- + +

killall
+

+Usage: killall [-signal] process-name [process-name ...] + +

+Send a signal (default is SIGTERM) to the specified +process(es). + +

+Options: + +

+

        -l      List all signal names and numbers.
+
+

+Example: + +

+

        $ killall apache
+
+

+------------------------------- + +

length
+

+Usage: length STRING + +

+Prints out the length of the specified STRING. + +

+Example: + +

+

        $ length "Hello"
+        5
+
+

+------------------------------- + +

ln
+

+Usage: ln [OPTION] TARGET... LINK_NAME|DIRECTORY + +

+Create a link named LINK_NAME or DIRECTORY to the specified TARGET Options: + +

+

        -s      make symbolic links instead of hard links
+        -f      remove existing destination files
+ 
+Example:
+
+

+

    $ ln -s BusyBox /tmp/ls
+    $ ls -l /tmp/ls
+    lrwxrwxrwx    1 root     root            7 Apr 12 18:39 ls -> BusyBox*
+
+

+------------------------------- + +

loadacm
+

+Usage: loadacm + +

+Loads an acm from standard input. + +

+Example: + +

+

        $ loadacm < /etc/i18n/acmname
+
+

+------------------------------- + +

loadfont
+

+Usage: loadfont + +

+Loads a console font from standard input. + +

+Example: + +

+

        $ loadfont < /etc/i18n/fontname
+
+

+------------------------------- + +

loadkmap
+

+Usage: loadkmap + +

+Loads a binary keyboard translation table from standard input. + +

+Example: + +

+

        $ loadkmap < /etc/i18n/lang-keymap
+
+

+------------------------------- + +

logger
+

+Usage: logger [OPTION]... [MESSAGE] + +

+Write MESSAGE to the system log. If MESSAGE is '-', log stdin. + +

+Options: + +

+

        -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.
+
+

+Example: + +

+

                $ logger "hello"
+
+

+------------------------------- + +

logname
+

+Usage: logname + +

+Print the name of the current user. + +

+Example: + +

+

        $ logname
+        root
+
+

+------------------------------- + +

ls
+

+Usage: ls [-1acdelnpuxACF] [filenames...] + +

+Options: + +

+

        -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
+
+

+------------------------------- + +

lsmod
+

+Usage: lsmod + +

+Shows a list of all currently loaded kernel modules. + +

+------------------------------- + +

makedevs
+

+Usage: makedevs NAME TYPE MAJOR MINOR FIRST LAST [s] + +

+Creates a range of block or character special files + +

+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.
+
+

+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. + +

+Example: + +

+

        $ makedevs /dev/ttyS c 4 66 2 63
+        [creates ttyS2-ttyS63]
+        $ makedevs /dev/hda b 3 0 0 8 s
+        [creates hda,hda1-hda8]
+
+

+------------------------------- + +

math
+

+Usage: math expression ... + +

+This is a Tiny RPN calculator that understands the following operations: +, +-, /, *, and, or, not, eor. + +

+Example: + +

+

        $ math 2 2 add
+        4
+        $ math 8 8 \* 2 2 + /
+        16
+        $ math 0 1 and
+        0
+        $ math 0 1 or
+        1
+
+

+------------------------------- + +

mkdir
+

+Usage: mkdir [OPTION] DIRECTORY... + +

+Create the DIRECTORY(ies), if they do not already exist + +

+Options: + +

+

        -m      set permission mode (as in chmod), not rwxrwxrwx - umask
+        -p      no error if dir exists, make parent directories as needed
+
+

+Example: + +

+

        $ 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
+
+

+------------------------------- + +

mkfifo
+

+Usage: mkfifo [OPTIONS] name + +

+Creates a named pipe (identical to 'mknod name p') + +

+Options: + +

+

        -m      create the pipe using the specified mode (default a=rw)
+
+

+------------------------------- + +

mkfs.minix
+

+Usage: mkfs.minix [-c | -l filename] [-nXX] [-iXX] /dev/name [blocks] + +

+Make a MINIX filesystem. + +

+OPTIONS: + +

+

        -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
+
+

+------------------------------- + +

mknod
+

+Usage: mknod [OPTIONS] NAME TYPE MAJOR MINOR + +

+Create a special file (block, character, or pipe). + +

+Options: + +

+

        -m      create the special file using the specified mode (default a=rw)
+
+

+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. + +

+Example: + +

+

        $ mknod /dev/fd0 b 2 0 
+        $ mknod -m 644 /tmp/pipe p
+
+

+------------------------------- + +

mkswap
+

+Usage: mkswap [-c] [-v0|-v1] device [block-count] + +

+Prepare a disk partition to be used as a swap partition. + +

+Options: + +

+

        -c              Check for read-ability.
+        -v0             Make version 0 swap [max 128 Megs].
+        -v1             Make version 1 swap [big!] (default for kernels > 2.1.117).
+        block-count     Number of block to use (default is entire partition).
+
+

+------------------------------- + +

mktemp
+

+Usage: mktemp [-q] TEMPLATE + +

+Creates a temporary file with its name based on TEMPLATE. TEMPLATE is any +name with six `Xs' (i.e. /tmp/temp.XXXXXX). + +

+Example: + +

+

        $ mktemp /tmp/temp.XXXXXX
+        /tmp/temp.mWiLjM
+        $ ls -la /tmp/temp.mWiLjM
+        -rw-------    1 andersen andersen        0 Apr 25 17:10 /tmp/temp.mWiLjM
+
+

+------------------------------- + +

nc
+

+Usage: nc [IP] [port] + +

+Netcat opens a pipe to IP:port + +

+Example: + +

+

        $ 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
+ 
+-------------------------------
+
+
more
+

+Usage: more [file ...] + +

+More is a filter for paging through text one screenful at a time. + +

+Example: + +

+

        $ dmesg | more
+
+

+------------------------------- + +

mount
+

+Usage: mount [flags] mount [flags] device directory [-o options,more-options] + +

+Flags: + +

+

        -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).
+
+

+Options for use with the ``-o'' flag: + +

+

        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.
+
+

+Example: + +

+

        $ 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
+
+

+------------------------------- + +

mt
+

+Usage: mt [-f device] opcode value + +

+Control magnetic tape drive operation + +

+------------------------------- + +

mv
+

+Usage: mv SOURCE DEST + +

+

   or: mv SOURCE... DIRECTORY
+
+

+Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY. + +

+Example: + +

+

        $ mv /tmp/foo /bin/bar
+
+

+------------------------------- + +

nslookup
+

+Usage: nslookup [HOST] + +

+Queries the nameserver for the IP address of the given HOST + +

+Example: + +

+

        $ nslookup localhost
+        Server:     default
+        Address:    default
+
+

+

        Name:       debian
+        Address:    127.0.0.1
+
+

+------------------------------- + +

ping
+

+Usage: ping [OPTION]... host + +

+Send ICMP ECHO_REQUEST packets to network hosts. + +

+Options: + +

+

        -c COUNT        Send only COUNT pings.
+        -q              Quiet mode, only displays output at start
+                        and when finished.
+Example:
+
+

+

        $ 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
+
+

+

        --- debian ping statistics ---
+        1 packets transmitted, 1 packets received, 0% packet loss
+        round-trip min/avg/max = 20.1/20.1/20.1 ms
+
+

+------------------------------- + +

poweroff
+

+Shuts down the system, and requests that the kernel turn off power upon +halting. + +

+------------------------------- + +

printf
+

+Usage: printf format [argument...] + +

+Formats and prints the given data in a manner similar to the C printf +command. + +

+Example: + +

+

        $ printf "Val=%d\n" 5
+        Val=5
+
+

+------------------------------- + +

ps
+

+Usage: ps + +

+Report process status + +

+This version of ps accepts no options. + +

+Example: + +

+

        $ 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
+
+

+------------------------------- + +

pwd
+

+Prints the full filename of the current working directory. + +

+Example: + +

+

        $ pwd
+        /root
+
+

+------------------------------- + +

reboot
+

+Instructs the kernel to reboot the system. + +

+------------------------------- + +

rm
+

+Usage: rm [OPTION]... FILE... + +

+Remove (unlink) the FILE(s). + +

+Options: + +

+

        -f              remove existing destinations, never prompt
+        -r or -R        remove the contents of directories recursively
+
+

+Example: + +

+

        $ rm -rf /tmp/foo
+
+

+------------------------------- + +

rmdir
+

+Usage: rmdir [OPTION]... DIRECTORY... + +

+Remove the DIRECTORY(ies), if they are empty. + +

+Example: + +

+

        # rmdir /tmp/foo
+
+

+------------------------------- + +

rmmod
+

+Usage: rmmod [OPTION]... [MODULE]... + +

+Unloads the specified kernel modules from the kernel. + +

+Options: + +

+

        -a      Try to remove all unused kernel modules.
+
+

+Example: + +

+

        $ rmmod tulip
+
+

+------------------------------- + +

sed
+

+Usage: sed [-n] -e script [file...] + +

+Allowed sed scripts come in the following form: + +

+

        'ADDR [!] COMMAND'
+
+

+

        where address ADDR can be:
+          NUMBER    Match specified line number
+          $         Match last line
+          /REGEXP/  Match specified regexp
+          (! inverts the meaning of the match)
+
+

+

        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.
+
+

+

          aTEXT
+                 which appends TEXT after the pattern space
+
+

+Options: + +

+

        -e      add the script to the commands to be executed
+        -n      suppress automatic printing of pattern space
+
+

+This version of sed matches full regular expresions. + +

+Example: + +

+

        $ echo "foo" | sed -e 's/f[a-zA-Z]o/bar/g'
+        bar
+
+

+------------------------------- + +

setkeycodes
+

+Usage: setkeycodes SCANCODE KEYCODE ... + +

+Set entries into the kernel's scancode-to-keycode map, allowing unusual +keyboards to generate usable keycodes. + +

+SCANCODE may be either xx or e0xx (hexadecimal), and KEYCODE is given in +decimal + +

+Example: + +

+

        # setkeycodes e030 127
+
+

+------------------------------- + +

sh
+

+Usage: sh + +

+lash -- the BusyBox LAme SHell (command interpreter) + +

+This command does not yet have proper documentation. + +

+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. + +

+------------------------------- + +

sfdisk
+

+Usage: sfdisk [options] device ... + +

+device: something like /dev/hda or /dev/sda + +

+useful options: + +

+

    -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
+
+

+dangerous options: + +

+

    -g [or --show-geometry]: print the kernel's idea of the geometry
+    -x [or --show-extended]: also list extended partitions on output
+
+

+

                             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
+
+

+You can disable all consistency checking with: + +

+

    -f  [or --force]:      do what I say, even if it is stupid
+
+

+------------------------------- + +

sleep
+

+Usage: sleep N + +

+Pause for N seconds. + +

+Example: + +

+

        $ sleep 2
+        [2 second delay results]
+
+

+------------------------------- + +

sort
+

+Usage: sort [-n] [-r] [FILE]... + +

+Sorts lines of text in the specified files + +

+Example: + +

+

        $ echo -e "e\nf\nb\nd\nc\na" | sort
+        a
+        b
+        c
+        d
+        e
+        f
+
+

+------------------------------- + +

sync
+

+Usage: sync + +

+Write all buffered filesystem blocks to disk. + +

+------------------------------- + +

syslogd
+

+Usage: syslogd [OPTION]... + +

+Linux system and kernel (provides klogd) logging utility. Note that this +version of syslogd/klogd ignores /etc/syslog.conf. + +

+Options: + +

+

        -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
+
+

+------------------------------- + +

swapon
+

+Usage: swapon [OPTION] [device] + +

+Start swapping virtual memory pages on the given device. + +

+Options: + +

+

        -a      Start swapping on all swap devices
+
+

+------------------------------- + +

swapoff
+

+Usage: swapoff [OPTION] [device] + +

+Stop swapping virtual memory pages on the given device. + +

+Options: + +

+

        -a      Stop swapping on all swap devices
+
+

+------------------------------- + +

tail
+

+Usage: tail [OPTION] [FILE]... + +

+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. + +

+Options: + +

+

        -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.
+
+

+Example: + +

+

        $ tail -n 1 /etc/resolv.conf
+        nameserver 10.0.0.1
+
+

+------------------------------- + +

tar
+

+Usage: tar -[cxtvO] [--exclude File] [-f tarFile] [FILE] ... + +

+Create, extract, or list files from a tar file. Note that this version of +tar treats hard links as separate files. + +

+Main operation mode: + +

+

        c               create
+        x               extract
+        t               list
+
+

+File selection: + +

+

        f               name of tarfile or "-" for stdin
+        O               extract to stdout
+        --exclude       file to exclude
+
+

+Informative output: + +

+

        v               verbosely list files processed
+
+

+Example: + +

+

        $ zcat /tmp/tarball.tar.gz | tar -xf -
+        $ tar -cf /tmp/tarball.tar /usr/local
+
+

+------------------------------- + +

test, [
+

+Usage: test EXPRESSION or [ EXPRESSION ] + +

+Checks file types and compares values returning an exit code determined by +the value of EXPRESSION. + +

+Example: + +

+

        $ test 1 -eq 2
+        $ echo $?
+        1
+        $ test 1 -eq 1
+        $ echo $?
+        0
+        $ [ -d /etc ]
+        $ echo $?
+        0
+        $ [ -d /junk ]
+        $ echo $?
+        1
+
+

+------------------------------- + +

tee
+

+Usage: tee [OPTION]... [FILE]... + +

+Copy standard input to each FILE, and also to standard output. + +

+Options: + +

+

        -a      append to the given FILEs, do not overwrite
+
+

+Example: + +

+

        $ echo "Hello" | tee /tmp/foo
+        $ cat /tmp/foo
+        Hello
+
+

+------------------------------- + +

touch
+

+Usage: touch [-c] file [file ...] + +

+Update the last-modified date on (or create) the selected file[s]. + +

+Example: + +

+

        $ 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
+
+

+------------------------------- + +

tr
+

+Usage: tr [-cds] STRING1 [STRING2] + +

+Translate, squeeze, and/or delete characters from standard input, writing +to standard output. + +

+Options: + +

+

        -c      take complement of STRING1
+        -d      delete input characters coded STRING1
+        -s      squeeze multiple output characters of STRING2 into one character
+
+

+Example: + +

+

        $ echo "gdkkn vnqkc" | tr [a-y] [b-z]
+        hello world
+
+

+------------------------------- + +

true
+

+Returns an exit code of TRUE (0) + +

+Example: + +

+

        $ true
+        $ echo $?
+        0
+
+

+------------------------------- + +

tty
+

+Usage: tty + +

+Print the file name of the terminal connected to standard input. + +

+Options: + +

+

        -s      print nothing, only return an exit status
+
+

+Example: + +

+

        $ tty
+        /dev/tty2
+
+

+------------------------------- + +

umount
+

+Usage: umount [flags] filesystem|directory + +

+Flags: + +

+

                -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)
+
+

+Example: + +

+

        $ umount /dev/hdc1 
+
+

+------------------------------- + +

uname
+

+Usage: uname [OPTION]... + +

+Print certain system information. With no OPTION, same as -s. + +

+Options: + +

+

        -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
+
+

+Example: + +

+

        $ uname -a
+        Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown
+
+

+------------------------------- + +

uniq
+

+Usage: uniq [OPTION]... [INPUT [OUTPUT]] + +

+Discard all but one of successive identical lines from INPUT (or standard +input), writing to OUTPUT (or standard output). + +

+Example: + +

+

        $ echo -e "a\na\nb\nc\nc\na" | sort | uniq
+        a
+        b
+        c
+
+

+------------------------------- + +

update
+

+Usage: update [options] + +

+Periodically flushes filesystem buffers. + +

+Options: + +

+

        -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)
+
+

+------------------------------- + +

uptime
+

+Usage: uptime + +

+Tells how long the system has been running since boot. + +

+Example: + +

+

        $ uptime
+          1:55pm  up  2:30, load average: 0.09, 0.04, 0.00
+
+

+------------------------------- + +

usleep
+

+Usage: usleep N + +

+Pauses for N microseconds. + +

+Example: + +

+

        $ usleep 1000000
+        [pauses for 1 second]
+
+

+------------------------------- + +

wc
+

+Usage: wc [OPTION]... [FILE]... + +

+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. + +

+Options: + +

+

        -c      print the byte counts
+        -l      print the newline counts
+        -L      print the length of the longest line
+        -w      print the word counts
+
+

+Example: + +

+

        $ wc /etc/passwd
+             31      46    1365 /etc/passwd
+
+

+------------------------------- + +

whoami
+

+Usage: whoami + +

+Prints the user name associated with the current effective user id. + +

+Example: + +

+

        $ whoami
+        andersen
+
+

+------------------------------- + +

yes
+

+Usage: yes [OPTION]... [STRING]... + +

+Repeatedly outputs a line with all specified STRING(s), or +`y'. + +

+------------------------------- + +

zcat
+

+This is essentially an alias for invoking ``gunzip -c'', where it decompresses the file inquestion and send the output to +stdout. + +

+------------------------------- + +

+

+


+

LIBC NSS

+

+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. + +

+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. + +

+


+

SEE ALSO

+

+textutils(1), shellutils(1), etc... + +

+


+

MAINTAINER

+

+Erik Andersen <andersee@debian.org> <andersen@lineo.com> + +

+


+

AUTHORS

+

+The following people have contributed code to BusyBox whether they know it +or not. + +

+Erik Andersen <andersee@debian.org> + +
+ +

+John Beppu <beppu@lineo.com> + +
+ +

+Brian Candler <B.Candler@pobox.com> + +
+ +

+Randolph Chung <tausq@debian.org> + +
+ +

+Dave Cinege <dcinege@psychosis.com> + +
+ +

+Karl M. Hegbloom <karlheg@debian.org> + +
+ +

+John Lombardo <john@deltanet.com> + +
+ +

+Bruce Perens <bruce@perens.com> + +
+ +

+Linus Torvalds <torvalds@transmeta.com> + +
+ +

+Charles P. Wright <cpwright@villagenet.com> + +
+ +

+Enrique Zanardi <ezanardi@ull.es> + +
+ + + + diff --git a/docs/busybox.net/images/background.png b/docs/busybox.net/images/background.png new file mode 100644 index 000000000..11666cedb Binary files /dev/null and b/docs/busybox.net/images/background.png differ diff --git a/docs/busybox.net/images/busybox2.jpg b/docs/busybox.net/images/busybox2.jpg new file mode 100644 index 000000000..abf8f0610 Binary files /dev/null and b/docs/busybox.net/images/busybox2.jpg differ diff --git a/docs/busybox.net/index.html b/docs/busybox.net/index.html new file mode 100644 index 000000000..ff865dc1e --- /dev/null +++ b/docs/busybox.net/index.html @@ -0,0 +1,434 @@ + + + + +BusyBox + + + + + + + +

+ + + + +
+ + B u s y B o x + +
+ BusyBox
+ + + + + + + + + + + + + + +
+ + The Swiss Army Knife of Embedded Linux + + +
+ +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. +

+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). +

+ +BusyBox is now maintained by + +Erik Andersen, and its ongoing development is being sponsored by +Lineo. +

+BusyBox is licensed under the +GNU GENERAL PUBLIC LICENSE + + + + +

+ + Download + +
+ + + + + +
+ + + Latest News + + +
+ +
    + +

  • 19 April 2000 -- syslogd bugfix +
    + Turns out that there was still a bug in busybox syslogd. + For example, with the following test app: +
    +	#include <syslog.h>
    +
    +	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);
    +	}
    +
    + 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). +

    + Karl M. Hegbloom has created a + fix for the problem. + Thanks Karl! + + +

  • 18 April 2000 -- BusyBox 0.43 released (finally!) +
    + 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 + changelog. + Oh, and as a special bonus, I wrote some fairly comprehensive + documentation, complete with examples and full usage information. + +

    + 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. +

    + + You can grab BusyBox 0.43 tarballs here. + +

  • 9 April 2000 -- BusyBox 0.43 pre release +
    + 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. +

    + The pre-release can be found here. + Please let me know ASAP if you find any bugs. + +

  • 28 March 2000 -- Andersen Baby Boy release +
    + 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). +

    + 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. +

    + 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. + + +

  • 11 February 2000 -- BusyBox 0.42 released +
    + + This is the most solid BusyBox release so far. Many, many + bugs have been fixed. See the +changelog 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. + +

  • 19 January 2000 -- BusyBox 0.41 released +
    + + 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 here. + +

  • 7 January 2000 -- BusyBox 0.40 released +
    + + 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 here. + +

  • 11 December 1999 -- BusyBox Website +
    + 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. + +

  • 10 December 1999 -- BusyBox 0.39 released +
    + 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 here. +

  • 5 December 1999 -- BusyBox 0.38 released +
    + This release includes fixes to tar, cat, ls, dd, rm, umount, find, df, + and make install, and includes new apps syslogd/klogd and logger. +
+ + + + +
+ + Documentation + +
+Current documentation for BusyBox includes: +
    +
  • BusyBox.html + 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 lot 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. + +
  • More documentation will follow. +
+ + + + +
+ + + Related Software + + +
+ +
    + +
  • ash + is a very small Bourne shell. If you need a shell for your embedded systems, this is it. +

    + +

  • ae + 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. +

    + +

  • elvis-tiny + 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. +

    + +

  • nano + A small GPLed pico clone that makes a nice editor for people that don't know "vi". +

    + +

  • iproute + 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. +

    + +

  • Pump + This is the DHCP/BOOTP client written by RedHat. When compiled properly, it + gives you dhcp client support for about 35k. +

    + +

  • sash + 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. +

    + +

  • NewLib + 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. +

    + +

  • asmutils + 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). +

    + +

  • TinyLogin + is a nice embedded tool for handling authentication, changing passwords, + and similar tasks, and which nicely complements BusyBox. +

    + +

+ + + +
+ + Projects using BusyBox + +
+I know of the following projects that use BusyBox + +Do you use BusyBox? I'd love to know about it and I'd be happy to link to you. + + + + + +
+ + + Important Links + + +
+ + + + + + + + +
+

+ + + + +
+ + + + + + + + + + + + + + + +
+ + Mail all comments, insults, suggestions and bribes to + Erik Andersen
+ The Busybox logo is copyright 1999,2000, Erik Andersen. +
+
+ This site created with the vi editor + + Graphics by GIMP + + Linux Today + +

Slashdot +

+ Freshmeat +
+ + + + + -- cgit v1.2.3