svn commit: trunk/busybox/docs/

landley at landley at
Fri Sep 23 16:52:11 UTC 2005

Author: landley
Date: 2005-09-23 09:52:09 -0700 (Fri, 23 Sep 2005)
New Revision: 11598

We've gotten enough questions that are related to building systems rather
than anything about busybox that I'm deeming it a FAQ, and answering it.

I gave a quick swipe to a couple of other slightly stale questions along
the way.  The busybox 1.01 README has much more detailed versions of these
answers, that should probably be propogated to the 1.1 line and perhaps bits
of it transplanted to the FAQ?  (Or just have the README visible on the
web page someplace?)


Modified: trunk/busybox/docs/
--- trunk/busybox/docs/	2005-09-23 15:56:39 UTC (rev 11597)
+++ trunk/busybox/docs/	2005-09-23 16:52:09 UTC (rev 11598)
@@ -8,6 +8,8 @@
 have additions to this FAQ document, we would love to add them,
+<li><a href="#getting_started">How can I get started using BusyBox?</a>
+<li><a href="#build_system">How do I build a BusyBox-based system?</a>
 <li><a href="#kernel">Which Linux kernel versions are supported?</a>
 <li><a href="#arch">Which architectures does BusyBox run on?</a>
 <li><a href="#libc">Which C libraries are supported?</a>
@@ -15,7 +17,6 @@
 <li><a href="#bugs">I think I found a bug in BusyBox!  What should I do?!</a>
 <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><a href="#getting_started">How can I get started using BusyBox?</a>
 <li><a href="#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>
@@ -31,46 +32,132 @@
+<hr />
+<h2><a name="getting_started">How can I get started using BusyBox?</a></h2>
+<p> If you just want to try out busybox without installing it, download the
+    tarball, extract it, run "make allyesconfig", and then run "make".
+    This will create a busybox binary with all features enabled.  To try
+    out a busybox applet, type "./busybox [appletname] [options]", for
+    example "./busybox ls -l" or "./busybox cat LICENSE".  Type "./busybox"
+    to see a command list, and "busybox appletname --help" to see a brief
+    usage message for a given applet.
+    BusyBox uses the name it was invoked under to determine which applet is
+    being invoked.  (Try "mv busybox ls" and then "./ls -l".)  Installing
+    busybox consists of creating symlinks (or hardlinks) to the busybox
+    binary for each applet in busybox, and making sure these symlinks are in
+    the shell's command $PATH.  ("make install" creates these symlinks, and
+    "make install-hardlinks" creates hardlinks instead.)  The special applet
+    name "busybox" (or with any optional suffix, such as "busybox-static")
+    uses the first argument to determine which applet to run, as shown above.
+    BusyBox also has a feature called the "standalone shell", where the busybox
+    shell runs any built-in applets before checking the command path.  This
+    feature is also enabled by "make allyesconfig", and to try it out run
+    the command line "PATH= ./busybox ash".  This will blank your command path
+    and run busybox as your command shell, so the only commands it can find
+    (without an explicit path such as /bin/ls) are the built-in busybox ones.
+    This is another good way to see what's built into busybox.  (Note that the
+    standalone shell is dependent on the existence of /proc/self/exe, so before
+    using it in a chroot environment you must mount /proc.)
+    To build a smaller busybox binary, run "make menuconfig" and disable the
+    features you don't need.  (Or run "make allnoconfig" and then use
+    menuconfig to add just the features you need.  Don't forget to recompile
+    with "make" once you've finished configuring.)
+<h2><a name="build_system">How do I build a BusyBox-based system?</a></h2>
+    BusyBox is a package that replaces a dozen standard packages, but it is
+    not by itself a complete bootable system.  Building an entire Linux
+    distribution from source is a bit beyond the scope of this FAQ, but it
+    understandably keeps cropping up on the mailing list, so here are some
+    pointers.
+    Start by learning how to strip a working system down to the bare essentials
+    needed to run one or two commands, so you know what it is you actually
+    need.  An excellent practical place to do
+    this is the <a href="">Linux
+    BootDisk Howto</a>, or for a more theoretical approach try
+    <a href="">From
+    PowerUp to Bash Prompt</a>.
+    To learn how to build a working Linux system entirely from source code,
+    the place to go is the <a href="">Linux
+    From Scratch</a> project.  They have an entire book of step-by-step
+    instructions you can
+    <a href="">read online</a>
+    or
+    <a href="">download</a>.
+    Be sure to check out the other sections of their main page, including
+    Beyond Linux From Scratch, Hardened Linux From Scratch, their Hints
+    directory, and their LiveCD project.  (They also have mailing lists which
+    are better sources of answers to Linux-system building questions than
+    the busybox list.)
+    If you want an automated yet customizable system builder which produces
+    a BusyBox and uClibc based system, try
+    <a href="">buildroot</a>, which is
+    another project by the maintainer of the uClibc and BusyBox projects
+    (Erik Andersen).  Download the tarball, extract it, unset CC, make.
+    For more instructions, see the website.
 <hr />
 <h2><a name="kernel">Which Linux kernel versions are supported?</a></h2>
