diff options
-rw-r--r-- | busybox/README | 245 |
1 files changed, 157 insertions, 88 deletions
diff --git a/busybox/README b/busybox/README index bf2ae6f3f..df5c3cd9c 100644 --- a/busybox/README +++ b/busybox/README | |||
@@ -1,127 +1,196 @@ | |||
1 | Please see the LICENSE file for details on copying and usage. | 1 | Please see the LICENSE file for details on copying and usage. |
2 | 2 | ||
3 | BusyBox combines tiny versions of many common UNIX utilities into a single | 3 | What is busybox: |
4 | small executable. It provides minimalist replacements for most of the utilities | 4 | |
5 | you usually find in GNU coreutils, util-linux, etc. The utilities in BusyBox | 5 | BusyBox combines tiny versions of many common UNIX utilities into a single |
6 | generally have fewer options than their full-featured GNU cousins; however, the | 6 | small executable. It provides minimalist replacements for most of the |
7 | options that are included provide the expected functionality and behave very | 7 | utilities you usually find in bzip2, coreutils, file, findutils, gawk, grep, |
8 | much like their GNU counterparts. | 8 | inetutils, modutils, net-tools, procps, sed, shadow, sysklogd, sysvinit, tar, |
9 | 9 | util-linux, and vim. The utilities in BusyBox often have fewer options than | |
10 | BusyBox has been written with size-optimization and limited resources in mind. | 10 | their full-featured cousins; however, the options that are included provide |
11 | It is also extremely modular so you can easily include or exclude commands (or | 11 | the expected functionality and behave very much like their larger |
12 | features) at compile time. This makes it easy to customize your embedded | 12 | counterparts. |
13 | systems. To create a working system, just add /dev, /etc, and a Linux kernel. | 13 | |
14 | BusyBox provides a fairly complete POSIX environment for any small or embedded | 14 | BusyBox has been written with size-optimization and limited resources in |
15 | system. | 15 | mind, both to produce small binaries and to reduce run-time memory usage. |
16 | 16 | Busybox is also extremely modular so you can easily include or exclude | |
17 | BusyBox is extremely configurable. This allows you to include only the | 17 | commands (or features) at compile time. This makes it easy to customize |
18 | components you need, thereby reducing binary size. Run 'make config' or | 18 | embedded systems; to create a working system, just add /dev, /etc, and a |
19 | 'make menuconfig' to select the functionality that you wish to enable. | 19 | Linux kernel. Busybox (usually together with uClibc) has also been used as |
20 | 20 | a component of "thin client" desktop systems, live-CD distributions, rescue | |
21 | After the build is complete, a busybox.links file is generated. This is | 21 | disks, installers, and so on. |
22 | used by 'make install' to create symlinks to the BusyBox binary for all | 22 | |
23 | compiled in functions. By default, 'make install' will place the symlink | 23 | BusyBox provides a fairly complete POSIX environment for any small system, |
24 | forest into `pwd`/_install unless you have defined the PREFIX environment | 24 | both embedded environments and more full featured systems concerned about |
25 | variable (i.e., 'make PREFIX=/tmp/foo install') | 25 | space. Busybox is slowly working towards implementing the full Single Unix |
26 | 26 | Specification V3 (http://www.opengroup.org/onlinepubs/009695399/), but isn't | |
27 | If you wish to install hard links, rather than symlinks, you can use | 27 | there yet (and for size reasons will probably support at most UTF-8 for |
28 | 'make PREFIX=/tmp/foo install-hardlinks' instead. | 28 | internationalization). We are also interested in passing the Linux Test |
29 | Project (http://ltp.sourceforge.net). | ||
29 | 30 | ||
30 | ---------------- | 31 | ---------------- |
31 | 32 | ||
32 | Supported architectures: | 33 | Using busybox: |
33 | 34 | ||
34 | BusyBox in general will build on any architecture supported by gcc. | 35 | BusyBox is extremely configurable. This allows you to include only the |
35 | Kernel module loading for 2.2 and 2.4 Linux kernels is currently | 36 | components and options you need, thereby reducing binary size. Run 'make |
36 | limited to ARM, CRIS, H8/300, x86, ia64, x86_64, m68k, MIPS, PowerPC, | 37 | config' or 'make menuconfig' to select the functionality that you wish to |
37 | S390, SH3/4/5, Sparc, v850e, and x86_64 for 2.4.x kernels. For 2.6.x | 38 | enable. |
38 | kernels, kernel module loading support should work on all architectures. | ||
39 | 39 | ||
40 | The behavior of busybox is determined by the name it's called under: as | ||
41 | "cp" it behaves like cp, as "sed" it behaves like sed, and so on. Called | ||
42 | as "busybox" it takes the second argument as the name of the applet to | ||
43 | run (I.E. "./busybox ls -l /proc"). | ||
40 | 44 | ||
41 | Supported C Libraries: | 45 | The "standalone shell" mode is an easy way to try out busybox; this is a |
46 | command shell that calls the builtin applets without needing them to be | ||
47 | installed in the path. (Note that this requires /proc to be mounted, if | ||
48 | testing from a boot floppy or in a chroot environment.) | ||
42 | 49 | ||
43 | uClibc and glibc are supported. People have been looking at newlib and | 50 | The build automatically generates a file "busybox.links", which is used by |
44 | dietlibc, but they are currently considered unsupported, untested, or | 51 | 'make install' to create symlinks to the BusyBox binary for all compiled in |
45 | worse. Linux-libc5 is no longer supported -- you should probably use uClibc | 52 | commands. Use the PREFIX environment variable to specify where to install |
46 | instead if you want a small C library. | 53 | the busybox binary and symlink forest. (i.e., 'make PREFIX=/tmp/foo install', |
54 | or 'make PREFIX=/tmp/foo install-hardlinks' if you prefer hard links.) | ||
47 | 55 | ||
48 | Supported kernels: | 56 | ---------------- |
49 | 57 | ||
50 | Full functionality requires Linux 2.2.x or better. A large fraction of the | 58 | Downloading the current source code: |
51 | code should run on just about anything. While the current code is fairly | ||
52 | Linux specific, it should be fairly easy to port the majority of the code | ||
53 | to support, say, FreeBSD or Solaris, or Mac OS X, or even Windows (if you | ||
54 | are into that sort of thing). | ||
55 | 59 | ||
56 | ---------------- | 60 | Source for the latest released version, as well as daily snapshots, can always |
61 | be downloaded from | ||
57 | 62 | ||
58 | Getting help: | 63 | http://busybox.net/downloads/ |
59 | 64 | ||
60 | When you find you need help, you can check out the BusyBox mailing list | 65 | You can browse the up to the minute source code and change history online |
61 | archives at http://busybox.net/lists/busybox/ or even join | 66 | at: |
62 | the mailing list if you are interested. | ||
63 | 67 | ||
64 | ---------------- | 68 | http://www.busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_00_stable/busybox/ |
65 | 69 | ||
66 | Bugs: | 70 | Anonymous SVN access is available. For instructions, check out: |
67 | 71 | ||
68 | If you find bugs, please submit a detailed bug report to the BusyBox mailing | 72 | http://busybox.net/subversion.html |
69 | list at busybox@mail.busybox.net. A well-written bug report should include a | ||
70 | transcript of a shell session that demonstrates the bad behavior and enables | ||
71 | anyone else to duplicate the bug on their own machine. The following is such | ||
72 | an example: | ||
73 | 73 | ||
74 | To: busybox@mail.busybox.net | 74 | For those that are actively contributing and would like to check files in, |
75 | From: diligent@testing.linux.org | 75 | see: |
76 | Subject: /bin/date doesn't work | ||
77 | 76 | ||
78 | Package: BusyBox | 77 | http://busybox.net/developer.html |
79 | Version: 1.00 | ||
80 | 78 | ||
81 | When I execute BusyBox 'date' it produces unexpected results. | 79 | The developers also have a bug and patch tracking system |
82 | With GNU date I get the following output: | 80 | (http://bugs.busybox.net) although posting a bug/patch to the mailing list |
81 | is generally a faster way of getting it fixed, and the complete archive of | ||
82 | what happened is the subversion changelog. | ||
83 | 83 | ||
84 | $ date | 84 | ---------------- |
85 | Fri Oct 8 14:19:41 MDT 2004 | ||
86 | 85 | ||
87 | But when I use BusyBox date I get this instead: | 86 | getting help: |
88 | 87 | ||
89 | $ date | 88 | when you find you need help, you can check out the busybox mailing list |
90 | illegal instruction | 89 | archives at http://busybox.net/lists/busybox/ or even join |
90 | the mailing list if you are interested. | ||
91 | 91 | ||
92 | I am using Debian unstable, kernel version 2.4.25-vrs2 on a Netwinder, | 92 | ---------------- |
93 | and the latest uClibc from CVS. Thanks for the wonderful program! | ||
94 | 93 | ||
95 | -Diligent | 94 | bugs: |
96 | 95 | ||
97 | Note the careful description and use of examples showing not only what BusyBox | 96 | if you find bugs, please submit a detailed bug report to the busybox mailing |
98 | does, but also a counter example showing what an equivalent GNU app does. Bug | 97 | list at busybox@busybox.net. a well-written bug report should include a |
99 | reports lacking such detail may never be fixed... Thanks for understanding. | 98 | transcript of a shell session that demonstrates the bad behavior and enables |
99 | anyone else to duplicate the bug on their own machine. the following is such | ||
100 | an example: | ||
100 | 101 | ||
101 | ---------------- | 102 | to: busybox@mail.busybox.net |
103 | from: diligent@testing.linux.org | ||
104 | subject: /bin/date doesn't work | ||
102 | 105 | ||
103 | Downloads: | 106 | package: busybox |
107 | version: 1.00 | ||
104 | 108 | ||
105 | Source for the latest released version, as well as daily snapshots, can always | 109 | when i execute busybox 'date' it produces unexpected results. |
106 | be downloaded from | 110 | with gnu date i get the following output: |
107 | http://busybox.net/downloads/ | ||
108 | 111 | ||
109 | ---------------- | 112 | $ date |
113 | fri oct 8 14:19:41 mdt 2004 | ||
114 | |||
115 | but when i use busybox date i get this instead: | ||
116 | |||
117 | $ date | ||
118 | illegal instruction | ||
110 | 119 | ||
111 | CVS: | 120 | i am using debian unstable, kernel version 2.4.25-vrs2 on a netwinder, |
121 | and the latest uclibc from cvs. thanks for the wonderful program! | ||
112 | 122 | ||
113 | BusyBox now has its own publicly browsable CVS tree at: | 123 | -diligent |
114 | http://busybox.net/cgi-bin/cvsweb/busybox/ | ||
115 | 124 | ||
116 | Anonymous CVS access is available. For instructions, check out: | 125 | note the careful description and use of examples showing not only what |
117 | http://busybox.net/cvs_anon.html | 126 | busybox does, but also a counter example showing what an equivalent app |
127 | does (or pointing to the text of a relevant standard). Bug reports lacking | ||
128 | such detail may never be fixed... Thanks for understanding. | ||
118 | 129 | ||
119 | For those that are actively contributing there is even CVS write access: | 130 | ---------------- |
120 | http://busybox.net/cvs_write.html | 131 | |
132 | Portability: | ||
133 | |||
134 | Busybox is developed and tested on Linux 2.4 and 2.6 kernels, linked | ||
135 | against uClibc (0.9.27 or greater) and glibc (2.2 or greater). In such | ||
136 | an environment, the full set of busybox features should work (and if | ||
137 | anything doesn't we want to know about it so we can fix it). Note that | ||
138 | the 2.6 kernel can be trimmed down considerably with the aid of Matt | ||
139 | Mackall's -tiny work (http://www.selenic.com/tiny-about/). | ||
140 | |||
141 | Since busybox consists of a large number of more or less independent | ||
142 | applets, portability is a question of which features work where. Some | ||
143 | busybox applets (such as cat and rm) are highly portable and likely to work | ||
144 | just about anywhere, while others (such as insmod and losetup) are only | ||
145 | likely to work under fairly recent Linux kernels with recent C libraries. | ||
146 | |||
147 | Earlier versions of Linux and glibc may or may not work, for any given | ||
148 | configuration. Linux 2.2 or earlier should mostly work, but this is no | ||
149 | longer regularly tested and inherently won't support certain features (such | ||
150 | as long files and --bind mounts). The same is true for glibc 2.0 and 2.1, | ||
151 | expect a higher testing and debugging burden using such old infrastructure. | ||
152 | (The busybox developers are not very interested in supporting these older | ||
153 | versions, but can probably be talked into accepting small patches to fix | ||
154 | simple problems.) | ||
155 | |||
156 | Some environments are not recommended. Early versions of uClibc were buggy | ||
157 | and missing many features: upgrade. Linking against libc5 or dietlibc is | ||
158 | not supported and not interesting to the busybox developers. (The first is | ||
159 | obsolete and has no known size or feature advantages over uClibc, the second | ||
160 | has known bugs that its developers have actively refused to fix.) Ancient | ||
161 | Linux kernels (2.0.x and earlier) are similarly uninteresting. | ||
162 | |||
163 | In theory it's possible to use Busybox under other operating systems (such as | ||
164 | MacOS X, Solaris, Cygwin, or the BSD Fork Du Jour). This generally involves | ||
165 | a different kernel and a different C library at the same time. While it | ||
166 | should be possible to port the majority of the code to work in one of | ||
167 | these environments, don't be suprised if it doesn't work out of the box. If | ||
168 | you're into that sort of thing, start small (selecting just a few applets) | ||
169 | and work your way up. | ||
170 | |||
171 | Shaun Jackman has recently (2005) ported busybox to a combination of newlib | ||
172 | and libgloss, and some of his patches have been integrated. This platform | ||
173 | may join glibc/uclibc and Linux as a supported combination with the 1.1 | ||
174 | release, but is not supported in 1.0. | ||
175 | |||
176 | Supported hardware: | ||
177 | |||
178 | BusyBox in general will build on any architecture supported by gcc. We | ||
179 | support both 32 and 64 bit platforms, and both big and little endian | ||
180 | systems. | ||
181 | |||
182 | Under 2.4 Linux kernels, kernel module loading was implemented in a | ||
183 | platform-specific manner. Busybox's insmod utility has been reported to | ||
184 | work under ARM, CRIS, H8/300, x86, ia64, x86_64, m68k, MIPS, PowerPC, S390, | ||
185 | SH3/4/5, Sparc, v850e, and x86_64. Anything else probably won't work. | ||
186 | |||
187 | The module loading mechanism for the 2.6 kernel is much more generic, and | ||
188 | we believe 2.6.x kernel module loading support should work on all | ||
189 | architectures supported by the kernel. | ||
121 | 190 | ||
122 | ---------------- | 191 | ---------------- |
123 | 192 | ||
124 | Please feed suggestions, bug reports, insults, and bribes back to: | 193 | Please feed suggestions, bug reports, insults, and bribes back to the busybox |
194 | maintainer: | ||
125 | Erik Andersen | 195 | Erik Andersen |
126 | <andersen@codepoet.org> | 196 | <andersen@codepoet.org> |
127 | |||