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