From 153cd695e4fa9b53bd12844468c6f97784d9696e Mon Sep 17 00:00:00 2001
From: Denis Vlasenko
If you just want to try out busybox without installing it, download the
tarball, extract it, run "make defconfig", and then run "make".
Busybox is configured similarly to the linux kernel. Create a default
configuration and then run "make menuconfig" to modify it. The end
result is a .config file that tells the busybox build process what features
@@ -155,17 +161,16 @@ within each applet. More build coverage testing. Menuconfig modifies your .config file through an interactive menu where you can enable or disable
busybox features, and get help about each feature.
-
-
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.)
To build busybox with a cross-compiler, specify CROSS_COMPILE=<prefix>.
Misc. questions
+
+
Programming questions
+
+
General questions
-How can I get started using BusyBox?
+
-How do I configure busybox?
+
-
+
+
How do I build BusyBox with a cross-compiler?
+
BusyBox is a package that replaces a dozen standard packages, but it is not by itself a complete bootable system. Building an entire Linux @@ -221,8 +229,8 @@ within each applet. More build coverage testing.
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 @@ -231,9 +239,10 @@ within each applet. More build coverage testing.
to support, say, FreeBSD or Solaris, or Mac OS X, or even Windows (if you are into that sort of thing). +
BusyBox in general will build on any architecture supported by gcc. Kernel module loading for 2.4 Linux kernels is currently @@ -243,9 +252,10 @@ within each applet. More build coverage testing.
With 2.6.x kernels, module loading support should work on all architectures.
+
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, @@ -265,9 +275,7 @@ within each applet. More build coverage testing.
Yes. As long as you fully comply @@ -276,29 +284,26 @@ within each applet. More build coverage testing.
-
we maintain such a list on this site!
+
You have not paid us a single cent and yet you still have the product of many years of our work. We are not your slaves! We work on BusyBox because we find it useful and interesting. If you go off flaming us, we will ignore you. -
+
If you find that you need help with BusyBox, you can ask for help on the BusyBox mailing list at busybox@busybox.net.
@@ -326,9 +331,7 @@ within each applet. More build coverage testing.
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.
- - +If you simply need help with using or configuring BusyBox, please submit a @@ -386,7 +386,6 @@ within each applet. More build coverage testing.
Variants of this one get asked a lot.
@@ -427,8 +426,8 @@ your problem, and you can always ask on the list if any of the developers have consulting rates.
Init is the first program that runs, so it might be that no programs are working on your new system because of a problem with your cross-compiler, @@ -461,8 +460,8 @@ int main(int argc, char *argv)
Configuring Busybox depends on a recent version of sed. Older distributions (Red Hat 7.2, Debian 3.0) may not come with a @@ -489,10 +488,9 @@ int main(int argc, char *argv)
Then you can run "make defconfig" or "make menuconfig" normally.
+
Job control will be turned off since your shell can not obtain a controlling terminal. This typically happens when you run your shell on /dev/console. The kernel will not provide a controlling terminal on the /dev/console @@ -504,9 +502,20 @@ int main(int argc, char *argv) run your shell on a real console...
+Busybox has nothing to do with the timezone. Please consult your libc +documentation. (http://google.com/search?q=uclibc+glibc+timezone).
+ +Busybox aims to be the smallest and simplest correct implementation of the standard Linux command line tools. First and foremost, this means the @@ -515,7 +524,8 @@ and cleanest implementation we can manage, be standards compliant, minimize run-time memory usage (heap and stack), run fast, and take over the world.
-Busybox is like a swiss army knife: one thing with many functions. The busybox executable can act like many different programs depending on @@ -539,7 +549,8 @@ writing.
-The directory "applets" contains the busybox startup code (applets.c and busybox.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 adding an applet to busybox for more information.
+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), command line argument parsing (getopt32.c), and a whole lot more.
To conserve bytes it's good to know where they're being used, and the 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.
"scripts/showasm busybox_unstripped symbolname" to see the assembly for a sepecific symbol. +To add a new applet to busybox, first pick a name for the applet and a corresponding CONFIG_NAME. Then do this:
@@ -692,6 +702,7 @@ bugs. Be sure to try both "allyesconfig" and "allnoconfig" (and +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, we ensure we have at least the option of full standards compliance, or else document where we (intentionally) fall short.
+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 file is at least worth a look. Special-case code in the body of an applet is something we're trying to avoid.
+Various things busybox uses that aren't particularly well documented elsewhere.
+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 format with sprintf(buffer, "$%c$%s", type, salt), and feed buffer as the second argument to pw_encrypt(text,buffer).
+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 that it's a big red flag warning "there be dragons here" rather than something subtle and thus even more dangerous.)
+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 wondering why action games that use TCP/IP set TCP_NODELAY to lower the latency on their their sockets, now you know.)
+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 to measure).
+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 way to do it. However, block copying information out of the kernel headers is not a better way.
+The following login accounts currently exist on busybox.net. (I.E. these