summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2011-03-08 10:23:53 (GMT)
committer Denys Vlasenko <vda.linux@googlemail.com>2011-03-08 10:23:53 (GMT)
commit01f3e7839e3d8c43c2c42229f325e63237971d9c (patch)
treea79ee2db0b6ce7a94939bbe1a2dacf954cab7f5e
parentf21b8252036901b7ef2188c3d341141181f8f12d (diff)
downloadbusybox-website-01f3e7839e3d8c43c2c42229f325e63237971d9c.tar.gz
busybox-website-01f3e7839e3d8c43c2c42229f325e63237971d9c.tar.bz2
FAQ.html: minor tweaks
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--FAQ.html74
1 files changed, 41 insertions, 33 deletions
diff --git a/FAQ.html b/FAQ.html
index 22361f8..19a65bd 100644
--- a/FAQ.html
+++ b/FAQ.html
@@ -29,7 +29,7 @@ have additions to this FAQ document, we would love to add them,
<li><a href="#bugs">I think I found a bug in Busybox! What should I do?!</a></li>
<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>
<li><a href="#init">Busybox init isn't working!</a></li>
-<li><a href="#sed">I can't configure Busybox on my system.</a></li>
+<li><a href="#sed">I can't configure Busybox on my system</a></li>
<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>
<li><a href="#touch_config">sed "/CONFIG_FOO/s/.*/CONFIG_FOO=y/" -i .config; make; does not enable applet foo</a></li>
<li><a href="#symlink_danger">I installed a package on my Busybox system and now nothing works!</a></li>
@@ -53,14 +53,14 @@ have additions to this FAQ document, we would love to add them,
<li><a href="#optimize">I want to make Busybox even smaller, how do I go about it?</a></li>
<li><a href="#adding">Adding an applet to Busybox</a></li>
<li><a href="#standards">What standards does Busybox adhere to?</a></li>
- <li><a href="#portability">Portability.</a></li>
- <li><a href="#tips">Tips and tricks.</a>
+ <li><a href="#portability">Portability</a></li>
+ <li><a href="#tips">Tips and tricks</a>
<ul>
<li><a href="#tips_encrypted_passwords">Encrypted Passwords</a></li>
<li><a href="#tips_vfork">Fork and vfork</a></li>
<li><a href="#tips_short_read">Short reads and writes</a></li>
- <li><a href="#tips_memory">Memory used by relocatable code, PIC, and static linking.</a></li>
- <li><a href="#tips_kernel_headers">Including Linux kernel headers.</a></li>
+ <li><a href="#tips_memory">Memory used by relocatable code, PIC, and static linking</a></li>
+ <li><a href="#tips_kernel_headers">Including Linux kernel headers</a></li>
</ul>
</li>
<li><a href="#who">Who are the Busybox developers?</a></li>
@@ -309,7 +309,7 @@ $ echo $PATH
dynamically linked on x86. To create a smaller Busybox, configure it with
fewer features. Individual Busybox applets cost anywhere from a few
hundred bytes to tens of kilobytes. Disable unneeded applets to save
- space, using menuconfig.
+ space, using "make menuconfig".
</p>
<p>The most important Busybox configurators are:</p>
@@ -491,7 +491,7 @@ make CROSS_COMPILE="$CROSS_COMPILE"
does not include the features i want?</a></h2>
<p>
- We maintain such a <a href="tinyutils.html">list</a> on this site!
+ We maintain such a <a href="tinyutils.html">list</a> on this site.
</p>
<hr />
@@ -564,31 +564,37 @@ with means to build the same Busybox binary from source.
For example, you may do it by placing the following, or similar,
text somewhere on the company's web site:
<p>
-<table border=1><tr><td>
+<table border=1 width=100%><tr><td>
This device's firmware includes the following open-source components:<br>
...<br>
...<br>
Busybox:<br>
- We are using patched version of Busybox 1.6.2.<br>
- In order to rebuild it from source, download<br>
- http://company.site.com/firmware/source/busybox-1.6.2.tar.gz,<br>
- unpack it to an empty directory,<br>
- download<br>
- http://company.site.com/firmware/source/busybox-1.6.2.patch<br>
- and<br>
- http://company.site.com/firmware/source/.config<br>
+ We are using patched version of Busybox 1.6.2.
+ In order to rebuild it from source, download
+ http://company.site.com/firmware/source/busybox-1.6.2.tar.gz,
+ unpack it to an empty directory,
+ download
+ http://company.site.com/firmware/source/busybox-1.6.2.patch
+ and
+ http://company.site.com/firmware/source/.config
to the same directory and apply the patch with this command:<br>
- patch -p1 &lt;busybox-1.6.2.patch<br>
+<pre>
+ patch -p1 &lt;busybox-1.6.2.patch
+</pre>
Now you can build Busybox with these commands:<br>
- export ARCH=arm<br>
- make CROSS_COMPILE=arm-linux-uclibc-<br>
- After successful build, you will have Busybox binary<br>
+<pre>
+ export ARCH=arm
+ make CROSS_COMPILE=arm-linux-uclibc-
+</pre>
+ After successful build, you will have Busybox binary
in this directory.<br>
If make command fails with the message<br>
- "arm-linux-uclibc-gcc: command not found"<br>
- you need to install suitable cross-compiler for ARM processor first.<br>
- ARM cross-compilers are widely available both from commercial vendors<br>
- and from open-source projects.<br>
+<pre>
+ arm-linux-uclibc-gcc: command not found
+</pre>
+ you need to install suitable cross-compiler for ARM processor first.
+ ARM cross-compilers are widely available both from commercial vendors
+ and from open-source projects.
</td></tr></table>
<p>
Adjust the text to suit your actual situation.
@@ -667,21 +673,22 @@ version before we try to diagnose your problem.</p>
<p>If you're building Busybox 0.50 with uClibc 0.9.19 and gcc 1.27 there's a
fairly large chance that whatever problem you're seeing has already been fixed.
To get that fix, all you have to do is upgrade to a newer version. If you
-don't at least _try_ that, you're wasting our time.</p>
+don't at least _try_ that before asking for help on the mailing list, you're
+wasting developers' time.</p>
<p>If you don't want to take the risk of replacing all applets by newer
versions, you can employ this trick:</p>
<p>Download most recent release, configure it with "make allnoconfig", then
-use menuconfig to switch on just the applet you want to test and maybe
+use "make menuconfig" to switch on just the applet you want to test and maybe
a couple of tuning options. Then build Busybox.</p>
<p>Then, on target system, delete the old applet symlink that points
to your old Busybox, and replace it with the new Busybox binary, renamed
to applet's name. In other words, if you want to replace only, say, httpd,
then delete, say, /bin/httpd symlink (which points to your old Busybox),
-then run "cp /path/to/new/busybox /bin/httpd". For some applets, you'll
-also need to "chmod u+s" it.</p>
+then run "cp /path/to/new/busybox /bin/httpd". (For some applets such as login,
+you'll also need to "chmod u+s" your new busybox binary.)</p>
<p>Now you can test the new applet and post a more useful email to the mailing
list, either "I see such and such bug even in latest release" or "I see such
@@ -751,7 +758,7 @@ int main(int argc, char *argv)
</p>
<hr />
-<h2><a name="sed">I can't configure Busybox on my system.</a></h2>
+<h2><a name="sed">I can't configure Busybox on my system</a></h2>
<p>
Configuring Busybox depends on a recent version of sed. Older
@@ -1102,7 +1109,7 @@ we ensure we have at least the option of full standards compliance, or else
document where we (intentionally) fall short.</p>
<hr />
-<h2><a name="portability">Portability.</a></h2>
+<h2><a name="portability">Portability</a></h2>
<p>Busybox is a Linux project, but that doesn't mean we don't have to worry
about portability. First of all, there are different hardware platforms,
@@ -1179,7 +1186,7 @@ file is at least worth a look. Special-case code in the body of an applet is
something we're trying to avoid.</p>
<hr />
-<h2><a name="tips">Programming tips and tricks.</a></h2>
+<h2><a name="tips">Programming tips and tricks</a></h2>
<p>Various things Busybox uses that aren't particularly well documented
elsewhere.</p>
@@ -1252,7 +1259,8 @@ or even spawn_and_wait(argv).</p>
forking, and exiting <b>in parent</b>, leaving child to continue to run.
This is not possible with vfork, because with vfork, while child
is running, parent does not return from vfork, and therefore it can't exit.
-It can be worked around by execing the same program with same parameters
+This can be worked around by execing the same program (with parameters
+set up so that it knows that it doesn't need to daemonize anymore)
after vfork in child. This unblocks parent, which can then exit.
bb_daemonize_or_rexec(flags, argv) hides all NOMMU machinery
of this process. Consult comments in libbb.h for details.</p>
@@ -1354,7 +1362,7 @@ wondering why action games that use TCP/IP set TCP_NODELAY to lower the latency
on their their sockets, now you know.)</p>
<hr />
-<h2><a name="tips_memory">Memory used by relocatable code, PIC, and static linking.</a></h2>
+<h2><a name="tips_memory">Memory used by relocatable code, PIC, and static linking</a></h2>
<p>The downside of standard dynamic linking is that it results in self-modifying
code. Although each executable's pages are mmaped() into a process' address