149 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
Please see the LICENSE file for copyright information.
 | 
						|
    
 | 
						|
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
 | 
						|
embedded system. The utilities in BusyBox generally have fewer options than
 | 
						|
their full featured GNU cousins; however, the options that are included provide
 | 
						|
the expected functionality and behave very much like their GNU counterparts.
 | 
						|
 | 
						|
BusyBox has been written with size-optimization and limited resources in mind.
 | 
						|
It is also extremely modular so you can easily include or exclude commands (or
 | 
						|
features) at compile time. This makes it easy to customize your embedded
 | 
						|
systems. To create a working system, just add /dev, /etc, and a kernel.
 | 
						|
 | 
						|
BusyBox was originally written to support the Debian Rescue/Install disks, but
 | 
						|
it also makes an excellent environment for any small or embedded system.
 | 
						|
 | 
						|
As of version 0.20 there is now a version number. : ) Also as of version 0.20,
 | 
						|
BusyBox is now modularized to easily allow you to build only the components you
 | 
						|
need, thereby reducing binary size. To turn off unwanted BusyBox components,
 | 
						|
simply edit the file "Config.h" and comment out the components you do not need
 | 
						|
using C++ style (//) comments.
 | 
						|
 | 
						|
After the build is complete, a busybox.links file is generated.  This is
 | 
						|
used by 'make install' to create symlinks to the busybox binary for all
 | 
						|
compiled in functions.  By default, 'make install' will place the symlink
 | 
						|
forest into `pwd`/_install unless you have defined the PREFIX environment
 | 
						|
variable (i.e., 'make PREFIX=/tmp/foo install')
 | 
						|
 | 
						|
----------------
 | 
						|
    
 | 
						|
Supported architectures:
 | 
						|
 | 
						|
   Busybox in general will build on any architecture supported by gcc.  It has
 | 
						|
   a few specialized features added for __sparc__ and __alpha__.  insmod
 | 
						|
   functionality is currently limited to x86, ARM, SH3/4, powerpc, m68k, 
 | 
						|
   and MIPS.
 | 
						|
 | 
						|
Supported libcs:
 | 
						|
 | 
						|
   glibc-2.0.x, glibc-2.1.x, glibc-2.2.x, Linux-libc5, uClibc.  People
 | 
						|
   are looking at newlib and diet-libc, but consider them unsupported,
 | 
						|
   untested, or worse.
 | 
						|
 | 
						|
Supported kernels:
 | 
						|
 | 
						|
   Full functionality requires Linux 2.0.x, 2.2.x, or 2.4.x.  A large fraction
 | 
						|
   of the code should run on just about anything.
 | 
						|
 | 
						|
----------------
 | 
						|
 | 
						|
Shells:
 | 
						|
 | 
						|
lash is the very smallest shell (adds just 10k) and it is quite usable as 
 | 
						|
a command prompt, but it is not suitable for any but the most trivial
 | 
						|
scripting (such as an initrd that calls insmod a few times) since it does
 | 
						|
not understand Bourne shell grammer.  It does handle pipes, redirects, and
 | 
						|
job control though.  Adding in command editing makes it a very nice
 | 
						|
lightweight command prompt.
 | 
						|
 | 
						|
hush is also quite small (just 18k) and it has very complete Bourne shell
 | 
						|
grammer.  It handles if/then/else/fi just fine, but doesn't handle loops
 | 
						|
like for/do/done or case/esac and such.  It also currently has a problem
 | 
						|
with job control.  Using hush is not yet recommended.
 | 
						|
 | 
						|
msh: The minix shell (adds just 30k) is quite complete and handles things
 | 
						|
like for/do/done, case/esac and all the things you expect a Bourne shell to
 | 
						|
do.  It is not always pedantically correct about Bourne shell grammer (try
 | 
						|
running the shell testscript "tests/sh.testcases" on it and compare vs bash)
 | 
						|
but for most things it works quite well.  It also uses only vfork, so it can
 | 
						|
be used on uClinux systems.  This was only recently added, so there is still
 | 
						|
room to shrink it further...
 | 
						|
 | 
						|
ash: This adds about 60k in the default configuration and is the most
 | 
						|
complete and most pedantically correct shell included with busybox.  This
 | 
						|
shell was also recently added, and several people (mainly Vladimir and Erik)
 | 
						|
have been working on it.  There are a number of configurable things at the
 | 
						|
top of ash.c as well, so check those out if you want to tweak things.
 | 
						|
 | 
						|
----------------
 | 
						|
 | 
						|
Getting help:
 | 
						|
 | 
						|
When you find you need help, you can check out the BusyBox mailing list
 | 
						|
archives at http://oss.lineo.com/lists/busybox/ or even join
 | 
						|
the mailing list if you are interested.
 | 
						|
 | 
						|
----------------
 | 
						|
 | 
						|
Bugs:
 | 
						|
 | 
						|
If you find bugs, please submit a bug report.  Full instructions on how to
 | 
						|
report a bug are found at http://bugs.lineo.com/Reporting.html.
 | 
						|
 | 
						|
For the impatient: To submit a bug, simply send an email describing the problem
 | 
						|
to submit@bugs.lineo.com.  Bug reports should look something like this:
 | 
						|
 | 
						|
    To: submit@bugs.lineo.com
 | 
						|
    From: diligent@testing.linux.org
 | 
						|
    Subject: /bin/true doesn't work
 | 
						|
 | 
						|
    Package: busybox
 | 
						|
    Version: 0.51
 | 
						|
 | 
						|
    When I invoke '/bin/true' it doesn't work.  I expected it to return 
 | 
						|
    a "0" but it returned a "1" instead.  Here is the transcript:
 | 
						|
	$ /bin/true ; echo $?
 | 
						|
	1
 | 
						|
    With GNU /bin/true, I get the following output:
 | 
						|
	$ /bin/true ; echo $?
 | 
						|
	0
 | 
						|
    I am using Debian 2.2r2, kernel version 2.2.18, and the latest
 | 
						|
    uClibc from CVS.  Thanks for the wonderful program!
 | 
						|
	-Diligent
 | 
						|
 | 
						|
Note the careful description and use of examples showing not only what BusyBox
 | 
						|
does, but also a counter example showing what an equivalent GNU app does.  Bug
 | 
						|
reports lacking such detail may take a _long_ time to be fixed...  Thanks for
 | 
						|
understanding.
 | 
						|
 | 
						|
----------------
 | 
						|
 | 
						|
FTP:
 | 
						|
 | 
						|
Source for the latest released version can always be downloaded from 
 | 
						|
    ftp://ftp.lineo.com/pub/busybox. 
 | 
						|
 | 
						|
----------------
 | 
						|
 | 
						|
CVS:
 | 
						|
 | 
						|
BusyBox now has its own publicly browsable CVS tree at:
 | 
						|
    http://oss.lineo.com/cgi-bin/cvsweb/busybox/
 | 
						|
 | 
						|
Anonymous CVS access is available.  For instructions, check out:
 | 
						|
    http://oss.lineo.com/cvs_anon.html
 | 
						|
 | 
						|
For those that are actively contributing there is even CVS write access:
 | 
						|
    http://oss.lineo.com/cvs_write.html
 | 
						|
 | 
						|
----------------
 | 
						|
 | 
						|
Please feed suggestions, bug reports, insults, and bribes back to:
 | 
						|
	Erik Andersen 
 | 
						|
	<andersen@codepoet.org>
 | 
						|
	<andersee@debian.org>
 | 
						|
 |