Eric Andersen | cb81e64 | 2003-07-14 21:21:08 +0000 | [diff] [blame] | 1 | Please see the LICENSE file for details on copying and usage. |
Erik Andersen | 330fd2b | 2000-05-19 05:35:19 +0000 | [diff] [blame] | 2 | |
| 3 | BusyBox combines tiny versions of many common UNIX utilities into a single |
| 4 | small executable. It provides minimalist replacements for most of the utilities |
| 5 | you usually find in fileutils, shellutils, findutils, textutils, grep, gzip, |
| 6 | tar, etc. BusyBox provides a fairly complete POSIX environment for any small or |
Eric Andersen | 0730943 | 2000-11-29 22:12:19 +0000 | [diff] [blame] | 7 | embedded system. The utilities in BusyBox generally have fewer options than |
Erik Andersen | 330fd2b | 2000-05-19 05:35:19 +0000 | [diff] [blame] | 8 | their full featured GNU cousins; however, the options that are included provide |
| 9 | the expected functionality and behave very much like their GNU counterparts. |
Eric Andersen | cc8ed39 | 1999-10-05 16:24:54 +0000 | [diff] [blame] | 10 | |
Eric Andersen | cb81e64 | 2003-07-14 21:21:08 +0000 | [diff] [blame] | 11 | BusyBox was originally written to support the Debian Rescue/Install disks, but |
| 12 | it also makes an excellent environment for any small or embedded system. |
| 13 | |
Erik Andersen | 330fd2b | 2000-05-19 05:35:19 +0000 | [diff] [blame] | 14 | BusyBox has been written with size-optimization and limited resources in mind. |
| 15 | It is also extremely modular so you can easily include or exclude commands (or |
| 16 | features) at compile time. This makes it easy to customize your embedded |
Eric Andersen | 9e6089e | 2001-08-02 19:31:08 +0000 | [diff] [blame] | 17 | systems. To create a working system, just add /dev, /etc, and a kernel. |
Eric Andersen | cc8ed39 | 1999-10-05 16:24:54 +0000 | [diff] [blame] | 18 | |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 19 | As of version 0.20 there is now a version number. : ) Also as of version 0.20, |
Erik Andersen | 330fd2b | 2000-05-19 05:35:19 +0000 | [diff] [blame] | 20 | BusyBox is now modularized to easily allow you to build only the components you |
Glenn L McGrath | 062c74f | 2002-11-27 09:29:49 +0000 | [diff] [blame] | 21 | need, thereby reducing binary size. Run 'make config' or 'make menuconfig' |
| 22 | for select the functionality that you wish to enable. |
Erik Andersen | 330fd2b | 2000-05-19 05:35:19 +0000 | [diff] [blame] | 23 | |
Eric Andersen | 0730943 | 2000-11-29 22:12:19 +0000 | [diff] [blame] | 24 | After the build is complete, a busybox.links file is generated. This is |
Erik Andersen | 330fd2b | 2000-05-19 05:35:19 +0000 | [diff] [blame] | 25 | used by 'make install' to create symlinks to the busybox binary for all |
| 26 | compiled in functions. By default, 'make install' will place the symlink |
| 27 | forest into `pwd`/_install unless you have defined the PREFIX environment |
Eric Andersen | 8ec10a9 | 2001-01-27 09:33:39 +0000 | [diff] [blame] | 28 | variable (i.e., 'make PREFIX=/tmp/foo install') |
Eric Andersen | cc8ed39 | 1999-10-05 16:24:54 +0000 | [diff] [blame] | 29 | |
Eric Andersen | cb81e64 | 2003-07-14 21:21:08 +0000 | [diff] [blame] | 30 | If you wish to install hardlinks, rather than symlinks, you can use |
| 31 | 'make install-hardlinks' instead. |
| 32 | |
Eric Andersen | a29dec2 | 2000-06-22 00:19:33 +0000 | [diff] [blame] | 33 | ---------------- |
Mark Whitley | 3654ca5 | 2001-01-26 20:58:23 +0000 | [diff] [blame] | 34 | |
| 35 | Supported architectures: |
| 36 | |
| 37 | Busybox in general will build on any architecture supported by gcc. It has |
| 38 | a few specialized features added for __sparc__ and __alpha__. insmod |
Eric Andersen | 2835efe | 2001-07-25 16:58:58 +0000 | [diff] [blame] | 39 | functionality is currently limited to x86, ARM, SH3/4, powerpc, m68k, |
Miles Bader | 130bec5 | 2002-04-01 09:37:27 +0000 | [diff] [blame] | 40 | MIPS, and v850e. |
Mark Whitley | 3654ca5 | 2001-01-26 20:58:23 +0000 | [diff] [blame] | 41 | |
| 42 | Supported libcs: |
| 43 | |
Eric Andersen | 85c3c3f | 2003-07-16 07:31:14 +0000 | [diff] [blame] | 44 | glibc-2.0.x, glibc-2.1.x, glibc-2.2.x, glibc-2.3.x, uClibc. People |
Eric Andersen | e5d58c3 | 2001-11-10 10:46:42 +0000 | [diff] [blame] | 45 | are looking at newlib and diet-libc, but consider them unsupported, |
Eric Andersen | 85c3c3f | 2003-07-16 07:31:14 +0000 | [diff] [blame] | 46 | untested, or worse. Linux-libc5 is no longer supported -- you |
| 47 | should probably use uClibc instead if you want a small C library. |
Mark Whitley | 3654ca5 | 2001-01-26 20:58:23 +0000 | [diff] [blame] | 48 | |
| 49 | Supported kernels: |
| 50 | |
Eric Andersen | 85c3c3f | 2003-07-16 07:31:14 +0000 | [diff] [blame] | 51 | Full functionality requires Linux 2.2.x or better. A large fraction of the |
Eric Andersen | cb81e64 | 2003-07-14 21:21:08 +0000 | [diff] [blame] | 52 | code should run on just about anything. While the current code is fairly |
| 53 | Linux specific, it should be fairly easy to port the majority of the code |
| 54 | to, say, FreeBSD or Solaris, or MacOsX, or even Windows (if you are into that |
| 55 | sortof thing). |
Mark Whitley | 3654ca5 | 2001-01-26 20:58:23 +0000 | [diff] [blame] | 56 | |
| 57 | ---------------- |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 58 | |
Matt Kraai | 2d91deb | 2001-08-01 17:21:35 +0000 | [diff] [blame] | 59 | Shells: |
| 60 | |
| 61 | lash is the very smallest shell (adds just 10k) and it is quite usable as |
| 62 | a command prompt, but it is not suitable for any but the most trivial |
| 63 | scripting (such as an initrd that calls insmod a few times) since it does |
| 64 | not understand Bourne shell grammer. It does handle pipes, redirects, and |
Eric Andersen | 9e6089e | 2001-08-02 19:31:08 +0000 | [diff] [blame] | 65 | job control though. Adding in command editing makes it a very nice |
Matt Kraai | 2d91deb | 2001-08-01 17:21:35 +0000 | [diff] [blame] | 66 | lightweight command prompt. |
| 67 | |
| 68 | hush is also quite small (just 18k) and it has very complete Bourne shell |
| 69 | grammer. It handles if/then/else/fi just fine, but doesn't handle loops |
| 70 | like for/do/done or case/esac and such. It also currently has a problem |
Eric Andersen | 9e6089e | 2001-08-02 19:31:08 +0000 | [diff] [blame] | 71 | with job control. Using hush is not yet recommended. |
Matt Kraai | 2d91deb | 2001-08-01 17:21:35 +0000 | [diff] [blame] | 72 | |
| 73 | msh: The minix shell (adds just 30k) is quite complete and handles things |
| 74 | like for/do/done, case/esac and all the things you expect a Bourne shell to |
| 75 | do. It is not always pedantically correct about Bourne shell grammer (try |
| 76 | running the shell testscript "tests/sh.testcases" on it and compare vs bash) |
| 77 | but for most things it works quite well. It also uses only vfork, so it can |
| 78 | be used on uClinux systems. This was only recently added, so there is still |
| 79 | room to shrink it further... |
| 80 | |
| 81 | ash: This adds about 60k in the default configuration and is the most |
| 82 | complete and most pedantically correct shell included with busybox. This |
| 83 | shell was also recently added, and several people (mainly Vladimir and Erik) |
| 84 | have been working on it. There are a number of configurable things at the |
Eric Andersen | 9e6089e | 2001-08-02 19:31:08 +0000 | [diff] [blame] | 85 | top of ash.c as well, so check those out if you want to tweak things. |
Matt Kraai | 2d91deb | 2001-08-01 17:21:35 +0000 | [diff] [blame] | 86 | |
| 87 | ---------------- |
| 88 | |
Eric Andersen | a29dec2 | 2000-06-22 00:19:33 +0000 | [diff] [blame] | 89 | Getting help: |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 90 | |
Eric Andersen | a29dec2 | 2000-06-22 00:19:33 +0000 | [diff] [blame] | 91 | When you find you need help, you can check out the BusyBox mailing list |
Eric Andersen | 2423b12 | 2001-12-08 01:56:15 +0000 | [diff] [blame] | 92 | archives at http://busybox.net/lists/busybox/ or even join |
Eric Andersen | a29dec2 | 2000-06-22 00:19:33 +0000 | [diff] [blame] | 93 | the mailing list if you are interested. |
| 94 | |
| 95 | ---------------- |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 96 | |
Eric Andersen | a29dec2 | 2000-06-22 00:19:33 +0000 | [diff] [blame] | 97 | Bugs: |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 98 | |
Eric Andersen | cb81e64 | 2003-07-14 21:21:08 +0000 | [diff] [blame] | 99 | If you find bugs, please submit a detailed bug report to the busybox mailing |
| 100 | list at busybox@busybox.net. A well-written bug report should include a |
| 101 | transcript of a shell session that demonstrates the bad behavior and enables |
| 102 | anyone else to duplicate the bug on their own machine. The following is such |
| 103 | an example: |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 104 | |
Eric Andersen | cb81e64 | 2003-07-14 21:21:08 +0000 | [diff] [blame] | 105 | To: busybox@busybox.net |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 106 | From: diligent@testing.linux.org |
Eric Andersen | cb81e64 | 2003-07-14 21:21:08 +0000 | [diff] [blame] | 107 | Subject: /bin/date doesn't work |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 108 | |
| 109 | Package: busybox |
Eric Andersen | cb81e64 | 2003-07-14 21:21:08 +0000 | [diff] [blame] | 110 | Version: 1.00 |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 111 | |
Eric Andersen | cb81e64 | 2003-07-14 21:21:08 +0000 | [diff] [blame] | 112 | When I execute Busybox 'date' it produces unexpected results. |
| 113 | With GNU date I get the following output: |
| 114 | |
| 115 | $ date |
| 116 | Wed Mar 21 14:19:41 MST 2001 |
| 117 | |
| 118 | But when I use BusyBox date I get this instead: |
| 119 | |
| 120 | $ date |
| 121 | llegal instruction |
| 122 | |
| 123 | I am using Debian unstable, kernel version 2.4.19-rmk1 on an Netwinder, |
| 124 | and the latest uClibc from CVS. Thanks for the wonderful program! |
| 125 | |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 126 | -Diligent |
| 127 | |
| 128 | Note the careful description and use of examples showing not only what BusyBox |
| 129 | does, but also a counter example showing what an equivalent GNU app does. Bug |
Eric Andersen | cb81e64 | 2003-07-14 21:21:08 +0000 | [diff] [blame] | 130 | reports lacking such detail may never be fixed... Thanks for understanding. |
Eric Andersen | a29dec2 | 2000-06-22 00:19:33 +0000 | [diff] [blame] | 131 | |
| 132 | ---------------- |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 133 | |
Eric Andersen | a29dec2 | 2000-06-22 00:19:33 +0000 | [diff] [blame] | 134 | FTP: |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 135 | |
Eric Andersen | b9c0b99 | 2001-12-22 00:37:54 +0000 | [diff] [blame] | 136 | Source for the latest released version, as well as daily snapshots, can always |
| 137 | be downloaded from |
| 138 | http://busybox.net/downloads/ |
Eric Andersen | a29dec2 | 2000-06-22 00:19:33 +0000 | [diff] [blame] | 139 | |
| 140 | ---------------- |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 141 | |
Eric Andersen | a29dec2 | 2000-06-22 00:19:33 +0000 | [diff] [blame] | 142 | CVS: |
Eric Andersen | 235f66d | 2000-12-13 18:07:38 +0000 | [diff] [blame] | 143 | |
Eric Andersen | 0730943 | 2000-11-29 22:12:19 +0000 | [diff] [blame] | 144 | BusyBox now has its own publicly browsable CVS tree at: |
Eric Andersen | 2423b12 | 2001-12-08 01:56:15 +0000 | [diff] [blame] | 145 | http://busybox.net/cgi-bin/cvsweb/busybox/ |
Eric Andersen | a29dec2 | 2000-06-22 00:19:33 +0000 | [diff] [blame] | 146 | |
| 147 | Anonymous CVS access is available. For instructions, check out: |
Eric Andersen | 2423b12 | 2001-12-08 01:56:15 +0000 | [diff] [blame] | 148 | http://busybox.net/cvs_anon.html |
Eric Andersen | a29dec2 | 2000-06-22 00:19:33 +0000 | [diff] [blame] | 149 | |
| 150 | For those that are actively contributing there is even CVS write access: |
Eric Andersen | 2423b12 | 2001-12-08 01:56:15 +0000 | [diff] [blame] | 151 | http://busybox.net/cvs_write.html |
Eric Andersen | a29dec2 | 2000-06-22 00:19:33 +0000 | [diff] [blame] | 152 | |
Eric Andersen | a29dec2 | 2000-06-22 00:19:33 +0000 | [diff] [blame] | 153 | ---------------- |
| 154 | |
Eric Andersen | ded6259 | 1999-11-18 00:19:26 +0000 | [diff] [blame] | 155 | Please feed suggestions, bug reports, insults, and bribes back to: |
| 156 | Erik Andersen |
Eric Andersen | bdfd0d7 | 2001-10-24 05:00:29 +0000 | [diff] [blame] | 157 | <andersen@codepoet.org> |
Eric Andersen | cb81e64 | 2003-07-14 21:21:08 +0000 | [diff] [blame] | 158 | <andersen@codepoet.org> |
Eric Andersen | 84b0092 | 1999-12-11 04:16:51 +0000 | [diff] [blame] | 159 | |