Changeset 1770 in MondoRescue for branches/stable/mindi-busybox/docs/busybox.net/FAQ.html
- Timestamp:
- Nov 6, 2007, 11:01:53 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/stable/mindi-busybox/docs/busybox.net/FAQ.html
r821 r1770 11 11 <li><a href="#getting_started">How can I get started using BusyBox?</a></li> 12 12 <li><a href="#configure">How do I configure busybox?</a></li> 13 <li><a href="#build">How do I build BusyBox with a cross-compiler?</a></li> 13 14 <li><a href="#build_system">How do I build a BusyBox-based system?</a></li> 14 15 <li><a href="#kernel">Which Linux kernel versions are supported?</a></li> … … 25 26 <ol> 26 27 <li><a href="#bugs">I think I found a bug in BusyBox! What should I do?!</a></li> 28 <li><a href="#backporting">I'm using an ancient version from the dawn of time and something's broken. Can you backport fixes for free?</a></li> 27 29 <li><a href="#init">Busybox init isn't working!</a></li> 28 30 <li><a href="#sed">I can't configure busybox on my system.</a></li> 29 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> 33 34 <h2>Misc. questions</h2> 35 <ol> 36 <li><a href="#tz">How do I change the time zone in busybox?</a></li> 30 37 </ol> 31 38 … … 51 58 <li><a href="#tips_kernel_headers">Including Linux kernel headers.</a></li> 52 59 </ul> 53 <li><a href="#who">Who are the BusyBox developers?</a></li> 54 </ul> 55 56 60 <li><a href="#who">Who are the BusyBox developers?</a></li> 61 </ul> 57 62 </ol> 58 63 64 65 <hr /> 59 66 <h1>General questions</h1> 60 67 61 68 <hr /> 62 <p>63 69 <h2><a name="getting_started">How can I get started using BusyBox?</a></h2> 70 64 71 <p> If you just want to try out busybox without installing it, download the 65 72 tarball, extract it, run "make defconfig", and then run "make". … … 82 89 </p> 83 90 <p> 84 BusyBox also has a feature called the "standalone shell", where the busybox 91 BusyBox also has a feature called the 92 <a name="standalone_shell">"standalone shell"</a>, where the busybox 85 93 shell runs any built-in applets before checking the command path. This 86 94 feature is also enabled by "make allyesconfig", and to try it out run … … 88 96 and run busybox as your command shell, so the only commands it can find 89 97 (without an explicit path such as /bin/ls) are the built-in busybox ones. 90 This is another good way to see what's built into busybox. (Note that the 91 standalone shell is dependent on the existence of /proc/self/exe, so before 92 using it in a chroot environment you must mount /proc.) 93 </p> 94 95 <hr /> 96 <p> 98 This is another good way to see what's built into busybox. 99 Note that the standalone shell requires CONFIG_BUSYBOX_EXEC_PATH 100 to be set appropriately, depending on whether or not /proc/self/exe is 101 available or not. If you do not have /proc, then point that config option 102 to the location of your busybox binary, usually /bin/busybox. 103 (So if you set it to /proc/self/exe, and happen to be able to chroot into 104 your rootfs, you must mount /proc beforehand.) 105 </p> 106 <p> 107 A typical indication that you set CONFIG_BUSYBOX_EXEC_PATH to proc but 108 forgot to mount proc is: 109 <pre> 110 $ /bin/echo $PATH 111 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 112 $ echo $PATH 113 /bin/sh: echo: not found 114 </pre> 115 116 <hr /> 97 117 <h2><a name="configure">How do I configure busybox?</a></h2> 118 98 119 <p> Busybox is configured similarly to the linux kernel. Create a default 99 120 configuration and then run "make menuconfig" to modify it. The end … … 141 162 busybox features, and get help about each feature. 142 163 143 144 145 164 <p> 146 165 To build a smaller busybox binary, run "make menuconfig" and disable the … … 149 168 with "make" once you've finished configuring.) 150 169 </p> 151 <hr/> 152 <p/> 170 171 <hr /> 172 <h2><a name="build">How do I build BusyBox with a cross-compiler?</a></h2> 173 174 <p> 175 To build busybox with a cross-compiler, specify CROSS_COMPILE=<prefix>. 176 </p> 177 <p> 178 CROSS_COMPILE specifies the prefix used for all executables used 179 during compilation. Only gcc and related binutils executables 180 are prefixed with $(CROSS_COMPILE) in the makefiles. 181 CROSS_COMPILE can be set on the command line: 182 <pre> 183 make CROSS_COMPILE=arm-linux-uclibcgnueabi- 184 </pre> 185 Alternatively CROSS_COMPILE can be set in the environment. 186 Default value for CROSS_COMPILE is not to prefix executables. 187 </p> 188 189 <hr /> 153 190 <h2><a name="build_system">How do I build a BusyBox-based system?</a></h2> 191 154 192 <p> 155 193 BusyBox is a package that replaces a dozen standard packages, but it is … … 192 230 193 231 <hr /> 194 <p>195 232 <h2><a name="kernel">Which Linux kernel versions are supported?</a></h2> 233 196 234 <p> 197 235 Full functionality requires Linux 2.4.x or better. (Earlier versions may … … 202 240 are into that sort of thing). 203 241 </p> 204 <hr /> 205 < p>242 243 <hr /> 206 244 <h2><a name="arch">Which architectures does BusyBox run on?</a></h2> 245 207 246 <p> 208 247 BusyBox in general will build on any architecture supported by gcc. … … 214 253 With 2.6.x kernels, module loading support should work on all architectures. 215 254 </p> 216 <hr /> 217 < p>255 256 <hr /> 218 257 <h2><a name="libc">Which C libraries are supported?</a></h2> 258 219 259 <p> 220 260 On Linux, BusyBox releases are tested against uClibc (0.9.27 or later) and … … 236 276 237 277 <hr /> 238 <p>239 278 <h2><a name="commercial">Can I include BusyBox as part of the software on my device?</a></h2> 240 <p>241 279 242 280 <p> … … 247 285 248 286 <hr /> 249 <p> 250 <h2><a name="external">where can i find other small utilities since busybox 287 <h2><a name="external">Where can I find other small utilities since busybox 251 288 does not include the features i want?</a></h2> 289 252 290 <p> 253 291 we maintain such a <a href="tinyutils.html">list</a> on this site! … … 255 293 256 294 <hr /> 257 <p>258 295 <h2><a name="demanding">I demand that you to add <favorite feature> 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> 259 <p> 260 296 297 <p> 261 298 You have not paid us a single cent and yet you still have the product of 262 299 many years of our work. We are not your slaves! We work on BusyBox … … 264 301 will ignore you. 265 302 266 267 <hr /> 268 <p> 303 <hr /> 269 304 <h2><a name="helpme">I need help with BusyBox! What should I do?</a></h2> 270 <p> 271 305 306 <p> 272 307 If you find that you need help with BusyBox, you can ask for help on the 273 308 BusyBox mailing list at busybox@busybox.net.</p> … … 297 332 298 333 <hr /> 299 <p>300 334 <h2><a name="contracts">I need you to add <favorite feature>! Are the BusyBox developers willing to be paid in order to fix bugs or add in <favorite feature>? Are you willing to provide support contracts?</a></h2> 301 </p>302 335 303 336 <p> … … 317 350 318 351 319 320 352 <hr /> 321 353 <h1>Troubleshooting</h1> 322 354 323 355 <hr /> 324 <p></p>325 356 <h2><a name="bugs">I think I found a bug in BusyBox! What should I do?</a></h2> 326 <p></p>327 357 328 358 <p> … … 337 367 338 368 <p> 339 The developers of BusyBox are busy people, and have only so much they can 340 keep in their brains at a time. As a result, bug reports and new feature 341 patches sometimes get lost when posted to the mailing list. To prevent 342 your bug report from getting lost, if you find a bug in BusyBox that isn't 343 immediately addressed, please use the <a 344 href="http://bugs.busybox.net/">BusyBox Bug and Patch Tracking System</a> 345 to submit a detailed explanation and we'll get to it as soon as we can. 346 </p> 347 348 <hr /> 349 <p> 369 Bug reports and new feature patches sometimes get lost when posted to the 370 mailing list, because the developers of BusyBox are busy people and have 371 only so much they can keep in their brains at a time. You can post a 372 polite reminder after 2-3 days without offending anybody. If that doesn't 373 result in a solution, please use the 374 <a href="http://bugs.busybox.net/">BusyBox Bug 375 and Patch Tracking System</a> to submit a detailed explanation and we'll 376 get to it as soon as we can. 377 </p> 378 379 <p> 380 Note that bugs entered into the bug system without being mentioned on the 381 mailing list first may languish there for months before anyone even notices 382 them. We generally go through the bug system when preparing for new 383 development releases, to see what fell through the cracks while we were 384 off writing new features. (It's a fast/unreliable vs slow/reliable thing. 385 Saves retransits, but the latency sucks.) 386 </p> 387 388 <hr /> 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> 390 391 <p>Variants of this one get asked a lot.</p> 392 393 <p>The purpose of the BusyBox mailing list is to develop and improve BusyBox, 394 and we're happy to respond to our users' needs. But if you're coming to the 395 list for free tech support we're going to ask you to upgrade to a current 396 version before we try to diagnose your problem.</p> 397 398 <p>If you're building BusyBox 0.50 with uClibc 0.9.19 and gcc 0.9.26 there's a 399 fairly large chance that whatever problem you're seeing has already been fixed. 400 To get that fix, all you have to do is upgrade to a newer version. If you 401 don't at least _try_ that, you're wasting our time.</p> 402 403 <p>The volunteers are happy to fix any bugs you point out in the current 404 versions because doing so helps everybody and makes the project better. We 405 want to make the current version work for you. But diagnosing, debugging, and 406 backporting fixes to old versions isn't something we do for free, because it 407 doesn't help anybody but you. The cost of volunteer tech support is using a 408 reasonably current version of the project.</p> 409 410 <p>If you don't want to upgrade, you have the complete source code and thus 411 the ability to fix it yourself, or hire a consultant to do it for you. If you 412 got your version from a vendor who still supports the older version, they can 413 help you. But there are limits as to what the volunteers will feel obliged to 414 do for you.</p> 415 416 <p>As a rule of thumb, volunteers will generally answer polite questions about 417 a given version for about three years after its release before it's so old 418 we don't remember the answer off the top of our head. And if you want us to 419 put any _effort_ into tracking it down, we want you to put in a little effort 420 of your own by confirming it's still a problem with the current version. It's 421 also hard for us to fix a problem of yours if we can't reproduce it because 422 we don't have any systems running an environment that old.</p> 423 424 <p>A consultant will happily set up a special environment just to reproduce 425 your problem, and you can always ask on the list if any of the developers 426 have consulting rates.</p> 427 428 <hr /> 350 429 <h2><a name="init">Busybox init isn't working!</a></h2> 430 351 431 <p> 352 432 Init is the first program that runs, so it might be that no programs are … … 381 461 382 462 <hr /> 383 <p>384 463 <h2><a name="sed">I can't configure busybox on my system.</a></h2> 464 385 465 <p> 386 466 Configuring Busybox depends on a recent version of sed. Older … … 409 489 410 490 <hr /> 411 <p>412 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> 413 <p> 414 492 493 <p> 415 494 Job control will be turned off since your shell can not obtain a controlling 416 495 terminal. This typically happens when you run your shell on /dev/console. … … 424 503 </p> 425 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 512 documentation. (<a href='http://google.com/search?q=uclibc+glibc+timezone'>http://google.com/search?q=uclibc+glibc+timezone</a>).</p> 513 514 <hr /> 426 515 <h1>Development</h1> 427 516 428 <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> 429 519 430 520 <p>Busybox aims to be the smallest and simplest correct implementation of the … … 435 525 take over the world.</p> 436 526 437 <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> 438 529 439 530 <p>Busybox is like a swiss army knife: one thing with many functions. … … 459 550 <a name="source"></a> 460 551 461 <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> 462 554 463 555 <p>The directory "applets" contains the busybox startup code (applets.c and … … 466 558 467 559 <p>Busybox execution starts with the main() function in applets/busybox.c, 468 which sets the global variable bb_applet_name to argv[0] and calls469 run_applet_ by_name() in applets/applets.c. That uses the applets[] array560 which sets the global variable applet_name to argv[0] and calls 561 run_applet_and_exit() in applets/applets.c. That uses the applets[] array 470 562 (defined in include/busybox.h and filled out in include/applets.h) to 471 563 transfer control to the appropriate APPLET_main() function (such as … … 499 591 information.</p> 500 592 593 <hr /> 501 594 <h2><a name="source_libbb"><b>libbb</b></a></h2> 502 595 … … 512 605 of open(), close(), read(), and write() that test for their own failures 513 606 and/or retry automatically, linked list management functions (llist.c), 514 command line argument parsing (getopt_ulflags.c), and a whole lot more.</p> 515 516 <hr /> 517 <p> 607 command line argument parsing (getopt32.c), and a whole lot more.</p> 608 609 <hr /> 518 610 <h2><a name="optimize">I want to make busybox even smaller, how do I go about it?</a></h2> 611 519 612 <p> 520 613 To conserve bytes it's good to know where they're being used, and the … … 567 660 for a sepecific symbol. 568 661 </p> 569 <hr /> 570 571 572 573 <h2><a name="adding"><b>Adding an applet to busybox</b></a></h2> 662 663 <hr /> 664 <h2><a name="adding">Adding an applet to busybox</a></h2> 574 665 575 666 <p>To add a new applet to busybox, first pick a name for the applet and … … 612 703 </ul> 613 704 705 <hr /> 614 706 <h2><a name="standards">What standards does busybox adhere to?</a></h2> 615 707 … … 641 733 document where we (intentionally) fall short.</p> 642 734 735 <hr /> 643 736 <h2><a name="portability">Portability.</a></h2> 644 737 … … 717 810 something we're trying to avoid.</p> 718 811 812 <hr /> 719 813 <h2><a name="tips" />Programming tips and tricks.</a></h2> 720 814 … … 722 816 elsewhere.</p> 723 817 818 <hr /> 724 819 <h2><a name="tips_encrypted_passwords">Encrypted Passwords</a></h2> 725 820 … … 773 868 second argument to pw_encrypt(text,buffer).</p> 774 869 870 <hr /> 775 871 <h2><a name="tips_vfork">Fork and vfork</a></h2> 776 872 … … 851 947 something subtle and thus even more dangerous.)</p> 852 948 949 <hr /> 853 950 <h2><a name="tips_sort_read">Short reads and writes</a></h2> 854 951 … … 877 974 <p>So will data always be read from the far end of a pipe at the 878 975 same chunk sizes it was written in? Nope. Don't rely on that. For one 879 counterexample, see <a href="http://www.faqs.org/rfcs/rfc896.html">rfc 896 976 counterexample, see <a href="http://www.faqs.org/rfcs/rfc896.html">rfc 896 880 977 for Nagle's algorithm</a>, which waits a fraction of a second or so before 881 978 sending out small amounts of data through a TCP/IP connection in case more … … 884 981 on their their sockets, now you know.)</p> 885 982 983 <hr /> 886 984 <h2><a name="tips_memory">Memory used by relocatable code, PIC, and static linking.</a></h2> 887 985 … … 948 1046 </blockquote> 949 1047 1048 <hr /> 950 1049 <h2><a name="tips_kernel_headers"></a>Including kernel headers</h2> 951 1050 … … 985 1084 is not a better way.</p> 986 1085 1086 <hr /> 987 1087 <h2><a name="who">Who are the BusyBox developers?</a></h2> 988 1088 … … 993 1093 <pre> 994 1094 aldot :Bernhard Fischer 995 andersen :Erik Andersen <- uClibc and BuildRoot maintainer.1095 andersen :Erik Andersen - uClibc and BuildRoot maintainer. 996 1096 bug1 :Glenn McGrath 997 1097 davidm :David McCullough 998 gkajmowi :Garrett Kajmowicz <- uClibc++ maintainer1098 gkajmowi :Garrett Kajmowicz - uClibc++ maintainer 999 1099 jbglaw :Jan-Benedict Glaw 1000 1100 jocke :Joakim Tjernlund 1001 landley :Rob Landley <- BusyBox maintainer1101 landley :Rob Landley - BusyBox maintainer 1002 1102 lethal :Paul Mundt 1003 1103 mjn3 :Manuel Novoa III … … 1017 1117 1018 1118 <p>The following accounts used to exist on busybox.net, but don't anymore so 1019 I can't ask /etc/passwd for their names. (If anybody would like to make1020 a stab at it...)</p>1119 I can't ask /etc/passwd for their names. Rob Wentworth <robwen@gmail.com> 1120 asked Google and recovered the names:</p> 1021 1121 1022 1122 <pre> 1023 aaronl 1024 beppu 1025 dwhedon 1026 erik : Also Erik Andersen?1027 gfeldman 1028 jimg 1029 kraai 1030 markw 1031 miles 1032 proski 1033 rjune 1034 tausq 1035 vodz 1123 aaronl :Aaron Lehmann 1124 beppu :John Beppu 1125 dwhedon :David Whedon 1126 erik :Erik Andersen 1127 gfeldman :Gennady Feldman 1128 jimg :Jim Gleason 1129 kraai :Matt Kraai 1130 markw :Mark Whitley 1131 miles :Miles Bader 1132 proski :Pavel Roskin 1133 rjune :Richard June 1134 tausq :Randolph Chung 1135 vodz :Vladimir N. Oleynik 1036 1136 </pre> 1037 1137
Note:
See TracChangeset
for help on using the changeset viewer.