mirror of
https://github.com/topjohnwu/ndk-busybox.git
synced 2024-11-25 04:39:48 +00:00
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. Run 'make config' or 'make menuconfig'
|
|
for select the functionality that you wish to enable.
|
|
|
|
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,
|
|
MIPS, and v850e.
|
|
|
|
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://busybox.net/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.busybox.net/Reporting.html.
|
|
|
|
For the impatient: To submit a bug, simply send an email describing the problem
|
|
to submit@bugs.busybox.net. Bug reports should look something like this:
|
|
|
|
To: submit@bugs.busybox.net
|
|
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, as well as daily snapshots, can always
|
|
be downloaded from
|
|
http://busybox.net/downloads/
|
|
|
|
----------------
|
|
|
|
CVS:
|
|
|
|
BusyBox now has its own publicly browsable CVS tree at:
|
|
http://busybox.net/cgi-bin/cvsweb/busybox/
|
|
|
|
Anonymous CVS access is available. For instructions, check out:
|
|
http://busybox.net/cvs_anon.html
|
|
|
|
For those that are actively contributing there is even CVS write access:
|
|
http://busybox.net/cvs_write.html
|
|
|
|
----------------
|
|
|
|
Please feed suggestions, bug reports, insults, and bribes back to:
|
|
Erik Andersen
|
|
<andersen@codepoet.org>
|
|
<andersee@debian.org>
|
|
|