blob: b21f722b62a676dd62a487be06a33b8987ac2d37 [file] [log] [blame]
Eric Andersen6c4a6b12004-10-08 10:50:08 +00001<!--#include file="header.html" -->
2
3
4<h3>Frequently Asked Questions</h3>
5
6This is a collection of some of the more frequently asked questions
7about BusyBox. Some of the questions even have answers. If you
8have additions to this FAQ document, we would love to add them,
9
10<ol>
Rob Landley380ad122005-09-23 16:52:09 +000011<li><a href="#getting_started">How can I get started using BusyBox?</a>
12<li><a href="#build_system">How do I build a BusyBox-based system?</a>
Rob Landleyd48633f2006-03-09 18:03:21 +000013<li><a href="#init">Busybox init isn't working!</a>
Eric Andersen6c4a6b12004-10-08 10:50:08 +000014<li><a href="#kernel">Which Linux kernel versions are supported?</a>
15<li><a href="#arch">Which architectures does BusyBox run on?</a>
16<li><a href="#libc">Which C libraries are supported?</a>
17<li><a href="#commercial">Can I include BusyBox as part of the software on my device?</a>
18<li><a href="#bugs">I think I found a bug in BusyBox! What should I do?!</a>
19<li><a href="#job_control">Why do I keep getting "sh: can't access tty; job control
20 turned off" errors? Why doesn't Control-C work within my shell?</a>
21<li><a href="#demanding">I demand that you to add &lt;favorite feature&gt; right now! How come
22 you don't answer all my questions on the mailing list instantly? I demand
23 that you help me with all of my problems <em>Right Now</em>!</a>
24<li><a href="#helpme">I need help with BusyBox! What should I do?</a>
25<li><a href="#contracts">I need you to add &lt;favorite feature&gt;! Are the BusyBox developers willing to
26 be paid in order to fix bugs or add in &lt;favorite feature&gt;? Are you willing to provide
27 support contracts?</a>
Mike Frysinger77dbe732005-04-17 04:32:22 +000028<li><a href="#external">Where can I find other small utilities since busybox does not include the features I want?</a></li>
Eric Andersen6c4a6b12004-10-08 10:50:08 +000029<li><a href="#support">I think you guys are great and I want to help support your work!</a>
Rob Landleyde7f9b72005-07-31 04:27:19 +000030<li><a href="#optimize">I want to make busybox even smaller, how do I go about it?</a>
31
Eric Andersen6c4a6b12004-10-08 10:50:08 +000032
33
34</ol>
35
Rob Landley380ad122005-09-23 16:52:09 +000036<hr />
37<p>
38<h2><a name="getting_started">How can I get started using BusyBox?</a></h2>
39<p> If you just want to try out busybox without installing it, download the
40 tarball, extract it, run "make allyesconfig", and then run "make".
41</p>
42<p>
43 This will create a busybox binary with all features enabled. To try
44 out a busybox applet, type "./busybox [appletname] [options]", for
45 example "./busybox ls -l" or "./busybox cat LICENSE". Type "./busybox"
46 to see a command list, and "busybox appletname --help" to see a brief
47 usage message for a given applet.
48</p>
49<p>
50 BusyBox uses the name it was invoked under to determine which applet is
51 being invoked. (Try "mv busybox ls" and then "./ls -l".) Installing
52 busybox consists of creating symlinks (or hardlinks) to the busybox
Rob Landley3d283dd2005-11-03 22:11:00 +000053 binary for each applet in busybox, and making sure these links are in
54 the shell's command $PATH. The special applet name "busybox" (or with
55 any optional suffix, such as "busybox-static") uses the first argument
56 to determine which applet to run, as shown above.
Rob Landley380ad122005-09-23 16:52:09 +000057</p>
58<p>
59 BusyBox also has a feature called the "standalone shell", where the busybox
60 shell runs any built-in applets before checking the command path. This
61 feature is also enabled by "make allyesconfig", and to try it out run
62 the command line "PATH= ./busybox ash". This will blank your command path
63 and run busybox as your command shell, so the only commands it can find
64 (without an explicit path such as /bin/ls) are the built-in busybox ones.
65 This is another good way to see what's built into busybox. (Note that the
66 standalone shell is dependent on the existence of /proc/self/exe, so before
67 using it in a chroot environment you must mount /proc.)
68</p>
69<p>
70 To build a smaller busybox binary, run "make menuconfig" and disable the
71 features you don't need. (Or run "make allnoconfig" and then use
72 menuconfig to add just the features you need. Don't forget to recompile
73 with "make" once you've finished configuring.)
74</p>
75<hr/>
76<p/>
77<h2><a name="build_system">How do I build a BusyBox-based system?</a></h2>
78<p>
79 BusyBox is a package that replaces a dozen standard packages, but it is
80 not by itself a complete bootable system. Building an entire Linux
81 distribution from source is a bit beyond the scope of this FAQ, but it
82 understandably keeps cropping up on the mailing list, so here are some
83 pointers.
84</p>
85<p>
86 Start by learning how to strip a working system down to the bare essentials
87 needed to run one or two commands, so you know what it is you actually
88 need. An excellent practical place to do
89 this is the <a href="http://www.tldp.org/HOWTO/Bootdisk-HOWTO/">Linux
90 BootDisk Howto</a>, or for a more theoretical approach try
91 <a href="http://www.tldp.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html">From
92 PowerUp to Bash Prompt</a>.
93</p>
94<p>
95 To learn how to build a working Linux system entirely from source code,
96 the place to go is the <a href="http://www.linuxfromscratch.org">Linux
97 From Scratch</a> project. They have an entire book of step-by-step
98 instructions you can
99 <a href="http://www.linuxfromscratch.org/lfs/view/stable/">read online</a>
100 or
101 <a href="http://www.linuxfromscratch.org/lfs/downloads/stable/">download</a>.
102 Be sure to check out the other sections of their main page, including
103 Beyond Linux From Scratch, Hardened Linux From Scratch, their Hints
104 directory, and their LiveCD project. (They also have mailing lists which
105 are better sources of answers to Linux-system building questions than
106 the busybox list.)
107</p>
108<p>
109 If you want an automated yet customizable system builder which produces
110 a BusyBox and uClibc based system, try
111 <a href="http://buildroot.uclibc.org">buildroot</a>, which is
Rob Landleya253e732006-02-14 08:29:48 +0000112 another project by the maintainer of the uClibc (Erik Andersen).
113 Download the tarball, extract it, unset CC, make.
Rob Landley380ad122005-09-23 16:52:09 +0000114 For more instructions, see the website.
115</p>
116
Rob Landleyd48633f2006-03-09 18:03:21 +0000117<hr />
118<p>
119<h2><a name="init">Busybox init isn't working!</a></h2>
120<p>
121 Build a statically linked version of the following "hello world" program
122 with your cross compiler toolchain.
123</p>
124<pre>
125#include &lt;stdio.h&gt;
126
127int main(int argc, char *argv)
128{
129 printf("Hello world!\n");
130 sleep(999999999);
131}
132</pre>
133
134<p>
135 Now try to boot your device with an "init=" argument pointing to your
136 hello world program. Did you see the hello world message? Until you
137 do, don't bother messing with busybox init.
138</p>
139
140<p>
141 Once you've got it working statically linked, try getting it to work
142 dynamically linked. Then read the FAQ entry before this one.
143</p>
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000144
145<hr />
146<p>
147<h2><a name="kernel">Which Linux kernel versions are supported?</a></h2>
148<p>
Rob Landley380ad122005-09-23 16:52:09 +0000149 Full functionality requires Linux 2.4.x or better. (Earlier versions may
150 still work, but are no longer regularly tested.) A large fraction of the
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000151 code should run on just about anything. While the current code is fairly
152 Linux specific, it should be fairly easy to port the majority of the code
153 to support, say, FreeBSD or Solaris, or Mac OS X, or even Windows (if you
154 are into that sort of thing).
Rob Landley380ad122005-09-23 16:52:09 +0000155</p>
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000156<hr />
157<p>
158<h2><a name="arch">Which architectures does BusyBox run on?</a></h2>
159<p>
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000160 BusyBox in general will build on any architecture supported by gcc.
Rob Landley380ad122005-09-23 16:52:09 +0000161 Kernel module loading for 2.4 Linux kernels is currently
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000162 limited to ARM, CRIS, H8/300, x86, ia64, x86_64, m68k, MIPS, PowerPC,
163 S390, SH3/4/5, Sparc, v850e, and x86_64 for 2.4.x kernels.
Rob Landley380ad122005-09-23 16:52:09 +0000164</p>
165<p>
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000166 With 2.6.x kernels, module loading support should work on all architectures.
Rob Landley380ad122005-09-23 16:52:09 +0000167</p>
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000168<hr />
169<p>
170<h2><a name="libc">Which C libraries are supported?</a></h2>
171<p>
Rob Landley380ad122005-09-23 16:52:09 +0000172 On Linux, BusyBox releases are tested against uClibc (0.9.27 or later) and
173 glibc (2.2 or later). Both should provide full functionality with busybox,
174 and if you find a bug we want to hear about it.
175</p>
Mike Frysingerd505e3e2005-10-29 08:03:54 +0000176<p>
Rob Landley380ad122005-09-23 16:52:09 +0000177 Linux-libc5 is no longer maintained (and has no known advantages over
178 uClibc), dietlibc is known to have numerous unfixed bugs, and klibc is
179 missing too many features to build BusyBox. If you require a small C
180 library for Linux, the busybox developers recommend uClibc.
181</p>
182<p>
183 Some BusyBox applets have been built and run under a combination
184 of newlib and libgloss (see
185 <a href="http://www.busybox.net/lists/busybox/2005-March/013759.html">this thread</a>).
186 This is still experimental, but may be supported in a future release.
187</p>
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000188<hr />
189<p>
Mike Frysinger86097b32005-09-15 01:37:36 +0000190<h2><a name="commercial">Can I include BusyBox as part of the software on my device?</a></h2>
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000191
192 Yes. As long as you <a href="http://busybox.net/license.html">fully comply
193 with the generous terms of the GPL BusyBox license</a> you can ship BusyBox
194 as part of the software on your device.
195
Eric Andersen75a7e192005-01-13 17:23:28 +0000196 <br>
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000197 <a href="#support">Please consider sharing some of the money you make.</a>
198
199
200<hr />
201<p>
Mike Frysinger86097b32005-09-15 01:37:36 +0000202<h2><a name="bugs">I think I found a bug in BusyBox! What should I do?</a></h2>
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000203<p>
204
Eric Andersenff4b9242005-01-31 13:05:02 +0000205
206<p>
207
208 If you simply need help with using or configuring BusyBox, please submit a
209 detailed description of your problem to the BusyBox mailing list at <a
210 href="mailto:busybox@mail.busybox.net"> busybox@mail.busybox.net</a>.
Rob Landleya253e732006-02-14 08:29:48 +0000211 Please do not send email to individual developers asking
Eric Andersenff4b9242005-01-31 13:05:02 +0000212 for private help unless you are planning on paying for consulting services.
213 When we answer questions on the BusyBox mailing list, it helps everyone,
214 while private answers help only you...
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000215
216 <p>
217
Eric Andersenff4b9242005-01-31 13:05:02 +0000218 The developers of BusyBox are busy people, and have only so much they can
219 keep in their brains at a time. As a result, bug reports sometimes get
220 lost when posted to the mailing list. To prevent your bug report from
221 getting lost, if you find a bug in BusyBox, please use the <a
222 href="http://bugs.busybox.net/">BusyBox Bug and Patch Tracking System</a>
223 to submit a detailed bug report.
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000224
Eric Andersenff4b9242005-01-31 13:05:02 +0000225 <p>
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000226
Eric Andersenff4b9242005-01-31 13:05:02 +0000227 The same also applies to patches... Regardless of whether your patch is a
228 bug fix or adds shiney new features, please post your patch to the <a
229 href="http://bugs.busybox.net/">BusyBox Bug and Patch Tracking System</a>
230 to make certain it is properly considered.
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000231
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000232
233<hr />
234<p>
235<h2><a name="job_control">Why do I keep getting "sh: can't access tty; job control
236 turned off" errors? Why doesn't Control-C work within my shell?</a></h2>
237<p>
238
239 Job control will be turned off since your shell can not obtain a controlling
240 terminal. This typically happens when you run your shell on /dev/console.
241 The kernel will not provide a controlling terminal on the /dev/console
242 device. Your should run your shell on a normal tty such as tty1 or ttyS0
243 and everything will work perfectly. If you <em>REALLY</em> want your shell
244 to run on /dev/console, then you can hack your kernel (if you are into that
245 sortof thing) by changing drivers/char/tty_io.c to change the lines where
246 it sets "noctty = 1;" to instead set it to "0". I recommend you instead
247 run your shell on a real console...
248
249
250<hr />
251<p>
252<h2><a name="demanding">I demand that you to add &lt;favorite feature&gt; right now! How come
253 you don't answer all my questions on the mailing list instantly? I demand
254 that you help me with all of my problems <em>Right Now</em>!</a></h2>
255<p>
256
257 You have not paid us a single cent and yet you still have the product of
258 many years of our work. We are not your slaves! We work on BusyBox
259 because we find it useful and interesting. If you go off flaming us, we
260 will ignore you.
261
262
263<hr />
264<p>
265<h2><a name="helpme">I need help with BusyBox! What should I do?</a></h2>
266<p>
267
268 If you find that you need help with BusyBox, you can ask for help on the
269 BusyBox mailing list at busybox@mail.busybox.net. In addition to the BusyBox
Rob Landleya253e732006-02-14 08:29:48 +0000270 mailing list, Erik (andersee), Manuel (mjn3), Rob (landley) and others are
271 known to hang out on the uClibc IRC channel: #uclibc on irc.freenode.net.
272 (Daily logs of that IRC channel, going back to 2002, are available
Mike Frysingerd505e3e2005-10-29 08:03:54 +0000273 <a href="http://ibot.Rikers.org/%23uclibc/">here</a>.)
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000274
275 <p>
276
Rob Landleya253e732006-02-14 08:29:48 +0000277 <b>Please do not send private email to Rob, Erik, Manuel, or the other
278 BusyBox contributors asking for private help unless you are planning on
279 paying for consulting services.</b>
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000280
281 <p>
282
283 When we answer questions on the BusyBox mailing list, it helps everyone
284 since people with similar problems in the future will be able to get help
285 by searching the mailing list archives. Private help is reserved as a paid
286 service. If you need to use private communication, or if you are serious
287 about getting timely assistance with BusyBox, you should seriously consider
288 paying for consulting services.
289
290 <p>
291
292
293
294<hr />
295<p>
296<h2><a name="contracts">I need you to add &lt;favorite feature&gt;! Are the BusyBox
297 developers willing to be paid in order to fix bugs or add in &lt;favorite feature&gt;?
298 Are you willing to provide support contracts?</a></h2>
299<p>
300
301 Sure! Now you have our attention! What you should do is contact <a
302 href="mailto:andersen@codepoet.org">Erik Andersen</a> of <a
303 href="http://codepoet-consulting.com/">CodePoet Consulting</a> to bid
304 on your project. If Erik is too busy to personally add your feature, there
305 are many other active BusyBox contributors who will almost certainly be able
Eric Andersen6feb2002004-12-20 18:10:03 +0000306 to help you out. Erik can contact them privately, and may even let you to
Eric Andersen9395ca42004-10-13 09:42:10 +0000307 post your request for services on the mailing list.
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000308
309
310<hr />
311<p>
Mike Frysingeref614ec2005-04-17 07:25:32 +0000312<h2><a name="external">Where can I find other small utilities since busybox
Mike Frysinger77dbe732005-04-17 04:32:22 +0000313 does not include the features I want?</a></h2>
314<p>
315 We maintain such a <a href="tinyutils.html">list</a> on this site!
316
317
318<hr />
319<p>
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000320<h2><a name="support">I think you guys are great and I want to help support your work!</a></h2>
321<p>
322
Eric Andersenfdab4b12005-02-09 06:44:36 +0000323 Wow, that would be great! If you would like to make a donation to help
324 support BusyBox, and/or request features, you can click here:
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000325
326 <!-- Begin PayPal Logo -->
327 <center>
328 <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
329 <input type="hidden" name="cmd" value="_xclick">
330 <input type="hidden" name="business" value="andersen@codepoet.org">
331 <input type="hidden" name="item_name" value="Support BusyBox">
Eric Andersen9395ca42004-10-13 09:42:10 +0000332 <input type="hidden" name="image_url" value="http://codepoet-consulting.com/images/codepoet.png">
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000333 <input type="hidden" name="no_shipping" value="1">
334 <input type="image" src="images/donate.png" name="submit" alt="Make donation using PayPal">
335 </form>
336 </center>
337 <!-- End PayPal Logo -->
338
339 If you prefer to contact Erik directly to make a donation, donate hardware,
340 request support, etc, you can contact
341 <a href="http://codepoet-consulting.com/">CodePoet Consulting</a> here.
Rob Landleya253e732006-02-14 08:29:48 +0000342 CodePoet Consulting can accept both Visa and MasterCard for those that do
343 not trust PayPal...
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000344
345<hr />
Rob Landleyc7a3e1b2005-07-31 04:25:00 +0000346<p>
347<h2><a name="optimize">I want to make busybox even smaller, how do I go about it?</a></h2>
348<p>
349 To conserve bytes it's good to know where they're being used, and the
350 size of the final executable isn't always a reliable indicator of
351 the size of the components (since various structures are rounded up,
352 so a small change may not even be visible by itself, but many small
353 savings add up).
354</p>
355<p>
Rob Landleyd1fa5852005-09-05 10:25:51 +0000356 The busybox Makefile can generate a report of how much space is actually
357 being used by each function and variable. Run "<b>make sizes</b>" (preferably
358 with CONFIG_DEBUG off) to get a list of symbols and the amount of
359 space allocated for each one, sorted by size.
Rob Landleyc7a3e1b2005-07-31 04:25:00 +0000360</p>
361<hr />
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000362
Rob Landleyc7a3e1b2005-07-31 04:25:00 +0000363
364
Eric Andersen6c4a6b12004-10-08 10:50:08 +0000365<br>
366<br>
367<br>
368
369<!--#include file="footer.html" -->