-    Full functionality requires Linux 2.2.x or better.  A large fraction of the
+    Full functionality requires Linux 2.4.x or better.  (Earlier versions may
+    still work, but are no longer regularly tested.)  A large fraction of the
     code should run on just about anything.  While the current code is fairly
     Linux specific, it should be fairly easy to port the majority of the code
     to support, say, FreeBSD or Solaris, or Mac OS X, or even Windows (if you
     are into that sort of thing).
 <hr />
 <h2><a name="arch">Which architectures does BusyBox run on?</a></h2>
     BusyBox in general will build on any architecture supported by gcc.
-    Kernel module loading for 2.2 and 2.4 Linux kernels is currently
+    Kernel module loading for 2.4 Linux kernels is currently
     limited to ARM, CRIS, H8/300, x86, ia64, x86_64, m68k, MIPS, PowerPC,
     S390, SH3/4/5, Sparc, v850e, and x86_64 for 2.4.x kernels.
     With 2.6.x kernels, module loading support should work on all architectures.
 <hr />
 <h2><a name="libc">Which C libraries are supported?</a></h2>
-    uClibc and glibc are supported.  People have been looking at newlib and
-    dietlibc, but they are currently considered unsupported, untested, or
-    worse.  Linux-libc5 is no longer supported.  If you require a small C
-    library, you should probably use uClibc.
+    On Linux, BusyBox releases are tested against uClibc (0.9.27 or later) and
+    glibc (2.2 or later).  Both should provide full functionality with busybox,
+    and if you find a bug we want to hear about it.
+    Linux-libc5 is no longer maintained (and has no known advantages over
+    uClibc), dietlibc is known to have numerous unfixed bugs, and klibc is
+    missing too many features to build BusyBox.  If you require a small C
+    library for Linux, the busybox developers recommend uClibc.
+    Some BusyBox applets have been built and run under a combination
+    of newlib and libgloss (see
+    <a href="">this thread</a>).
+    This is still experimental, but may be supported in a future release.
 <hr />
 <h2><a name="commercial">Can I include BusyBox as part of the software on my device?</a></h2>
@@ -135,27 +222,6 @@
 <hr />
-<h2><a name="getting_started">How can I get started using BusyBox?</a></h2>
-    An easy method to build your own basic BusyBox based system, is to
-    follow these simple steps:
-    <ul>
-	<li> Point your web browser <a href="">here</a>
-	<li> Download a copy of buildroot
-	<li> Unpack the tarball on your Linux system somewhere
-	<li> run 'make' and configure things to taste.
-	<li> run 'unset CC'.   Some Linux systems (i.e. Gentoo) set 'CC'
-	    in the system environment which messes up cross compiles.
-	<li> run 'make'
-	<li> go have lunch, drink a pop, call a friend, play a video game, etc
-		till it finishes downloading software and compiling things.
-	<li> You should now have a shiny new BusyBox based system.
-    </ul>
-<hr />
 <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>

More information about the busybox-cvs mailing list