aboutsummaryrefslogtreecommitdiff
path: root/busybox
diff options
context:
space:
mode:
Diffstat (limited to 'busybox')
-rw-r--r--busybox/README245
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 @@
1Please see the LICENSE file for details on copying and usage. 1Please see the LICENSE file for details on copying and usage.
2 2
3BusyBox combines tiny versions of many common UNIX utilities into a single 3What is busybox:
4small executable. It provides minimalist replacements for most of the utilities 4
5you 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
6generally have fewer options than their full-featured GNU cousins; however, the 6 small executable. It provides minimalist replacements for most of the
7options that are included provide the expected functionality and behave very 7 utilities you usually find in bzip2, coreutils, file, findutils, gawk, grep,
8much 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
10BusyBox has been written with size-optimization and limited resources in mind. 10 their full-featured cousins; however, the options that are included provide
11It is also extremely modular so you can easily include or exclude commands (or 11 the expected functionality and behave very much like their larger
12features) at compile time. This makes it easy to customize your embedded 12 counterparts.
13systems. To create a working system, just add /dev, /etc, and a Linux kernel. 13
14BusyBox provides a fairly complete POSIX environment for any small or embedded 14 BusyBox has been written with size-optimization and limited resources in
15system. 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
17BusyBox is extremely configurable. This allows you to include only the 17 commands (or features) at compile time. This makes it easy to customize
18components 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
21After the build is complete, a busybox.links file is generated. This is 21 disks, installers, and so on.
22used by 'make install' to create symlinks to the BusyBox binary for all 22
23compiled in functions. By default, 'make install' will place the symlink 23 BusyBox provides a fairly complete POSIX environment for any small system,
24forest into `pwd`/_install unless you have defined the PREFIX environment 24 both embedded environments and more full featured systems concerned about
25variable (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
27If 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
32Supported architectures: 33Using 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
41Supported 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
48Supported kernels: 56----------------
49 57
50 Full functionality requires Linux 2.2.x or better. A large fraction of the 58Downloading 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
58Getting help: 63 http://busybox.net/downloads/
59 64
60When 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
61archives at http://busybox.net/lists/busybox/ or even join 66 at:
62the mailing list if you are interested.
63 67
64---------------- 68http://www.busybox.net/cgi-bin/viewcvs.cgi/branches/busybox_1_00_stable/busybox/
65 69
66Bugs: 70 Anonymous SVN access is available. For instructions, check out:
67 71
68If you find bugs, please submit a detailed bug report to the BusyBox mailing 72 http://busybox.net/subversion.html
69list at busybox@mail.busybox.net. A well-written bug report should include a
70transcript of a shell session that demonstrates the bad behavior and enables
71anyone else to duplicate the bug on their own machine. The following is such
72an 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: 86getting 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 94bugs:
96 95
97Note 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
98does, 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
99reports 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
103Downloads: 106 package: busybox
107 version: 1.00
104 108
105Source for the latest released version, as well as daily snapshots, can always 109 when i execute busybox 'date' it produces unexpected results.
106be 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
111CVS: 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
113BusyBox now has its own publicly browsable CVS tree at: 123 -diligent
114 http://busybox.net/cgi-bin/cvsweb/busybox/
115 124
116Anonymous 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
119For those that are actively contributing there is even CVS write access: 130----------------
120 http://busybox.net/cvs_write.html 131
132Portability:
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
176Supported 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
124Please feed suggestions, bug reports, insults, and bribes back to: 193Please feed suggestions, bug reports, insults, and bribes back to the busybox
194maintainer:
125 Erik Andersen 195 Erik Andersen
126 <andersen@codepoet.org> 196 <andersen@codepoet.org>
127