summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-07-13 15:26:53 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-07-13 15:26:53 +0000
commit153cd695e4fa9b53bd12844468c6f97784d9696e (patch)
tree421bc4b770f792b505b56ae92942644d1c9d5f04 /docs
parent828e2a95dac7b708cdcfac5b6b99e7d3597c80a5 (diff)
downloadbusybox-w32-153cd695e4fa9b53bd12844468c6f97784d9696e.tar.gz
busybox-w32-153cd695e4fa9b53bd12844468c6f97784d9696e.tar.bz2
busybox-w32-153cd695e4fa9b53bd12844468c6f97784d9696e.zip
FAQ: add timezone Q
Diffstat (limited to 'docs')
-rw-r--r--docs/busybox.net/FAQ.html101
1 files changed, 60 insertions, 41 deletions
diff --git a/docs/busybox.net/FAQ.html b/docs/busybox.net/FAQ.html
index b6a5d721f..7b15bf78c 100644
--- a/docs/busybox.net/FAQ.html
+++ b/docs/busybox.net/FAQ.html
@@ -31,6 +31,11 @@ have additions to this FAQ document, we would love to add them,
31<li><a href="#job_control">Why do I keep getting "sh: can't access tty; job control turned off" errors? Why doesn't Control-C work within my shell?</a></li> 31<li><a href="#job_control">Why do I keep getting "sh: can't access tty; job control turned off" errors? Why doesn't Control-C work within my shell?</a></li>
32</ol> 32</ol>
33 33
34<h2>Misc. questions</h2>
35<ol>
36 <li><a href="#tz">How do I change the time zone in busybox?</a></li>
37</ol>
38
34<h2>Programming questions</h2> 39<h2>Programming questions</h2>
35<ol> 40<ol>
36 <li><a href="#goals">What are the goals of busybox?</a></li> 41 <li><a href="#goals">What are the goals of busybox?</a></li>
@@ -52,17 +57,17 @@ have additions to this FAQ document, we would love to add them,
52 <li><a href="#tips_memory">Memory used by relocatable code, PIC, and static linking.</a></li> 57 <li><a href="#tips_memory">Memory used by relocatable code, PIC, and static linking.</a></li>
53 <li><a href="#tips_kernel_headers">Including Linux kernel headers.</a></li> 58 <li><a href="#tips_kernel_headers">Including Linux kernel headers.</a></li>
54 </ul> 59 </ul>
55 <li><a href="#who">Who are the BusyBox developers?</a></li> 60 <li><a href="#who">Who are the BusyBox developers?</a></li>
56</ul> 61 </ul>
57
58
59</ol> 62</ol>
60 63
64
65<hr />
61<h1>General questions</h1> 66<h1>General questions</h1>
62 67
63<hr /> 68<hr />
64<p>
65<h2><a name="getting_started">How can I get started using BusyBox?</a></h2> 69<h2><a name="getting_started">How can I get started using BusyBox?</a></h2>
70
66<p> If you just want to try out busybox without installing it, download the 71<p> If you just want to try out busybox without installing it, download the
67 tarball, extract it, run "make defconfig", and then run "make". 72 tarball, extract it, run "make defconfig", and then run "make".
68</p> 73</p>
@@ -107,9 +112,10 @@ $ /bin/echo $PATH
107$ echo $PATH 112$ echo $PATH
108/bin/sh: echo: not found 113/bin/sh: echo: not found
109</pre> 114</pre>
115
110<hr /> 116<hr />
111<p>
112<h2><a name="configure">How do I configure busybox?</a></h2> 117<h2><a name="configure">How do I configure busybox?</a></h2>
118
113<p> Busybox is configured similarly to the linux kernel. Create a default 119<p> Busybox is configured similarly to the linux kernel. Create a default
114 configuration and then run "make menuconfig" to modify it. The end 120 configuration and then run "make menuconfig" to modify it. The end
115 result is a .config file that tells the busybox build process what features 121 result is a .config file that tells the busybox build process what features
@@ -155,17 +161,16 @@ within each applet. More build coverage testing.</p></li>
155<p> Menuconfig modifies your .config file through an interactive menu where you can enable or disable 161<p> Menuconfig modifies your .config file through an interactive menu where you can enable or disable
156 busybox features, and get help about each feature. 162 busybox features, and get help about each feature.
157 163
158
159
160<p> 164<p>
161 To build a smaller busybox binary, run "make menuconfig" and disable the 165 To build a smaller busybox binary, run "make menuconfig" and disable the
162 features you don't need. (Or run "make allnoconfig" and then use 166 features you don't need. (Or run "make allnoconfig" and then use
163 menuconfig to add just the features you need. Don't forget to recompile 167 menuconfig to add just the features you need. Don't forget to recompile
164 with "make" once you've finished configuring.) 168 with "make" once you've finished configuring.)
165</p> 169</p>
166<hr/> 170
167<p/> 171<hr />
168<h2><a name="build">How do I build BusyBox with a cross-compiler?</a></h2> 172<h2><a name="build">How do I build BusyBox with a cross-compiler?</a></h2>
173
169<p> 174<p>
170 To build busybox with a cross-compiler, specify CROSS_COMPILE=&lt;prefix&gt;. 175 To build busybox with a cross-compiler, specify CROSS_COMPILE=&lt;prefix&gt;.
171</p> 176</p>
@@ -180,7 +185,10 @@ within each applet. More build coverage testing.</p></li>
180 Alternatively CROSS_COMPILE can be set in the environment. 185 Alternatively CROSS_COMPILE can be set in the environment.
181 Default value for CROSS_COMPILE is not to prefix executables. 186 Default value for CROSS_COMPILE is not to prefix executables.
182</p> 187</p>
188
189<hr />
183<h2><a name="build_system">How do I build a BusyBox-based system?</a></h2> 190<h2><a name="build_system">How do I build a BusyBox-based system?</a></h2>
191
184<p> 192<p>
185 BusyBox is a package that replaces a dozen standard packages, but it is 193 BusyBox is a package that replaces a dozen standard packages, but it is
186 not by itself a complete bootable system. Building an entire Linux 194 not by itself a complete bootable system. Building an entire Linux
@@ -221,8 +229,8 @@ within each applet. More build coverage testing.</p></li>
221</p> 229</p>
222 230
223<hr /> 231<hr />
224<p>
225<h2><a name="kernel">Which Linux kernel versions are supported?</a></h2> 232<h2><a name="kernel">Which Linux kernel versions are supported?</a></h2>
233
226<p> 234<p>
227 Full functionality requires Linux 2.4.x or better. (Earlier versions may 235 Full functionality requires Linux 2.4.x or better. (Earlier versions may
228 still work, but are no longer regularly tested.) A large fraction of the 236 still work, but are no longer regularly tested.) A large fraction of the
@@ -231,9 +239,10 @@ within each applet. More build coverage testing.</p></li>
231 to support, say, FreeBSD or Solaris, or Mac OS X, or even Windows (if you 239 to support, say, FreeBSD or Solaris, or Mac OS X, or even Windows (if you
232 are into that sort of thing). 240 are into that sort of thing).
233</p> 241</p>
242
234<hr /> 243<hr />
235<p>
236<h2><a name="arch">Which architectures does BusyBox run on?</a></h2> 244<h2><a name="arch">Which architectures does BusyBox run on?</a></h2>
245
237<p> 246<p>
238 BusyBox in general will build on any architecture supported by gcc. 247 BusyBox in general will build on any architecture supported by gcc.
239 Kernel module loading for 2.4 Linux kernels is currently 248 Kernel module loading for 2.4 Linux kernels is currently
@@ -243,9 +252,10 @@ within each applet. More build coverage testing.</p></li>
243<p> 252<p>
244 With 2.6.x kernels, module loading support should work on all architectures. 253 With 2.6.x kernels, module loading support should work on all architectures.
245</p> 254</p>
255
246<hr /> 256<hr />
247<p>
248<h2><a name="libc">Which C libraries are supported?</a></h2> 257<h2><a name="libc">Which C libraries are supported?</a></h2>
258
249<p> 259<p>
250 On Linux, BusyBox releases are tested against uClibc (0.9.27 or later) and 260 On Linux, BusyBox releases are tested against uClibc (0.9.27 or later) and
251 glibc (2.2 or later). Both should provide full functionality with busybox, 261 glibc (2.2 or later). Both should provide full functionality with busybox,
@@ -265,9 +275,7 @@ within each applet. More build coverage testing.</p></li>
265</p> 275</p>
266 276
267<hr /> 277<hr />
268<p>
269<h2><a name="commercial">Can I include BusyBox as part of the software on my device?</a></h2> 278<h2><a name="commercial">Can I include BusyBox as part of the software on my device?</a></h2>
270<p>
271 279
272<p> 280<p>
273 Yes. As long as you <a href="http://busybox.net/license.html">fully comply 281 Yes. As long as you <a href="http://busybox.net/license.html">fully comply
@@ -276,29 +284,26 @@ within each applet. More build coverage testing.</p></li>
276</p> 284</p>
277 285
278<hr /> 286<hr />
279<p> 287<h2><a name="external">Where can I find other small utilities since busybox
280<h2><a name="external">where can i find other small utilities since busybox
281 does not include the features i want?</a></h2> 288 does not include the features i want?</a></h2>
289
282<p> 290<p>
283 we maintain such a <a href="tinyutils.html">list</a> on this site! 291 we maintain such a <a href="tinyutils.html">list</a> on this site!
284</p> 292</p>
285 293
286<hr /> 294<hr />
287<p>
288<h2><a name="demanding">I demand that you to add &lt;favorite feature&gt; right now! How come you don't answer all my questions on the mailing list instantly? I demand that you help me with all of my problems <em>Right Now</em>!</a></h2> 295<h2><a name="demanding">I demand that you to add &lt;favorite feature&gt; right now! How come you don't answer all my questions on the mailing list instantly? I demand that you help me with all of my problems <em>Right Now</em>!</a></h2>
289<p>
290 296
297<p>
291 You have not paid us a single cent and yet you still have the product of 298 You have not paid us a single cent and yet you still have the product of
292 many years of our work. We are not your slaves! We work on BusyBox 299 many years of our work. We are not your slaves! We work on BusyBox
293 because we find it useful and interesting. If you go off flaming us, we 300 because we find it useful and interesting. If you go off flaming us, we
294 will ignore you. 301 will ignore you.
295 302
296
297<hr /> 303<hr />
298<p>
299<h2><a name="helpme">I need help with BusyBox! What should I do?</a></h2> 304<h2><a name="helpme">I need help with BusyBox! What should I do?</a></h2>
300<p>
301 305
306<p>
302 If you find that you need help with BusyBox, you can ask for help on the 307 If you find that you need help with BusyBox, you can ask for help on the
303 BusyBox mailing list at busybox@busybox.net.</p> 308 BusyBox mailing list at busybox@busybox.net.</p>
304 309
@@ -326,9 +331,7 @@ within each applet. More build coverage testing.</p></li>
326</p> 331</p>
327 332
328<hr /> 333<hr />
329<p>
330<h2><a name="contracts">I need you to add &lt;favorite feature&gt;! Are the BusyBox developers willing to be paid in order to fix bugs or add in &lt;favorite feature&gt;? Are you willing to provide support contracts?</a></h2> 334<h2><a name="contracts">I need you to add &lt;favorite feature&gt;! Are the BusyBox developers willing to be paid in order to fix bugs or add in &lt;favorite feature&gt;? Are you willing to provide support contracts?</a></h2>
331</p>
332 335
333<p> 336<p>
334 Yes we are. The easy way to sponsor a new feature is to post an offer on 337 Yes we are. The easy way to sponsor a new feature is to post an offer on
@@ -346,14 +349,11 @@ within each applet. More build coverage testing.</p></li>
346</p> 349</p>
347 350
348 351
349 352<hr />
350
351<h1>Troubleshooting</h1> 353<h1>Troubleshooting</h1>
352 354
353<hr /> 355<hr />
354<p></p>
355<h2><a name="bugs">I think I found a bug in BusyBox! What should I do?</a></h2> 356<h2><a name="bugs">I think I found a bug in BusyBox! What should I do?</a></h2>
356<p></p>
357 357
358<p> 358<p>
359 If you simply need help with using or configuring BusyBox, please submit a 359 If you simply need help with using or configuring BusyBox, please submit a
@@ -386,7 +386,6 @@ within each applet. More build coverage testing.</p></li>
386</p> 386</p>
387 387
388<hr /> 388<hr />
389<p></p>
390<h2><a name="backporting">I'm using an ancient version from the dawn of time and something's broken. Can you backport fixes for free?</h2> 389<h2><a name="backporting">I'm using an ancient version from the dawn of time and something's broken. Can you backport fixes for free?</h2>
391 390
392<p>Variants of this one get asked a lot.</p> 391<p>Variants of this one get asked a lot.</p>
@@ -427,8 +426,8 @@ your problem, and you can always ask on the list if any of the developers
427have consulting rates.</p> 426have consulting rates.</p>
428 427
429<hr /> 428<hr />
430<p>
431<h2><a name="init">Busybox init isn't working!</a></h2> 429<h2><a name="init">Busybox init isn't working!</a></h2>
430
432<p> 431<p>
433 Init is the first program that runs, so it might be that no programs are 432 Init is the first program that runs, so it might be that no programs are
434 working on your new system because of a problem with your cross-compiler, 433 working on your new system because of a problem with your cross-compiler,
@@ -461,8 +460,8 @@ int main(int argc, char *argv)
461</p> 460</p>
462 461
463<hr /> 462<hr />
464<p>
465<h2><a name="sed">I can't configure busybox on my system.</a></h2> 463<h2><a name="sed">I can't configure busybox on my system.</a></h2>
464
466<p> 465<p>
467 Configuring Busybox depends on a recent version of sed. Older 466 Configuring Busybox depends on a recent version of sed. Older
468 distributions (Red Hat 7.2, Debian 3.0) may not come with a 467 distributions (Red Hat 7.2, Debian 3.0) may not come with a
@@ -489,10 +488,9 @@ int main(int argc, char *argv)
489<p>Then you can run "make defconfig" or "make menuconfig" normally.</p> 488<p>Then you can run "make defconfig" or "make menuconfig" normally.</p>
490 489
491<hr /> 490<hr />
492<p>
493<h2><a name="job_control">Why do I keep getting "sh: can't access tty; job control turned off" errors? Why doesn't Control-C work within my shell?</a></h2> 491<h2><a name="job_control">Why do I keep getting "sh: can't access tty; job control turned off" errors? Why doesn't Control-C work within my shell?</a></h2>
494<p>
495 492
493<p>
496 Job control will be turned off since your shell can not obtain a controlling 494 Job control will be turned off since your shell can not obtain a controlling
497 terminal. This typically happens when you run your shell on /dev/console. 495 terminal. This typically happens when you run your shell on /dev/console.
498 The kernel will not provide a controlling terminal on the /dev/console 496 The kernel will not provide a controlling terminal on the /dev/console
@@ -504,9 +502,20 @@ int main(int argc, char *argv)
504 run your shell on a real console... 502 run your shell on a real console...
505</p> 503</p>
506 504
505<hr />
506<h1>Misc. questions</h1>
507
508<hr />
509<h2><a name="tz">How do I change the time zone in busybox?</a></h2>
510
511<p>Busybox has nothing to do with the timezone. Please consult your libc
512documentation. (<a href='http://google.com/search?q=uclibc+glibc+timezone'>http://google.com/search?q=uclibc+glibc+timezone</a>).</p>
513
514<hr />
507<h1>Development</h1> 515<h1>Development</h1>
508 516
509<h2><b><a name="goals">What are the goals of busybox?</a></b></h2> 517<hr />
518<h2><a name="goals">What are the goals of busybox?</a></h2>
510 519
511<p>Busybox aims to be the smallest and simplest correct implementation of the 520<p>Busybox aims to be the smallest and simplest correct implementation of the
512standard Linux command line tools. First and foremost, this means the 521standard Linux command line tools. First and foremost, this means the
@@ -515,7 +524,8 @@ and cleanest implementation we can manage, be <a href="#standards">standards
515compliant</a>, minimize run-time memory usage (heap and stack), run fast, and 524compliant</a>, minimize run-time memory usage (heap and stack), run fast, and
516take over the world.</p> 525take over the world.</p>
517 526
518<h2><b><a name="design">What is the design of busybox?</a></b></h2> 527<hr />
528<h2><a name="design">What is the design of busybox?</a></h2>
519 529
520<p>Busybox is like a swiss army knife: one thing with many functions. 530<p>Busybox is like a swiss army knife: one thing with many functions.
521The busybox executable can act like many different programs depending on 531The busybox executable can act like many different programs depending on
@@ -539,7 +549,8 @@ writing.</p>
539 549
540<a name="source"></a> 550<a name="source"></a>
541 551
542<h2><a name="source_applets"><b>The applet directories</b></a></h2> 552<hr />
553<h2><a name="source_applets">The applet directories</a></h2>
543 554
544<p>The directory "applets" contains the busybox startup code (applets.c and 555<p>The directory "applets" contains the busybox startup code (applets.c and
545busybox.c), and several subdirectories containing the code for the individual 556busybox.c), and several subdirectories containing the code for the individual
@@ -579,6 +590,7 @@ html, txt, and man page formats) in the docs directory. See
579<a href="#adding">adding an applet to busybox</a> for more 590<a href="#adding">adding an applet to busybox</a> for more
580information.</p> 591information.</p>
581 592
593<hr />
582<h2><a name="source_libbb"><b>libbb</b></a></h2> 594<h2><a name="source_libbb"><b>libbb</b></a></h2>
583 595
584<p>Most non-setup code shared between busybox applets lives in the libbb 596<p>Most non-setup code shared between busybox applets lives in the libbb
@@ -595,8 +607,8 @@ and/or retry automatically, linked list management functions (llist.c),
595command line argument parsing (getopt32.c), and a whole lot more.</p> 607command line argument parsing (getopt32.c), and a whole lot more.</p>
596 608
597<hr /> 609<hr />
598<p>
599<h2><a name="optimize">I want to make busybox even smaller, how do I go about it?</a></h2> 610<h2><a name="optimize">I want to make busybox even smaller, how do I go about it?</a></h2>
611
600<p> 612<p>
601 To conserve bytes it's good to know where they're being used, and the 613 To conserve bytes it's good to know where they're being used, and the
602 size of the final executable isn't always a reliable indicator of 614 size of the final executable isn't always a reliable indicator of
@@ -647,11 +659,9 @@ command line argument parsing (getopt32.c), and a whole lot more.</p>
647 "scripts/showasm busybox_unstripped symbolname" to see the assembly 659 "scripts/showasm busybox_unstripped symbolname" to see the assembly
648 for a sepecific symbol. 660 for a sepecific symbol.
649</p> 661</p>
650<hr />
651
652 662
653 663<hr />
654<h2><a name="adding"><b>Adding an applet to busybox</b></a></h2> 664<h2><a name="adding">Adding an applet to busybox</a></h2>
655 665
656<p>To add a new applet to busybox, first pick a name for the applet and 666<p>To add a new applet to busybox, first pick a name for the applet and
657a corresponding CONFIG_NAME. Then do this:</p> 667a corresponding CONFIG_NAME. Then do this:</p>
@@ -692,6 +702,7 @@ bugs. Be sure to try both "allyesconfig" and "allnoconfig" (and
692 702
693</ul> 703</ul>
694 704
705<hr />
695<h2><a name="standards">What standards does busybox adhere to?</a></h2> 706<h2><a name="standards">What standards does busybox adhere to?</a></h2>
696 707
697<p>The standard we're paying attention to is the "Shell and Utilities" 708<p>The standard we're paying attention to is the "Shell and Utilities"
@@ -721,6 +732,7 @@ applet is otherwise finished. When polishing and testing a busybox applet,
721we ensure we have at least the option of full standards compliance, or else 732we ensure we have at least the option of full standards compliance, or else
722document where we (intentionally) fall short.</p> 733document where we (intentionally) fall short.</p>
723 734
735<hr />
724<h2><a name="portability">Portability.</a></h2> 736<h2><a name="portability">Portability.</a></h2>
725 737
726<p>Busybox is a Linux project, but that doesn't mean we don't have to worry 738<p>Busybox is a Linux project, but that doesn't mean we don't have to worry
@@ -797,11 +809,13 @@ support that can be cleanly separated into a separate conditionally compiled
797file is at least worth a look. Special-case code in the body of an applet is 809file is at least worth a look. Special-case code in the body of an applet is
798something we're trying to avoid.</p> 810something we're trying to avoid.</p>
799 811
812<hr />
800<h2><a name="tips" />Programming tips and tricks.</a></h2> 813<h2><a name="tips" />Programming tips and tricks.</a></h2>
801 814
802<p>Various things busybox uses that aren't particularly well documented 815<p>Various things busybox uses that aren't particularly well documented
803elsewhere.</p> 816elsewhere.</p>
804 817
818<hr />
805<h2><a name="tips_encrypted_passwords">Encrypted Passwords</a></h2> 819<h2><a name="tips_encrypted_passwords">Encrypted Passwords</a></h2>
806 820
807<p>Password fields in /etc/passwd and /etc/shadow are in a special format. 821<p>Password fields in /etc/passwd and /etc/shadow are in a special format.
@@ -853,6 +867,7 @@ password, generate a random 8 character salt string, put it in the right
853format with sprintf(buffer, "$%c$%s", type, salt), and feed buffer as the 867format with sprintf(buffer, "$%c$%s", type, salt), and feed buffer as the
854second argument to pw_encrypt(text,buffer).</p> 868second argument to pw_encrypt(text,buffer).</p>
855 869
870<hr />
856<h2><a name="tips_vfork">Fork and vfork</a></h2> 871<h2><a name="tips_vfork">Fork and vfork</a></h2>
857 872
858<p>On systems that haven't got a Memory Management Unit, fork() is unreasonably 873<p>On systems that haven't got a Memory Management Unit, fork() is unreasonably
@@ -931,6 +946,7 @@ each other while traversing the free memory lists). The thing about vfork is
931that it's a big red flag warning "there be dragons here" rather than 946that it's a big red flag warning "there be dragons here" rather than
932something subtle and thus even more dangerous.)</p> 947something subtle and thus even more dangerous.)</p>
933 948
949<hr />
934<h2><a name="tips_sort_read">Short reads and writes</a></h2> 950<h2><a name="tips_sort_read">Short reads and writes</a></h2>
935 951
936<p>Busybox has special functions, bb_full_read() and bb_full_write(), to 952<p>Busybox has special functions, bb_full_read() and bb_full_write(), to
@@ -964,6 +980,7 @@ data comes in that can be merged into the same packet. (In case you were
964wondering why action games that use TCP/IP set TCP_NODELAY to lower the latency 980wondering why action games that use TCP/IP set TCP_NODELAY to lower the latency
965on their their sockets, now you know.)</p> 981on their their sockets, now you know.)</p>
966 982
983<hr />
967<h2><a name="tips_memory">Memory used by relocatable code, PIC, and static linking.</a></h2> 984<h2><a name="tips_memory">Memory used by relocatable code, PIC, and static linking.</a></h2>
968 985
969<p>The downside of standard dynamic linking is that it results in self-modifying 986<p>The downside of standard dynamic linking is that it results in self-modifying
@@ -1028,6 +1045,7 @@ above factors seem to mostly account for it (but some were difficult
1028to measure).</p> 1045to measure).</p>
1029</blockquote> 1046</blockquote>
1030 1047
1048<hr />
1031<h2><a name="tips_kernel_headers"></a>Including kernel headers</h2> 1049<h2><a name="tips_kernel_headers"></a>Including kernel headers</h2>
1032 1050
1033<p>The "linux" or "asm" directories of /usr/include contain Linux kernel 1051<p>The "linux" or "asm" directories of /usr/include contain Linux kernel
@@ -1065,6 +1083,7 @@ unavoidable doesn't me we should include them when there's a better
1065way to do it. However, block copying information out of the kernel headers 1083way to do it. However, block copying information out of the kernel headers
1066is not a better way.</p> 1084is not a better way.</p>
1067 1085
1086<hr />
1068<h2><a name="who">Who are the BusyBox developers?</a></h2> 1087<h2><a name="who">Who are the BusyBox developers?</a></h2>
1069 1088
1070<p>The following login accounts currently exist on busybox.net. (I.E. these 1089<p>The following login accounts currently exist on busybox.net. (I.E. these