aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-05-13 01:48:00 -0400
committerMike Frysinger <vapier@gentoo.org>2009-05-13 01:48:00 -0400
commit7a5814c74c875d1d4ce80c8d24b0573a8fd51ab5 (patch)
tree1808a9cf0dee2b5182fe68f37c2be9b0c171990f
parent318a8e5ed557ed04712edc2a59275c92ce7e85e6 (diff)
downloadbusybox-w32-7a5814c74c875d1d4ce80c8d24b0573a8fd51ab5.tar.gz
busybox-w32-7a5814c74c875d1d4ce80c8d24b0573a8fd51ab5.tar.bz2
busybox-w32-7a5814c74c875d1d4ce80c8d24b0573a8fd51ab5.zip
split website off into dedicated git repo
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r--docs/busybox.net/FAQ.html1146
-rw-r--r--docs/busybox.net/about.html24
-rw-r--r--docs/busybox.net/busybox-growth.ps404
-rw-r--r--docs/busybox.net/copyright.txt30
-rw-r--r--docs/busybox.net/developer.html92
-rw-r--r--docs/busybox.net/download.html60
-rw-r--r--docs/busybox.net/fix.html15
-rw-r--r--docs/busybox.net/footer.html51
-rw-r--r--docs/busybox.net/header.html92
-rw-r--r--docs/busybox.net/images/back.pngbin322 -> 0 bytes
-rw-r--r--docs/busybox.net/images/busybox.jpegbin9023 -> 0 bytes
-rw-r--r--docs/busybox.net/images/busybox.pngbin34014 -> 0 bytes
-rw-r--r--docs/busybox.net/images/busybox1.pngbin10913 -> 0 bytes
-rw-r--r--docs/busybox.net/images/busybox2.jpgbin8204 -> 0 bytes
-rw-r--r--docs/busybox.net/images/busybox2.pngbin71850 -> 0 bytes
-rw-r--r--docs/busybox.net/images/busybox3.jpgbin3292 -> 0 bytes
-rw-r--r--docs/busybox.net/images/dir.pngbin309 -> 0 bytes
-rw-r--r--docs/busybox.net/images/donate.pngbin807 -> 0 bytes
-rw-r--r--docs/busybox.net/images/fm.mini.pngbin7708 -> 0 bytes
-rw-r--r--docs/busybox.net/images/gfx_by_gimp.pngbin3955 -> 0 bytes
-rw-r--r--docs/busybox.net/images/ltbutton2.pngbin6798 -> 0 bytes
-rw-r--r--docs/busybox.net/images/osuosl.pngbin8683 -> 0 bytes
-rw-r--r--docs/busybox.net/images/sdsmall.pngbin1593 -> 0 bytes
-rw-r--r--docs/busybox.net/images/text.pngbin307 -> 0 bytes
-rw-r--r--docs/busybox.net/images/valid-html401.pngbin1950 -> 0 bytes
-rw-r--r--docs/busybox.net/images/vh40.gifbin906 -> 0 bytes
-rw-r--r--docs/busybox.net/images/written.in.vi.pngbin4394 -> 0 bytes
-rw-r--r--docs/busybox.net/index.html1
-rw-r--r--docs/busybox.net/license.html99
-rw-r--r--docs/busybox.net/links.html19
-rw-r--r--docs/busybox.net/lists.html46
-rw-r--r--docs/busybox.net/news.html504
-rw-r--r--docs/busybox.net/oldnews.html2214
-rw-r--r--docs/busybox.net/products.html165
-rw-r--r--docs/busybox.net/screenshot.html75
-rw-r--r--docs/busybox.net/shame.html82
-rw-r--r--docs/busybox.net/sponsors.html56
-rw-r--r--docs/busybox.net/subversion.html51
-rw-r--r--docs/busybox.net/svnindex.css92
-rw-r--r--docs/busybox.net/svnindex.xsl108
-rw-r--r--docs/busybox.net/tinyutils.html86
41 files changed, 0 insertions, 5512 deletions
diff --git a/docs/busybox.net/FAQ.html b/docs/busybox.net/FAQ.html
deleted file mode 100644
index 7ed1394ce..000000000
--- a/docs/busybox.net/FAQ.html
+++ /dev/null
@@ -1,1146 +0,0 @@
1<!--#include file="header.html" -->
2
3<h3>Frequently Asked Questions</h3>
4
5This is a collection of some of the more frequently asked questions
6about BusyBox. Some of the questions even have answers. If you
7have additions to this FAQ document, we would love to add them,
8
9<h2>General questions</h2>
10<ol>
11<li><a href="#getting_started">How can I get started using BusyBox?</a></li>
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>
14<li><a href="#build_system">How do I build a BusyBox-based system?</a></li>
15<li><a href="#kernel">Which Linux kernel versions are supported?</a></li>
16<li><a href="#arch">Which architectures does BusyBox run on?</a></li>
17<li><a href="#libc">Which C libraries are supported?</a></li>
18<li><a href="#commercial">Can I include BusyBox as part of the software on my device?</a></li>
19<li><a href="#external">Where can I find other small utilities since busybox does not include the features I want?</a></li>
20<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></li>
21<li><a href="#helpme">I need help with BusyBox! What should I do?</a></li>
22<li><a href="#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></li>
23</ol>
24
25<h2>Troubleshooting</h2>
26<ol>
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>
29<li><a href="#init">Busybox init isn't working!</a></li>
30<li><a href="#sed">I can't configure busybox on my system.</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>
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
39<h2>Programming questions</h2>
40<ol>
41 <li><a href="#goals">What are the goals of busybox?</a></li>
42 <li><a href="#design">What is the design of busybox?</a></li>
43 <li><a href="#source">How is the source code organized?</a>
44 <ul>
45 <li><a href="#source_applets">The applet directories.</a></li>
46 <li><a href="#source_libbb">The busybox shared library (libbb)</a></li>
47 </ul>
48 </li>
49 <li><a href="#optimize">I want to make busybox even smaller, how do I go about it?</a></li>
50 <li><a href="#adding">Adding an applet to busybox</a></li>
51 <li><a href="#standards">What standards does busybox adhere to?</a></li>
52 <li><a href="#portability">Portability.</a></li>
53 <li><a href="#tips">Tips and tricks.</a>
54 <ul>
55 <li><a href="#tips_encrypted_passwords">Encrypted Passwords</a></li>
56 <li><a href="#tips_vfork">Fork and vfork</a></li>
57 <li><a href="#tips_short_read">Short reads and writes</a></li>
58 <li><a href="#tips_memory">Memory used by relocatable code, PIC, and static linking.</a></li>
59 <li><a href="#tips_kernel_headers">Including Linux kernel headers.</a></li>
60 </ul>
61 </li>
62 <li><a href="#who">Who are the BusyBox developers?</a></li>
63</ol>
64
65
66<hr />
67<h1>General questions</h1>
68
69<hr />
70<h2><a name="getting_started">How can I get started using BusyBox?</a></h2>
71
72<p> If you just want to try out busybox without installing it, download the
73 tarball, extract it, run "make defconfig", and then run "make".
74</p>
75<p>
76 This will create a busybox binary with almost all features enabled. To try
77 out a busybox applet, type "./busybox [appletname] [options]", for
78 example "./busybox ls -l" or "./busybox cat LICENSE". Type "./busybox"
79 to see a command list, and "busybox appletname --help" to see a brief
80 usage message for a given applet.
81</p>
82<p>
83 BusyBox uses the name it was invoked under to determine which applet is
84 being invoked. (Try "mv busybox ls" and then "./ls -l".) Installing
85 busybox consists of creating symlinks (or hardlinks) to the busybox
86 binary for each applet in busybox, and making sure these links are in
87 the shell's command $PATH. The special applet name "busybox" (or with
88 any optional suffix, such as "busybox-static") uses the first argument
89 to determine which applet to run, as shown above.
90</p>
91<p>
92 BusyBox also has a feature called the
93 <a name="standalone_shell">"standalone shell"</a>, where the busybox
94 shell runs any built-in applets before checking the command path. This
95 feature is also enabled by "make allyesconfig", and to try it out run
96 the command line "PATH= ./busybox ash". This will blank your command path
97 and run busybox as your command shell, so the only commands it can find
98 (without an explicit path such as /bin/ls) are the built-in busybox ones.
99 This is another good way to see what's built into busybox.
100 Note that the standalone shell requires CONFIG_BUSYBOX_EXEC_PATH
101 to be set appropriately, depending on whether or not /proc/self/exe is
102 available or not. If you do not have /proc, then point that config option
103 to the location of your busybox binary, usually /bin/busybox.
104 (So if you set it to /proc/self/exe, and happen to be able to chroot into
105 your rootfs, you must mount /proc beforehand.)
106</p>
107<p>
108 A typical indication that you set CONFIG_BUSYBOX_EXEC_PATH to proc but
109 forgot to mount proc is:
110<pre>
111$ /bin/echo $PATH
112/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11
113$ echo $PATH
114/bin/sh: echo: not found
115</pre>
116
117<hr />
118<h2><a name="configure">How do I configure busybox?</a></h2>
119
120<p> Busybox is configured similarly to the linux kernel. Create a default
121 configuration and then run "make menuconfig" to modify it. The end
122 result is a .config file that tells the busybox build process what features
123 to include. So instead of "./configure; make; make install" the equivalent
124 busybox build would be "make defconfig; make; make install".
125</p>
126
127<p> Busybox configured with all features enabled is a little under a megabyte
128 dynamically linked on x86. To create a smaller busybox, configure it with
129 fewer features. Individual busybox applets cost anywhere from a few
130 hundred bytes to tens of kilobytes. Disable unneeded applets to save,
131 space, using menuconfig.
132</p>
133
134<p>The most important busybox configurators are:</p>
135
136<ul>
137<li><p>make <b>defconfig</b> - Create the maximum "sane" configuration. This
138enables almost all features, minus things like debugging options and features
139that require changes to the rest of the system to work (such as selinux or
140devfs device names). Use this if you want to start from a full-featured
141busybox and remove features until it's small enough.</p></li>
142<li><p>make <b>allnoconfig</b> - Disable everything. This creates a tiny version
143of busybox that doesn't do anything. Start here if you know exactly what
144you want and would like to select only those features.</p></li>
145<li><p>make <b>menuconfig</b> - Interactively modify a .config file through a
146multi-level menu interface. Use this after one of the previous two.</p></li>
147</ul>
148
149<p>Some other configuration options are:</p>
150<ul>
151<li><p>make <b>oldconfig</b> - Update an old .config file for a newer version
152of busybox.</p></li>
153<li><p>make <b>allyesconfig</b> - Select absolutely everything. This creates
154a statically linked version of busybox full of debug code, with dependencies on
155selinux, using devfs names... This makes sure everything compiles. Whether
156or not the result would do anything useful is an open question.</p></li>
157<li><p>make <b>allbareconfig</b> - Select all applets but disable all sub-features
158within each applet. More build coverage testing.</p></li>
159<li><p>make <b>randconfig</b> - Create a random configuration for test purposes.</p></li>
160</ul>
161
162<p> Menuconfig modifies your .config file through an interactive menu where you can enable or disable
163 busybox features, and get help about each feature.
164
165<p>
166 To build a smaller busybox binary, run "make menuconfig" and disable the
167 features you don't need. (Or run "make allnoconfig" and then use
168 menuconfig to add just the features you need. Don't forget to recompile
169 with "make" once you've finished configuring.)
170</p>
171
172<hr />
173<h2><a name="build">How do I build BusyBox with a cross-compiler?</a></h2>
174
175<p>
176 To build busybox with a cross-compiler, specify CROSS_COMPILE=&lt;prefix&gt;.
177</p>
178<p>
179 CROSS_COMPILE specifies the prefix used for all executables used
180 during compilation. Only gcc and related binutils executables
181 are prefixed with $(CROSS_COMPILE) in the makefiles.
182 CROSS_COMPILE can be set on the command line:
183</p>
184<pre>
185 make CROSS_COMPILE=arm-linux-uclibcgnueabi-
186</pre>
187<p>
188 Alternatively CROSS_COMPILE can be set in the environment.
189 Default value for CROSS_COMPILE is not to prefix executables.
190</p>
191<p>
192 To store the cross-compiler in your .config, set the variable
193 CONFIG_CROSS_COMPILER_PREFIX accordingly in menuconfig or by
194 editing the .config file.
195</p>
196
197<hr />
198<h2><a name="build_system">How do I build a BusyBox-based system?</a></h2>
199
200<p>
201 BusyBox is a package that replaces a dozen standard packages, but it is
202 not by itself a complete bootable system. Building an entire Linux
203 distribution from source is a bit beyond the scope of this FAQ, but it
204 understandably keeps cropping up on the mailing list, so here are some
205 pointers.
206</p>
207<p>
208 Start by learning how to strip a working system down to the bare essentials
209 needed to run one or two commands, so you know what it is you actually
210 need. An excellent practical place to do
211 this is the <a href="http://www.tldp.org/HOWTO/Bootdisk-HOWTO/">Linux
212 BootDisk Howto</a>, or for a more theoretical approach try
213 <a href="http://www.tldp.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html">From
214 PowerUp to Bash Prompt</a>.
215</p>
216<p>
217 To learn how to build a working Linux system entirely from source code,
218 the place to go is the <a href="http://www.linuxfromscratch.org/">Linux
219 From Scratch</a> project. They have an entire book of step-by-step
220 instructions you can
221 <a href="http://www.linuxfromscratch.org/lfs/view/stable/">read online</a>
222 or
223 <a href="http://www.linuxfromscratch.org/lfs/downloads/stable/">download</a>.
224 Be sure to check out the other sections of their main page, including
225 Beyond Linux From Scratch, Hardened Linux From Scratch, their Hints
226 directory, and their LiveCD project. (They also have mailing lists which
227 are better sources of answers to Linux-system building questions than
228 the busybox list.)
229</p>
230<p>
231 If you want an automated yet customizable system builder which produces
232 a BusyBox and uClibc based system, try
233 <a href="http://buildroot.uclibc.org/">buildroot</a>, which is
234 another project by the maintainer of the uClibc (Erik Andersen).
235 Download the tarball, extract it, unset CC, make.
236 For more instructions, see the website.
237</p>
238
239<hr />
240<h2><a name="kernel">Which Linux kernel versions are supported?</a></h2>
241
242<p>
243 Full functionality requires Linux 2.4.x or better. (Earlier versions may
244 still work, but are no longer regularly tested.) A large fraction of the
245 code should run on just about anything. While the current code is fairly
246 Linux specific, it should be fairly easy to port the majority of the code
247 to support, say, FreeBSD or Solaris, or Mac OS X, or even Windows (if you
248 are into that sort of thing).
249</p>
250
251<hr />
252<h2><a name="arch">Which architectures does BusyBox run on?</a></h2>
253
254<p>
255 BusyBox in general will build on any architecture supported by gcc.
256 Kernel module loading for 2.4 Linux kernels is currently
257 limited to ARM, CRIS, H8/300, x86, ia64, x86_64, m68k, MIPS, PowerPC,
258 S390, SH3/4/5, Sparc, v850e, and x86_64 for 2.4.x kernels.
259</p>
260<p>
261 With 2.6.x kernels, module loading support should work on all architectures.
262</p>
263
264<hr />
265<h2><a name="libc">Which C libraries are supported?</a></h2>
266
267<p>
268 On Linux, BusyBox releases are tested against uClibc (0.9.27 or later) and
269 glibc (2.2 or later). Both should provide full functionality with busybox,
270 and if you find a bug we want to hear about it.
271</p>
272<p>
273 Linux-libc5 is no longer maintained (and has no known advantages over
274 uClibc), dietlibc is known to have numerous unfixed bugs, and klibc is
275 missing too many features to build BusyBox. If you require a small C
276 library for Linux, the busybox developers recommend uClibc.
277</p>
278<p>
279 Some BusyBox applets have been built and run under a combination
280 of newlib and libgloss (see
281 <a href="http://www.busybox.net/lists/busybox/2005-March/013759.html">this thread</a>).
282 This is still experimental, but may be supported in a future release.
283</p>
284
285<hr />
286<h2><a name="commercial">Can I include BusyBox as part of the software on my device?</a></h2>
287
288<p>
289 Yes. As long as you <a href="http://busybox.net/license.html">fully comply
290 with the generous terms of the GPL BusyBox license</a> you can ship BusyBox
291 as part of the software on your device.
292</p>
293
294<hr />
295<h2><a name="external">Where can I find other small utilities since busybox
296 does not include the features i want?</a></h2>
297
298<p>
299 we maintain such a <a href="tinyutils.html">list</a> on this site!
300</p>
301
302<hr />
303<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>
304
305<p>
306 You have not paid us a single cent and yet you still have the product of
307 many years of our work. We are not your slaves! We work on BusyBox
308 because we find it useful and interesting. If you go off flaming us, we
309 will ignore you.
310
311<hr />
312<h2><a name="helpme">I need help with BusyBox! What should I do?</a></h2>
313
314<p>
315 If you find that you need help with BusyBox, you can ask for help on the
316 BusyBox mailing list at busybox@busybox.net.</p>
317
318<p> In addition to the mailing list, Erik Andersen (andersee), Manuel Nova
319 (mjn3), Rob Landley (landley), Mike Frysinger (SpanKY),
320 Bernhard Reutner-Fischer (blindvt), and other long-time BusyBox developers
321 are known to hang out on the uClibc IRC channel: #uclibc on
322 irc.freenode.net. There is a
323 <a href="http://ibot.Rikers.org/%23uclibc/">web archive of
324 daily logs of the #uclibc IRC channel</a> going back to 2002.
325</p>
326
327<p>
328 <b>Please do not send private email to Rob, Erik, Manuel, or the other
329 BusyBox contributors asking for private help unless you are planning on
330 paying for consulting services.</b>
331</p>
332
333<p>
334 When we answer questions on the BusyBox mailing list, it helps everyone
335 since people with similar problems in the future will be able to get help
336 by searching the mailing list archives. Private help is reserved as a paid
337 service. If you need to use private communication, or if you are serious
338 about getting timely assistance with BusyBox, you should seriously consider
339 paying for consulting services.
340</p>
341
342<hr />
343<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>
344
345<p>
346 Yes we are. The easy way to sponsor a new feature is to post an offer on
347 the mailing list to see who's interested. You can also email the project's
348 maintainer and ask them to recommend someone.
349</p>
350
351<hr />
352<h1>Troubleshooting</h1>
353
354<hr />
355<h2><a name="bugs">I think I found a bug in BusyBox! What should I do?</a></h2>
356
357<p>
358 If you simply need help with using or configuring BusyBox, please submit a
359 detailed description of your problem to the BusyBox mailing list at <a
360 href="mailto:busybox@busybox.net">busybox@busybox.net</a>.
361 Please do not send email to individual developers asking
362 for private help unless you are planning on paying for consulting services.
363 When we answer questions on the BusyBox mailing list, it helps everyone,
364 while private answers help only you...
365</p>
366
367<p>
368 Bug reports and new feature patches sometimes get lost when posted to the
369 mailing list, because the developers of BusyBox are busy people and have
370 only so much they can keep in their brains at a time. You can post a
371 polite reminder after 2-3 days without offending anybody. If that doesn't
372 result in a solution, please use the
373 <a href="https://bugs.busybox.net/">BusyBox Bug
374 and Patch Tracking System</a> to submit a detailed explanation and we'll
375 get to it as soon as we can.
376</p>
377
378<p>
379 Note that bugs entered into the bug system without being mentioned on the
380 mailing list first may languish there for months before anyone even notices
381 them. We generally go through the bug system when preparing for new
382 development releases, to see what fell through the cracks while we were
383 off writing new features. (It's a fast/unreliable vs slow/reliable thing.
384 Saves retransits, but the latency sucks.)
385</p>
386
387<hr />
388<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?</a></h2>
389
390<p>Variants of this one get asked a lot.</p>
391
392<p>The purpose of the BusyBox mailing list is to develop and improve BusyBox,
393and we're happy to respond to our users' needs. But if you're coming to the
394list for free tech support we're going to ask you to upgrade to a current
395version before we try to diagnose your problem.</p>
396
397<p>If you're building BusyBox 0.50 with uClibc 0.9.19 and gcc 1.27 there's a
398fairly large chance that whatever problem you're seeing has already been fixed.
399To get that fix, all you have to do is upgrade to a newer version. If you
400don't at least _try_ that, you're wasting our time.</p>
401
402<p>The volunteers are happy to fix any bugs you point out in the current
403versions because doing so helps everybody and makes the project better. We
404want to make the current version work for you. But diagnosing, debugging, and
405backporting fixes to old versions isn't something we do for free, because it
406doesn't help anybody but you. The cost of volunteer tech support is using a
407reasonably current version of the project.</p>
408
409<p>If you don't want to upgrade, you have the complete source code and thus
410the ability to fix it yourself, or hire a consultant to do it for you. If you
411got your version from a vendor who still supports the older version, they can
412help you. But there are limits as to what the volunteers will feel obliged to
413do for you.</p>
414
415<p>As a rule of thumb, volunteers will generally answer polite questions about
416a given version for about three years after its release before it's so old
417we don't remember the answer off the top of our head. And if you want us to
418put any _effort_ into tracking it down, we want you to put in a little effort
419of your own by confirming it's still a problem with the current version. It's
420also hard for us to fix a problem of yours if we can't reproduce it because
421we don't have any systems running an environment that old.</p>
422
423<p>A consultant will happily set up a special environment just to reproduce
424your problem, and you can always ask on the list if any of the developers
425have consulting rates.</p>
426
427<hr />
428<h2><a name="init">Busybox init isn't working!</a></h2>
429
430<p>
431 Init is the first program that runs, so it might be that no programs are
432 working on your new system because of a problem with your cross-compiler,
433 kernel, console settings, shared libraries, root filesystem... To rule all
434 that out, first build a statically linked version of the following "hello
435 world" program with your cross compiler toolchain:
436</p>
437<pre>
438#include &lt;stdio.h&gt;
439
440int main(int argc, char *argv)
441{
442 printf("Hello world!\n");
443 sleep(999999999);
444}
445</pre>
446
447<p>
448 Now try to boot your device with an "init=" argument pointing to your
449 hello world program. Did you see the hello world message? Until you
450 do, don't bother messing with busybox init.
451</p>
452
453<p>
454 Once you've got it working statically linked, try getting it to work
455 dynamically linked. Then read the FAQ entry <a href="#build_system">How
456 do I build a BusyBox-based system?</a>, and the
457 <a href="/downloads/BusyBox.html#item_init">documentation for BusyBox
458 init</a>.
459</p>
460
461<hr />
462<h2><a name="sed">I can't configure busybox on my system.</a></h2>
463
464<p>
465 Configuring Busybox depends on a recent version of sed. Older
466 distributions (Red Hat 7.2, Debian 3.0) may not come with a
467 usable version. Luckily BusyBox can use its own sed to configure itself,
468 although this leads to a bit of a chicken and egg problem.
469 You can work around this by hand-configuring busybox to build with just
470 sed, then putting that sed in your path to configure the rest of busybox
471 with, like so:
472</p>
473
474<pre>
475 tar xvjf sources/busybox-x.x.x.tar.bz2
476 cd busybox-x.x.x
477 make allnoconfig
478 make include/bb_config.h
479 echo "CONFIG_SED=y" >> .config
480 echo "#undef ENABLE_SED" >> include/bb_config.h
481 echo "#define ENABLE_SED 1" >> include/bb_config.h
482 make
483 mv busybox sed
484 export PATH=`pwd`:"$PATH"
485</pre>
486
487<p>Then you can run "make defconfig" or "make menuconfig" normally.</p>
488
489<hr />
490<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
492<p>
493 Job control will be turned off since your shell can not obtain a controlling
494 terminal. This typically happens when you run your shell on /dev/console.
495 The kernel will not provide a controlling terminal on the /dev/console
496 device. Your should run your shell on a normal tty such as tty1 or ttyS0
497 and everything will work perfectly. If you <em>REALLY</em> want your shell
498 to run on /dev/console, then you can hack your kernel (if you are into that
499 sortof thing) by changing drivers/char/tty_io.c to change the lines where
500 it sets "noctty = 1;" to instead set it to "0". I recommend you instead
501 run your shell on a real console...
502</p>
503
504<hr />
505<h1>Misc. questions</h1>
506
507<hr />
508<h2><a name="tz">How do I change the time zone in busybox?</a></h2>
509
510<p>Busybox has nothing to do with the timezone. Please consult your libc
511documentation. (<a href="http://google.com/search?q=uclibc+glibc+timezone">http://google.com/search?q=uclibc+glibc+timezone</a>).</p>
512
513<hr />
514<h1>Development</h1>
515
516<hr />
517<h2><a name="goals">What are the goals of busybox?</a></h2>
518
519<p>Busybox aims to be the smallest and simplest correct implementation of the
520standard Linux command line tools. First and foremost, this means the
521smallest executable size we can manage. We also want to have the simplest
522and cleanest implementation we can manage, be <a href="#standards">standards
523compliant</a>, minimize run-time memory usage (heap and stack), run fast, and
524take over the world.</p>
525
526<hr />
527<h2><a name="design">What is the design of busybox?</a></h2>
528
529<p>Busybox is like a swiss army knife: one thing with many functions.
530The busybox executable can act like many different programs depending on
531the name used to invoke it. Normal practice is to create a bunch of symlinks
532pointing to the busybox binary, each of which triggers a different busybox
533function. (See <a href="FAQ.html#getting_started">getting started</a> in the
534FAQ for more information on usage, and <a href="BusyBox.html">the
535busybox documentation</a> for a list of symlink names and what they do.)
536
537<p>The "one binary to rule them all" approach is primarily for size reasons: a
538single multi-purpose executable is smaller then many small files could be.
539This way busybox only has one set of ELF headers, it can easily share code
540between different apps even when statically linked, it has better packing
541efficiency by avoding gaps between files or compression dictionary resets,
542and so on.</p>
543
544<p>Work is underway on new options such as "make standalone" to build separate
545binaries for each applet, and a "libbb.so" to make the busybox common code
546available as a shared library. Neither is ready yet at the time of this
547writing.</p>
548
549<a name="source"></a>
550
551<hr />
552<h2><a name="source_applets">The applet directories</a></h2>
553
554<p>The directory "applets" contains the busybox startup code (applets.c and
555busybox.c), and several subdirectories containing the code for the individual
556applets.</p>
557
558<p>Busybox execution starts with the main() function in applets/busybox.c,
559which sets the global variable applet_name to argv[0] and calls
560run_applet_and_exit() in applets/applets.c. That uses the applets[] array
561(defined in include/busybox.h and filled out in include/applets.h) to
562transfer control to the appropriate APPLET_main() function (such as
563cat_main() or sed_main()). The individual applet takes it from there.</p>
564
565<p>This is why calling busybox under a different name triggers different
566functionality: main() looks up argv[0] in applets[] to get a function pointer
567to APPLET_main().</p>
568
569<p>Busybox applets may also be invoked through the multiplexor applet
570"busybox" (see busybox_main() in libbb/appletlib.c), and through the
571standalone shell (grep for STANDALONE_SHELL in applets/shell/*.c).
572See <a href="FAQ.html#getting_started">getting started</a> in the
573FAQ for more information on these alternate usage mechanisms, which are
574just different ways to reach the relevant APPLET_main() function.</p>
575
576<p>The applet subdirectories (archival, console-tools, coreutils,
577debianutils, e2fsprogs, editors, findutils, init, loginutils, miscutils,
578modutils, networking, procps, shell, sysklogd, and util-linux) correspond
579to the configuration sub-menus in menuconfig. Each subdirectory contains the
580code to implement the applets in that sub-menu, as well as a Config.in
581file defining that configuration sub-menu (with dependencies and help text
582for each applet), and the makefile segment (Makefile.in) for that
583subdirectory.</p>
584
585<p>The run-time --help is stored in usage_messages[], which is initialized at
586the start of applets/applets.c and gets its help text from usage.h. During the
587build this help text is also used to generate the BusyBox documentation (in
588html, txt, and man page formats) in the docs directory. See
589<a href="#adding">adding an applet to busybox</a> for more
590information.</p>
591
592<hr />
593<h2><a name="source_libbb"><b>libbb</b></a></h2>
594
595<p>Most non-setup code shared between busybox applets lives in the libbb
596directory. It's a mess that evolved over the years without much auditing
597or cleanup. For anybody looking for a great project to break into busybox
598development with, documenting libbb would be both incredibly useful and good
599experience.</p>
600
601<p>Common themes in libbb include allocation functions that test
602for failure and abort the program with an error message so the caller doesn't
603have to test the return value (xmalloc(), xstrdup(), etc), wrapped versions
604of open(), close(), read(), and write() that test for their own failures
605and/or retry automatically, linked list management functions (llist.c),
606command line argument parsing (getopt32.c), and a whole lot more.</p>
607
608<hr />
609<h2><a name="optimize">I want to make busybox even smaller, how do I go about it?</a></h2>
610
611<p>
612 To conserve bytes it's good to know where they're being used, and the
613 size of the final executable isn't always a reliable indicator of
614 the size of the components (since various structures are rounded up,
615 so a small change may not even be visible by itself, but many small
616 savings add up).
617</p>
618
619<p> The busybox Makefile builds two versions of busybox, one of which
620 (busybox_unstripped) has extra information that various analysis tools
621 can use. (This has nothing to do with CONFIG_DEBUG, leave that off
622 when trying to optimize for size.)
623</p>
624
625<p> The <b>"make bloatcheck"</b> option uses Matt Mackall's bloat-o-meter
626 script to compare two versions of busybox (busybox_unstripped vs
627 busybox_old), and report which symbols changed size and by how much.
628 To use it, first build a base version with <b>"make baseline"</b>.
629 (This creates busybox_old, which should have the original sizes for
630 comparison purposes.) Then build the new version with your changes
631 and run "make bloatcheck" to see the size differences from the old
632 version.
633</p>
634<p>
635 The first line of output has totals: how many symbols were added or
636 removed, how many symbols grew or shrank, the number of bytes added
637 and number of bytes removed by these changes, and finally the total
638 number of bytes difference between the two files. The remaining
639 lines show each individual symbol, the old and new sizes, and the
640 increase or decrease in size (which results are sorted by).
641</p>
642<p>
643 The <b>"make sizes"</b> option produces raw symbol size information for
644 busybox_unstripped. This is the output from the "nm --size-sort"
645 command (see "man nm" for more information), and is the information
646 bloat-o-meter parses to produce the comparison report above. For
647 defconfig, this is a good way to find the largest symbols in the tree
648 (which is a good place to start when trying to shrink the code). To
649 take a closer look at individual applets, configure busybox with just
650 one applet (run "make allnoconfig" and then switch on a single applet
651 with menuconfig), and then use "make sizes" to see the size of that
652 applet's components.
653</p>
654<p>
655 The "showasm" command (in the scripts directory) produces an assembly
656 dump of a function, providing a closer look at what changed. Try
657 "scripts/showasm busybox_unstripped" to list available symbols, and
658 "scripts/showasm busybox_unstripped symbolname" to see the assembly
659 for a sepecific symbol.
660</p>
661
662<hr />
663<h2><a name="adding">Adding an applet to busybox</a></h2>
664
665<p>To add a new applet to busybox, first pick a name for the applet and
666a corresponding CONFIG_NAME. Then do this:</p>
667
668<ul>
669<li>Figure out where in the busybox source tree your applet best fits,
670and put your source code there. Be sure to use APPLET_main() instead
671of main(), where APPLET is the name of your applet.</li>
672
673<li>Add your applet to the relevant Config.in file (which file you add
674it to determines where it shows up in "make menuconfig"). This uses
675the same general format as the linux kernel's configuration system.</li>
676
677<li>Add your applet to the relevant Makefile.in file (in the same
678directory as the Config.in you chose), using the existing entries as a
679template and the same CONFIG symbol as you used for Config.in. (Don't
680forget "needlibm" or "needcrypt" if your applet needs libm or
681libcrypt.)</li>
682
683<li>Add your applet to "include/applets.h", using one of the existing
684entries as a template. (Note: this is in alphabetical order. Applets
685are found via binary search, and if you add an applet out of order it
686won't work.)</li>
687
688<li>Add your applet's runtime help text to "include/usage.h". You need
689at least appname_trivial_usage (the minimal help text, always included
690in the busybox binary when this applet is enabled) and appname_full_usage
691(extra help text included in the busybox binary with
692CONFIG_FEATURE_VERBOSE_USAGE is enabled), or it won't compile.
693The other two help entry types (appname_example_usage and
694appname_notes_usage) are optional. They don't take up space in the binary,
695but instead show up in the generated documentation (BusyBox.html,
696BusyBox.txt, and the man page BusyBox.1).</li>
697
698<li>Run menuconfig, switch your applet on, compile, test, and fix the
699bugs. Be sure to try both "allyesconfig" and "allnoconfig" (and
700"allbareconfig" if relevant).</li>
701
702</ul>
703
704<hr />
705<h2><a name="standards">What standards does busybox adhere to?</a></h2>
706
707<p>The standard we're paying attention to is the "Shell and Utilities"
708portion of the <a href="http://www.opengroup.org/onlinepubs/009695399/">Open
709Group Base Standards</a> (also known as the Single Unix Specification version
7103 or SUSv3). Note that paying attention isn't necessarily the same thing as
711following it.</p>
712
713<p>SUSv3 doesn't even mention things like init, mount, tar, or losetup, nor
714commonly used options like echo's '-e' and '-n', or sed's '-i'. Busybox is
715driven by what real users actually need, not the fact the standard believes
716we should implement ed or sccs. For size reasons, we're unlikely to include
717much internationalization support beyond UTF-8, and on top of all that, our
718configuration menu lets developers chop out features to produce smaller but
719very non-standard utilities.</p>
720
721<p>Also, Busybox is aimed primarily at Linux. Unix standards are interesting
722because Linux tries to adhere to them, but portability to dozens of platforms
723is only interesting in terms of offering a restricted feature set that works
724everywhere, not growing dozens of platform-specific extensions. Busybox
725should be portable to all hardware platforms Linux supports, and any other
726similar operating systems that are easy to do and won't require much
727maintenance.</p>
728
729<p>In practice, standards compliance tends to be a clean-up step once an
730applet is otherwise finished. When polishing and testing a busybox applet,
731we ensure we have at least the option of full standards compliance, or else
732document where we (intentionally) fall short.</p>
733
734<hr />
735<h2><a name="portability">Portability.</a></h2>
736
737<p>Busybox is a Linux project, but that doesn't mean we don't have to worry
738about portability. First of all, there are different hardware platforms,
739different C library implementations, different versions of the kernel and
740build toolchain... The file "include/platform.h" exists to centralize and
741encapsulate various platform-specific things in one place, so most busybox
742code doesn't have to care where it's running.</p>
743
744<p>To start with, Linux runs on dozens of hardware platforms. We try to test
745each release on x86, x86-64, arm, power pc, and mips. (Since qemu can handle
746all of these, this isn't that hard.) This means we have to care about a number
747of portability issues like endianness, word size, and alignment, all of which
748belong in platform.h. That header handles conditional #includes and gives
749us macros we can use in the rest of our code. At some point in the future
750we might grow a platform.c, possibly even a platform subdirectory. As long
751as the applets themselves don't have to care.</p>
752
753<p>On a related note, we made the "default signedness of char varies" problem
754go away by feeding the compiler -funsigned-char. This gives us consistent
755behavior on all platforms, and defaults to 8-bit clean text processing (which
756gets us halfway to UTF-8 support). NOMMU support is less easily separated
757(see the tips section later in this document), but we're working on it.</p>
758
759<p>Another type of portability is build environments: we unapologetically use
760a number of gcc and glibc extensions (as does the Linux kernel), but these have
761been picked up by packages like uClibc, TCC, and Intel's C Compiler. As for
762gcc, we take advantage of newer compiler optimizations to get the smallest
763possible size, but we also regression test against an older build environment
764using the Red Hat 9 image at "http://busybox.net/downloads/qemu". This has a
7652.4 kernel, gcc 3.2, make 3.79.1, and glibc 2.3, and is the oldest
766build/deployment environment we still put any effort into maintaining. (If
767anyone takes an interest in older kernels you're welcome to submit patches,
768but the effort would probably be better spent
769<a href="http://www.selenic.com/linux-tiny/">trimming
770down the 2.6 kernel</a>.) Older gcc versions than that are uninteresting since
771we now use c99 features, although
772<a href="http://fabrice.bellard.free.fr/tcc/">tcc</a> might be worth a
773look.</p>
774
775<p>We also test busybox against the current release of uClibc. Older versions
776of uClibc aren't very interesting (they were buggy, and uClibc wasn't really
777usable as a general-purpose C library before version 0.9.26 anyway).</p>
778
779<p>Other unix implementations are mostly uninteresting, since Linux binaries
780have become the new standard for portable Unix programs. Specifically,
781the ubiquity of Linux was cited as the main reason the Intel Binary
782Compatability Standard 2 died, by the standards group organized to name a
783successor to ibcs2: <a href="http://www.telly.org/86open/">the 86open
784project</a>. That project disbanded in 1999 with the endorsement of an
785existing standard: Linux ELF binaries. Since then, the major players at the
786time (such as <a
787href="http://www-03.ibm.com/servers/aix/products/aixos/linux/index.html">AIX</a>, <a
788href="http://www.sun.com/software/solaris/ds/linux_interop.jsp#3">Solaris</a>, and
789<a href="http://www.onlamp.com/pub/a/bsd/2000/03/17/linuxapps.html">FreeBSD</a>)
790have all either grown Linux support or folded.</p>
791
792<p>The major exceptions are newcomer MacOS X, some embedded environments
793(such as newlib+libgloss) which provide a posix environment but not a full
794Linux environment, and environments like Cygwin that provide only partial Linux
795emulation. Also, some embedded Linux systems run a Linux kernel but amputate
796things like the /proc directory to save space.</p>
797
798<p>Supporting these systems is largely a question of providing a clean subset
799of BusyBox's functionality -- whichever applets can easily be made to
800work in that environment. Annotating the configuration system to
801indicate which applets require which prerequisites (such as procfs) is
802also welcome. Other efforts to support these systems (swapping #include
803files to build in different environments, adding adapter code to platform.h,
804adding more extensive special-case supporting infrastructure such as mount's
805legacy mtab support) are handled on a case-by-case basis. Support that can be
806cleanly hidden in platform.h is reasonably attractive, and failing that
807support that can be cleanly separated into a separate conditionally compiled
808file is at least worth a look. Special-case code in the body of an applet is
809something we're trying to avoid.</p>
810
811<hr />
812<h2><a name="tips">Programming tips and tricks.</a></h2>
813
814<p>Various things busybox uses that aren't particularly well documented
815elsewhere.</p>
816
817<hr />
818<h2><a name="tips_encrypted_passwords">Encrypted Passwords</a></h2>
819
820<p>Password fields in /etc/passwd and /etc/shadow are in a special format.
821If the first character isn't '$', then it's an old DES style password. If
822the first character is '$' then the password is actually three fields
823separated by '$' characters:</p>
824<pre>
825 <b>$type$salt$encrypted_password</b>
826</pre>
827
828<p>The "type" indicates which encryption algorithm to use: 1 for MD5 and 2 for SHA1.</p>
829
830<p>The "salt" is a bunch of ramdom characters (generally 8) the encryption
831algorithm uses to perturb the password in a known and reproducible way (such
832as by appending the random data to the unencrypted password, or combining
833them with exclusive or). Salt is randomly generated when setting a password,
834and then the same salt value is re-used when checking the password. (Salt is
835thus stored unencrypted.)</p>
836
837<p>The advantage of using salt is that the same cleartext password encrypted
838with a different salt value produces a different encrypted value.
839If each encrypted password uses a different salt value, an attacker is forced
840to do the cryptographic math all over again for each password they want to
841check. Without salt, they could simply produce a big dictionary of commonly
842used passwords ahead of time, and look up each password in a stolen password
843file to see if it's a known value. (Even if there are billions of possible
844passwords in the dictionary, checking each one is just a binary search against
845a file only a few gigabytes long.) With salt they can't even tell if two
846different users share the same password without guessing what that password
847is and decrypting it. They also can't precompute the attack dictionary for
848a specific password until they know what the salt value is.</p>
849
850<p>The third field is the encrypted password (plus the salt). For md5 this
851is 22 bytes.</p>
852
853<p>The busybox function to handle all this is pw_encrypt(clear, salt) in
854"libbb/pw_encrypt.c". The first argument is the clear text password to be
855encrypted, and the second is a string in "$type$salt$password" format, from
856which the "type" and "salt" fields will be extracted to produce an encrypted
857value. (Only the first two fields are needed, the third $ is equivalent to
858the end of the string.) The return value is an encrypted password in
859/etc/passwd format, with all three $ separated fields. It's stored in
860a static buffer, 128 bytes long.</p>
861
862<p>So when checking an existing password, if pw_encrypt(text,
863old_encrypted_password) returns a string that compares identical to
864old_encrypted_password, you've got the right password. When setting a new
865password, generate a random 8 character salt string, put it in the right
866format with sprintf(buffer, "$%c$%s", type, salt), and feed buffer as the
867second argument to pw_encrypt(text,buffer).</p>
868
869<hr />
870<h2><a name="tips_vfork">Fork and vfork</a></h2>
871
872<p>On systems that haven't got a Memory Management Unit, fork() is unreasonably
873expensive to implement (and sometimes even impossible), so a less capable
874function called vfork() is used instead. (Using vfork() on a system with an
875MMU is like pounding a nail with a wrench. Not the best tool for the job, but
876it works.)</p>
877
878<p>Busybox hides the difference between fork() and vfork() in
879libbb/bb_fork_exec.c. If you ever want to fork and exec, use bb_fork_exec()
880(which returns a pid and takes the same arguments as execve(), although in
881this case envp can be NULL) and don't worry about it. This description is
882here in case you want to know why that does what it does.</p>
883
884<p>Implementing fork() depends on having a Memory Management Unit. With an
885MMU then you can simply set up a second set of page tables and share the
886physical memory via copy-on-write. So a fork() followed quickly by exec()
887only copies a few pages of the parent's memory, just the ones it changes
888before freeing them.</p>
889
890<p>With a very primitive MMU (using a base pointer plus length instead of page
891tables, which can provide virtual addresses and protect processes from each
892other, but no copy on write) you can still implement fork. But it's
893unreasonably expensive, because you have to copy all the parent process'
894memory into the new process (which could easily be several megabytes per fork).
895And you have to do this even though that memory gets freed again as soon as the
896exec happens. (This is not just slow and a waste of space but causes memory
897usage spikes that can easily cause the system to run out of memory.)</p>
898
899<p>Without even a primitive MMU, you have no virtual addresses. Every process
900can reach out and touch any other process' memory, because all pointers are to
901physical addresses with no protection. Even if you copy a process' memory to
902new physical addresses, all of its pointers point to the old objects in the
903old process. (Searching through the new copy's memory for pointers and
904redirect them to the new locations is not an easy problem.)</p>
905
906<p>So with a primitive or missing MMU, fork() is just not a good idea.</p>
907
908<p>In theory, vfork() is just a fork() that writeably shares the heap and stack
909rather than copying it (so what one process writes the other one sees). In
910practice, vfork() has to suspend the parent process until the child does exec,
911at which point the parent wakes up and resumes by returning from the call to
912vfork(). All modern kernel/libc combinations implement vfork() to put the
913parent to sleep until the child does its exec. There's just no other way to
914make it work: the parent has to know the child has done its exec() or exit()
915before it's safe to return from the function it's in, so it has to block
916until that happens. In fact without suspending the parent there's no way to
917even store separate copies of the return value (the pid) from the vfork() call
918itself: both assignments write into the same memory location.</p>
919
920<p>One way to understand (and in fact implement) vfork() is this: imagine
921the parent does a setjmp and then continues on (pretending to be the child)
922until the exec() comes around, then the _exec_ does the actual fork, and the
923parent does a longjmp back to the original vfork call and continues on from
924there. (It thus becomes obvious why the child can't return, or modify
925local variables it doesn't want the parent to see changed when it resumes.)
926
927<p>Note a common mistake: the need for vfork doesn't mean you can't have two
928processes running at the same time. It means you can't have two processes
929sharing the same memory without stomping all over each other. As soon as
930the child calls exec(), the parent resumes.</p>
931
932<p>If the child's attempt to call exec() fails, the child should call _exit()
933rather than a normal exit(). This avoids any atexit() code that might confuse
934the parent. (The parent should never call _exit(), only a vforked child that
935failed to exec.)</p>
936
937<p>(Now in theory, a nommu system could just copy the _stack_ when it forks
938(which presumably is much shorter than the heap), and leave the heap shared.
939Even with no MMU at all
940In practice, you've just wound up in a multi-threaded situation and you can't
941do a malloc() or free() on your heap without freeing the other process' memory
942(and if you don't have the proper locking for being threaded, corrupting the
943heap if both of you try to do it at the same time and wind up stomping on
944each other while traversing the free memory lists). The thing about vfork is
945that it's a big red flag warning "there be dragons here" rather than
946something subtle and thus even more dangerous.)</p>
947
948<hr />
949<h2><a name="tips_sort_read">Short reads and writes</a></h2>
950
951<p>Busybox has special functions, bb_full_read() and bb_full_write(), to
952check that all the data we asked for got read or written. Is this a real
953world consideration? Try the following:</p>
954
955<pre>while true; do echo hello; sleep 1; done | tee out.txt</pre>
956
957<p>If tee is implemented with bb_full_read(), tee doesn't display output
958in real time but blocks until its entire input buffer (generally a couple
959kilobytes) is read, then displays it all at once. In that case, we _want_
960the short read, for user interface reasons. (Note that read() should never
961return 0 unless it has hit the end of input, and an attempt to write 0
962bytes should be ignored by the OS.)</p>
963
964<p>As for short writes, play around with two processes piping data to each
965other on the command line (cat bigfile | gzip &gt; out.gz) and suspend and
966resume a few times (ctrl-z to suspend, "fg" to resume). The writer can
967experience short writes, which are especially dangerous because if you don't
968notice them you'll discard data. They can also happen when a system is under
969load and a fast process is piping to a slower one. (Such as an xterm waiting
970on x11 when the scheduler decides X is being a CPU hog with all that
971text console scrolling...)</p>
972
973<p>So will data always be read from the far end of a pipe at the
974same chunk sizes it was written in? Nope. Don't rely on that. For one
975counterexample, see <a href="http://www.faqs.org/rfcs/rfc896.html">rfc 896
976for Nagle's algorithm</a>, which waits a fraction of a second or so before
977sending out small amounts of data through a TCP/IP connection in case more
978data comes in that can be merged into the same packet. (In case you were
979wondering why action games that use TCP/IP set TCP_NODELAY to lower the latency
980on their their sockets, now you know.)</p>
981
982<hr />
983<h2><a name="tips_memory">Memory used by relocatable code, PIC, and static linking.</a></h2>
984
985<p>The downside of standard dynamic linking is that it results in self-modifying
986code. Although each executable's pages are mmaped() into a process' address
987space from the executable file and are thus naturally shared between processes
988out of the page cache, the library loader (ld-linux.so.2 or ld-uClibc.so.0)
989writes to these pages to supply addresses for relocatable symbols. This
990dirties the pages, triggering copy-on-write allocation of new memory for each
991processes' dirtied pages.</p>
992
993<p>One solution to this is Position Independent Code (PIC), a way of linking
994a file so all the relocations are grouped together. This dirties fewer
995pages (often just a single page) for each process' relocations. The down
996side is this results in larger executables, which take up more space on disk
997(and a correspondingly larger space in memory). But when many copies of the
998same program are running, PIC dynamic linking trades a larger disk footprint
999for a smaller memory footprint, by sharing more pages.</p>
1000
1001<p>A third solution is static linking. A statically linked program has no
1002relocations, and thus the entire executable is shared between all running
1003instances. This tends to have a significantly larger disk footprint, but
1004on a system with only one or two executables, shared libraries aren't much
1005of a win anyway.</p>
1006
1007<p>You can tell the glibc linker to display debugging information about its
1008relocations with the environment variable "LD_DEBUG". Try
1009"LD_DEBUG=help /bin/true" for a list of commands. Learning to interpret
1010"LD_DEBUG=statistics cat /proc/self/statm" could be interesting.</p>
1011
1012<p>For more on this topic, here's Rich Felker:</p>
1013<blockquote>
1014<p>Dynamic linking (without fixed load addresses) fundamentally requires
1015at least one dirty page per dso that uses symbols. Making calls (but
1016never taking the address explicitly) to functions within the same dso
1017does not require a dirty page by itself, but will with ELF unless you
1018use -Bsymbolic or hidden symbols when linking.</p>
1019
1020<p>ELF uses significant additional stack space for the kernel to pass all
1021the ELF data structures to the newly created process image. These are
1022located above the argument list and environment. This normally adds 1
1023dirty page to the process size.</p>
1024
1025<p>The ELF dynamic linker has its own data segment, adding one or more
1026dirty pages. I believe it also performs relocations on itself.</p>
1027
1028<p>The ELF dynamic linker makes significant dynamic allocations to manage
1029the global symbol table and the loaded dso's. This data is never
1030freed. It will be needed again if libdl is used, so unconditionally
1031freeing it is not possible, but normal programs do not use libdl. Of
1032course with glibc all programs use libdl (due to nsswitch) so the
1033issue was never addressed.</p>
1034
1035<p>ELF also has the issue that segments are not page-aligned on disk.
1036This saves up to 4k on disk, but at the expense of using an additional
1037dirty page in most cases, due to a large portion of the first data
1038page being filled with a duplicate copy of the last text page.</p>
1039
1040<p>The above is just a partial list of the tiny memory penalties of ELF
1041dynamic linking, which eventually add up to quite a bit. The smallest
1042I've been able to get a process down to is 8 dirty pages, and the
1043above factors seem to mostly account for it (but some were difficult
1044to measure).</p>
1045</blockquote>
1046
1047<hr />
1048<h2><a name="tips_kernel_headers"></a>Including kernel headers</h2>
1049
1050<p>The &quot;linux&quot; or &quot;asm&quot; directories of /usr/include
1051contain Linux kernel
1052headers, so that the C library can talk directly to the Linux kernel. In
1053a perfect world, applications shouldn't include these headers directly, but
1054we don't live in a perfect world.</p>
1055
1056<p>For example, Busybox's losetup code wants linux/loop.c because nothing else
1057#defines the structures to call the kernel's loopback device setup ioctls.
1058Attempts to cut and paste the information into a local busybox header file
1059proved incredibly painful, because portions of the loop_info structure vary by
1060architecture, namely the type __kernel_dev_t has different sizes on alpha,
1061arm, x86, and so on. Meaning we either #include &lt;linux/posix_types.h&gt; or
1062we hardwire #ifdefs to check what platform we're building on and define this
1063type appropriately for every single hardware architecture supported by
1064Linux, which is simply unworkable.</p>
1065
1066<p>This is aside from the fact that the relevant type defined in
1067posix_types.h was renamed to __kernel_old_dev_t during the 2.5 series, so
1068to cut and paste the structure into our header we have to #include
1069&lt;linux/version.h&gt; to figure out which name to use. (What we actually
1070do is
1071check if we're building on 2.6, and if so just use the new 64 bit structure
1072instead to avoid the rename entirely.) But we still need the version
1073check, since 2.4 didn't have the 64 bit structure.</p>
1074
1075<p>The BusyBox developers spent <u>two years</u> trying to figure
1076out a clean way to do all this. There isn't one. The losetup in the
1077util-linux package from kernel.org isn't doing it cleanly either, they just
1078hide the ugliness by nesting #include files. Their mount/loop.h
1079#includes &quot;my_dev_t.h&quot;, which #includes &lt;linux/posix_types.h&gt;
1080and &lt;linux/version.h&gt; just like we do. There simply is no alternative.
1081</p>
1082
1083<p>Just because directly #including kernel headers is sometimes
1084unavoidable doesn't me we should include them when there's a better
1085way to do it. However, block copying information out of the kernel headers
1086is not a better way.</p>
1087
1088<hr />
1089<h2><a name="who">Who are the BusyBox developers?</a></h2>
1090
1091<p>The following login accounts currently exist on busybox.net. (I.E. these
1092people can commit <a href="http://busybox.net/downloads/patches/">patches</a>
1093into subversion for the BusyBox, uClibc, and buildroot projects.)</p>
1094
1095<pre>
1096aldot :Bernhard Reutner-Fischer
1097andersen :Erik Andersen - uClibc and BuildRoot maintainer.
1098bug1 :Glenn McGrath
1099davidm :David McCullough
1100gkajmowi :Garrett Kajmowicz - uClibc++ maintainer
1101jbglaw :Jan-Benedict Glaw
1102jocke :Joakim Tjernlund
1103landley :Rob Landley
1104lethal :Paul Mundt
1105mjn3 :Manuel Novoa III
1106osuadmin :osuadmin
1107pgf :Paul Fox
1108pkj :Peter Kjellerstedt
1109prpplague :David Anders
1110psm :Peter S. Mazinger
1111russ :Russ Dill
1112sandman :Robert Griebl
1113sjhill :Steven J. Hill
1114solar :Ned Ludd
1115timr :Tim Riker
1116tobiasa :Tobias Anderberg
1117vapier :Mike Frysinger
1118vda :Denys Vlasenko - BusyBox maintainer
1119</pre>
1120
1121<p>The following accounts used to exist on busybox.net, but don't anymore so
1122I can't ask /etc/passwd for their names. Rob Wentworth
1123&lt;robwen at gmail.com&gt; asked Google and recovered the names:</p>
1124
1125<pre>
1126aaronl :Aaron Lehmann
1127beppu :John Beppu
1128dwhedon :David Whedon
1129erik :Erik Andersen
1130gfeldman :Gennady Feldman
1131jimg :Jim Gleason
1132kraai :Matt Kraai
1133markw :Mark Whitley
1134miles :Miles Bader
1135proski :Pavel Roskin
1136rjune :Richard June
1137tausq :Randolph Chung
1138vodz :Vladimir N. Oleynik
1139</pre>
1140
1141
1142<br>
1143<br>
1144<br>
1145
1146<!--#include file="footer.html" -->
diff --git a/docs/busybox.net/about.html b/docs/busybox.net/about.html
deleted file mode 100644
index 35809c315..000000000
--- a/docs/busybox.net/about.html
+++ /dev/null
@@ -1,24 +0,0 @@
1<!--#include file="header.html" -->
2
3<h3>BusyBox: The Swiss Army Knife of Embedded Linux</h3>
4
5<p>BusyBox combines tiny versions of many common UNIX utilities into a single
6small executable. It provides replacements for most of the utilities you
7usually find in GNU fileutils, shellutils, etc. The utilities in BusyBox
8generally have fewer options than their full-featured GNU cousins; however,
9the options that are included provide the expected functionality and behave
10very much like their GNU counterparts. BusyBox provides a fairly complete
11environment for any small or embedded system.</p>
12
13<p>BusyBox has been written with size-optimization and limited resources in
14mind. It is also extremely modular so you can easily include or exclude
15commands (or features) at compile time. This makes it easy to customize
16your embedded systems. To create a working system, just add some device
17nodes in /dev, a few configuration files in /etc, and a Linux kernel.</p>
18
19<p>BusyBox is maintained by
20<a href="mailto:vda.linux@googlemail.com">Denys Vlasenko</a>,
21and licensed under the <a href="license.html">GNU GENERAL PUBLIC LICENSE</a>
22version 2.</p>
23
24<!--#include file="footer.html" -->
diff --git a/docs/busybox.net/busybox-growth.ps b/docs/busybox.net/busybox-growth.ps
deleted file mode 100644
index 2379defa4..000000000
--- a/docs/busybox.net/busybox-growth.ps
+++ /dev/null
@@ -1,404 +0,0 @@
1%!PS-Adobe-2.0
2%%Title: busybox-growth.ps
3%%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347
4%%CreationDate: Tue Apr 10 14:03:36 2001
5%%DocumentFonts: (atend)
6%%BoundingBox: 50 40 554 770
7%%Orientation: Landscape
8%%Pages: (atend)
9%%EndComments
10/gnudict 120 dict def
11gnudict begin
12/Color true def
13/Solid true def
14/gnulinewidth 5.000 def
15/userlinewidth gnulinewidth def
16/vshift -46 def
17/dl {10 mul} def
18/hpt_ 31.5 def
19/vpt_ 31.5 def
20/hpt hpt_ def
21/vpt vpt_ def
22/M {moveto} bind def
23/L {lineto} bind def
24/R {rmoveto} bind def
25/V {rlineto} bind def
26/vpt2 vpt 2 mul def
27/hpt2 hpt 2 mul def
28/Lshow { currentpoint stroke M
29 0 vshift R show } def
30/Rshow { currentpoint stroke M
31 dup stringwidth pop neg vshift R show } def
32/Cshow { currentpoint stroke M
33 dup stringwidth pop -2 div vshift R show } def
34/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
35 /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def
36/DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
37 {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
38/BL { stroke gnulinewidth 2 mul setlinewidth } def
39/AL { stroke gnulinewidth 2 div setlinewidth } def
40/UL { gnulinewidth mul /userlinewidth exch def } def
41/PL { stroke userlinewidth setlinewidth } def
42/LTb { BL [] 0 0 0 DL } def
43/LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
44/LT0 { PL [] 1 0 0 DL } def
45/LT1 { PL [4 dl 2 dl] 0 1 0 DL } def
46/LT2 { PL [2 dl 3 dl] 0 0 1 DL } def
47/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
48/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
49/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
50/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
51/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
52/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def
53/Pnt { stroke [] 0 setdash
54 gsave 1 setlinecap M 0 0 V stroke grestore } def
55/Dia { stroke [] 0 setdash 2 copy vpt add M
56 hpt neg vpt neg V hpt vpt neg V
57 hpt vpt V hpt neg vpt V closepath stroke
58 Pnt } def
59/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V
60 currentpoint stroke M
61 hpt neg vpt neg R hpt2 0 V stroke
62 } def
63/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
64 0 vpt2 neg V hpt2 0 V 0 vpt2 V
65 hpt2 neg 0 V closepath stroke
66 Pnt } def
67/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M
68 hpt2 vpt2 neg V currentpoint stroke M
69 hpt2 neg 0 R hpt2 vpt2 V stroke } def
70/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
71 hpt neg vpt -1.62 mul V
72 hpt 2 mul 0 V
73 hpt neg vpt 1.62 mul V closepath stroke
74 Pnt } def
75/Star { 2 copy Pls Crs } def
76/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M
77 0 vpt2 neg V hpt2 0 V 0 vpt2 V
78 hpt2 neg 0 V closepath fill } def
79/TriUF { stroke [] 0 setdash vpt 1.12 mul add M
80 hpt neg vpt -1.62 mul V
81 hpt 2 mul 0 V
82 hpt neg vpt 1.62 mul V closepath fill } def
83/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
84 hpt neg vpt 1.62 mul V
85 hpt 2 mul 0 V
86 hpt neg vpt -1.62 mul V closepath stroke
87 Pnt } def
88/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M
89 hpt neg vpt 1.62 mul V
90 hpt 2 mul 0 V
91 hpt neg vpt -1.62 mul V closepath fill} def
92/DiaF { stroke [] 0 setdash vpt add M
93 hpt neg vpt neg V hpt vpt neg V
94 hpt vpt V hpt neg vpt V closepath fill } def
95/Pent { stroke [] 0 setdash 2 copy gsave
96 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
97 closepath stroke grestore Pnt } def
98/PentF { stroke [] 0 setdash gsave
99 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
100 closepath fill grestore } def
101/Circle { stroke [] 0 setdash 2 copy
102 hpt 0 360 arc stroke Pnt } def
103/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def
104/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def
105/C1 { BL [] 0 setdash 2 copy moveto
106 2 copy vpt 0 90 arc closepath fill
107 vpt 0 360 arc closepath } bind def
108/C2 { BL [] 0 setdash 2 copy moveto
109 2 copy vpt 90 180 arc closepath fill
110 vpt 0 360 arc closepath } bind def
111/C3 { BL [] 0 setdash 2 copy moveto
112 2 copy vpt 0 180 arc closepath fill
113 vpt 0 360 arc closepath } bind def
114/C4 { BL [] 0 setdash 2 copy moveto
115 2 copy vpt 180 270 arc closepath fill
116 vpt 0 360 arc closepath } bind def
117/C5 { BL [] 0 setdash 2 copy moveto
118 2 copy vpt 0 90 arc
119 2 copy moveto
120 2 copy vpt 180 270 arc closepath fill
121 vpt 0 360 arc } bind def
122/C6 { BL [] 0 setdash 2 copy moveto
123 2 copy vpt 90 270 arc closepath fill
124 vpt 0 360 arc closepath } bind def
125/C7 { BL [] 0 setdash 2 copy moveto
126 2 copy vpt 0 270 arc closepath fill
127 vpt 0 360 arc closepath } bind def
128/C8 { BL [] 0 setdash 2 copy moveto
129 2 copy vpt 270 360 arc closepath fill
130 vpt 0 360 arc closepath } bind def
131/C9 { BL [] 0 setdash 2 copy moveto
132 2 copy vpt 270 450 arc closepath fill
133 vpt 0 360 arc closepath } bind def
134/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
135 2 copy moveto
136 2 copy vpt 90 180 arc closepath fill
137 vpt 0 360 arc closepath } bind def
138/C11 { BL [] 0 setdash 2 copy moveto
139 2 copy vpt 0 180 arc closepath fill
140 2 copy moveto
141 2 copy vpt 270 360 arc closepath fill
142 vpt 0 360 arc closepath } bind def
143/C12 { BL [] 0 setdash 2 copy moveto
144 2 copy vpt 180 360 arc closepath fill
145 vpt 0 360 arc closepath } bind def
146/C13 { BL [] 0 setdash 2 copy moveto
147 2 copy vpt 0 90 arc closepath fill
148 2 copy moveto
149 2 copy vpt 180 360 arc closepath fill
150 vpt 0 360 arc closepath } bind def
151/C14 { BL [] 0 setdash 2 copy moveto
152 2 copy vpt 90 360 arc closepath fill
153 vpt 0 360 arc } bind def
154/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
155 vpt 0 360 arc closepath } bind def
156/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
157 neg 0 rlineto closepath } bind def
158/Square { dup Rec } bind def
159/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def
160/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def
161/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def
162/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def
163/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def
164/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def
165/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill
166 exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def
167/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def
168/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
169 2 copy vpt Square fill
170 Bsquare } bind def
171/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def
172/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def
173/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
174 Bsquare } bind def
175/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
176 Bsquare } bind def
177/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def
178/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
179 2 copy vpt Square fill Bsquare } bind def
180/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
181 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def
182/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def
183/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def
184/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def
185/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def
186/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def
187/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def
188/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def
189/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def
190/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def
191/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def
192/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def
193/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def
194/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def
195/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def
196/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def
197/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def
198/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def
199/DiaE { stroke [] 0 setdash vpt add M
200 hpt neg vpt neg V hpt vpt neg V
201 hpt vpt V hpt neg vpt V closepath stroke } def
202/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M
203 0 vpt2 neg V hpt2 0 V 0 vpt2 V
204 hpt2 neg 0 V closepath stroke } def
205/TriUE { stroke [] 0 setdash vpt 1.12 mul add M
206 hpt neg vpt -1.62 mul V
207 hpt 2 mul 0 V
208 hpt neg vpt 1.62 mul V closepath stroke } def
209/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M
210 hpt neg vpt 1.62 mul V
211 hpt 2 mul 0 V
212 hpt neg vpt -1.62 mul V closepath stroke } def
213/PentE { stroke [] 0 setdash gsave
214 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
215 closepath stroke grestore } def
216/CircE { stroke [] 0 setdash
217 hpt 0 360 arc stroke } def
218/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def
219/DiaW { stroke [] 0 setdash vpt add M
220 hpt neg vpt neg V hpt vpt neg V
221 hpt vpt V hpt neg vpt V Opaque stroke } def
222/BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M
223 0 vpt2 neg V hpt2 0 V 0 vpt2 V
224 hpt2 neg 0 V Opaque stroke } def
225/TriUW { stroke [] 0 setdash vpt 1.12 mul add M
226 hpt neg vpt -1.62 mul V
227 hpt 2 mul 0 V
228 hpt neg vpt 1.62 mul V Opaque stroke } def
229/TriDW { stroke [] 0 setdash vpt 1.12 mul sub M
230 hpt neg vpt 1.62 mul V
231 hpt 2 mul 0 V
232 hpt neg vpt -1.62 mul V Opaque stroke } def
233/PentW { stroke [] 0 setdash gsave
234 translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
235 Opaque stroke grestore } def
236/CircW { stroke [] 0 setdash
237 hpt 0 360 arc Opaque stroke } def
238/BoxFill { gsave Rec 1 setgray fill grestore } def
239end
240%%EndProlog
241%%Page: 1 1
242gnudict begin
243gsave
24450 50 translate
2450.100 0.100 scale
24690 rotate
2470 -5040 translate
2480 setgray
249newpath
250(Helvetica) findfont 140 scalefont setfont
2511.000 UL
252LTb
253560 420 M
25463 0 V
2556409 0 R
256-63 0 V
257476 420 M
258(0) Rshow
259560 1056 M
26063 0 V
2616409 0 R
262-63 0 V
263-6493 0 R
264(100) Rshow
265560 1692 M
26663 0 V
2676409 0 R
268-63 0 V
269-6493 0 R
270(200) Rshow
271560 2328 M
27263 0 V
2736409 0 R
274-63 0 V
275-6493 0 R
276(300) Rshow
277560 2964 M
27863 0 V
2796409 0 R
280-63 0 V
281-6493 0 R
282(400) Rshow
283560 3600 M
28463 0 V
2856409 0 R
286-63 0 V
287-6493 0 R
288(500) Rshow
289560 4236 M
29063 0 V
2916409 0 R
292-63 0 V
293-6493 0 R
294(600) Rshow
295560 4872 M
29663 0 V
2976409 0 R
298-63 0 V
299-6493 0 R
300(700) Rshow
3011531 420 M
3020 63 V
3030 4389 R
3040 -63 V
3050 -4529 R
306(400) Cshow
3072825 420 M
3080 63 V
3090 4389 R
3100 -63 V
3110 -4529 R
312(600) Cshow
3134120 420 M
3140 63 V
3150 4389 R
3160 -63 V
3170 -4529 R
318(800) Cshow
3195414 420 M
3200 63 V
3210 4389 R
3220 -63 V
3230 -4529 R
324(1000) Cshow
3256708 420 M
3260 63 V
3270 4389 R
3280 -63 V
3290 -4529 R
330(1200) Cshow
3311.000 UL
332LTb
333560 420 M
3346472 0 V
3350 4452 V
336-6472 0 V
337560 420 L
3380 2646 M
339currentpoint gsave translate 90 rotate 0 0 M
340(tar.gz size \(Kb\)) Cshow
341grestore
3423796 140 M
343(time \(days since Jan 1, 1998\)) Cshow
3441.000 UL
345LT0
346696 420 M
3470 593 V
3481255 0 V
3490 15 V
350214 0 V
3510 6 V
352958 0 V
3530 1 V
354-84 0 V
3550 37 V
356168 0 V
3570 262 V
35813 0 V
3590 56 V
36091 0 V
3610 33 V
3626 0 V
3630 1 V
36419 0 V
3650 11 V
36620 0 V
3670 13 V
36832 0 V
3690 104 V
37052 0 V
3710 27 V
37265 0 V
3730 15 V
37439 0 V
3750 126 V
376174 0 V
3770 103 V
37852 0 V
3790 49 V
380175 0 V
3810 56 V
382433 0 V
3830 661 V
384415 0 V
3850 857 V
386123 0 V
3870 -291 V
388498 0 V
3890 208 V
390505 0 V
3910 66 V
392291 0 V
3930 115 V
394311 0 V
3950 449 V
396162 0 V
3970 309 V
398stroke
399grestore
400end
401showpage
402%%Trailer
403%%DocumentFonts: Helvetica
404%%Pages: 1
diff --git a/docs/busybox.net/copyright.txt b/docs/busybox.net/copyright.txt
deleted file mode 100644
index 397475632..000000000
--- a/docs/busybox.net/copyright.txt
+++ /dev/null
@@ -1,30 +0,0 @@
1
2The code and graphics on this website (and it's mirror sites, if any) are
3Copyright (c) 1999-2004 by Erik Andersen. All rights reserved.
4Copyright (c) 2005-2006 Rob Landley.
5
6Documents on this Web site including their graphical elements, design, and
7layout are protected by trade dress and other laws and MAY BE COPIED OR
8IMITATED IN WHOLE OR IN PART. THIS WEBSITE IS LICENSED FREE OF CHARGE, THERE
9IS NO WARRANTY FOR THE WEBSITE TO THE EXTENT PERMITTED BY APPLICABLE LAW.
10SHOULD THIS WEBSITE PROVE DEFECTIVE, YOU MAY ASSUME THAT SOMEONE MIGHT GET
11AROUND TO SERVICING, REPAIRING OR CORRECTING IT SOMETIME WHEN THEY HAVE NOTHING
12BETTER TO DO. REGARDLESS, YOU GET TO KEEP BOTH PIECES.
13
14IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY
15COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THIS
16WEBSITE AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
17GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
18INABILITY TO USE THIS WEBSITE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR
19LOSS OF HAIR, LOSS OF LIFE, LOSS OF MEMORY, LOSS OF YOUR CARKEYS, MISPLACEMENT
20OF YOUR PAYCHECK, OR COMMANDER DATA BEING RENDERED UNABLE TO ASSIST THE
21STARFLEET OFFICERS ABORD THE STARSHIP ENTERPRISE TO RECALIBRATE THE MAIN
22DEFLECTOR ARRAY, LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
23WEBSITE TO OPERATE WITH YOUR WEBBROWSER), EVEN IF SUCH HOLDER OR OTHER PARTY
24HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
25
26You have been warned.
27
28You can contact the webmaster at <rob@landley.net> if you have some sort
29of problem with this.
30
diff --git a/docs/busybox.net/developer.html b/docs/busybox.net/developer.html
deleted file mode 100644
index ce50555ae..000000000
--- a/docs/busybox.net/developer.html
+++ /dev/null
@@ -1,92 +0,0 @@
1<!--#include file="header.html" -->
2
3<h3>Prerequisites</h3>
4<p>
5<ul>
6<li>Send several <em>sensible</em> patches to the <a href="lists.html" title="Mailing list">Mailing list</a>.</li>
7<li>Help <em>users</em>, answer their questions, guide them, be helpful and friendly.</li>
8<li>Repeat above.
9</ul>
10</p>
11<p>
12If you feel comfortable with the above and have proven to continually
13fulfill these requirements, or somebody asks you to apply for write-access
14to the repository who itself is maintainer of a project, then please apply
15for an account (if needed).
16</p>
17<h3>Morris Dancing</h3>
18
19<p>Subversion commit access requires an account on Morris. The server
20behind busybox.net and uclibc.org. If you want to be able to commit things to
21Subversion, first contribute some stuff to show you are serious, can handle
22some responsibility, and that your patches don't generally need a lot of
23cleanup. Then, very nicely ask one of us
24(<a href="mailto:vda.linux@googlemail.com">Denys Vlasenko</a> for primarily BusyBox, or
25<a href="mailto:rep&#46;<literal>dot</>&#46;nop@gmail.com">Bernhard Reutner-Fischer</a> primarily for uClibc)
26for an account.</p>
27
28<p>If you're approved for an account, you'll need to send an email from your
29preferred contact email address with the username you'd like to use when
30committing changes to GIT, and attach a public ssh key to access your account
31with.</p>
32
33<p>If you don't currently have an ssh version 2 DSA key at least 4096 bits
34long, you can generate a key using the command
35<b>ssh-keygen -b 4096 -t dsa</b>
36and hitting enter at the prompts.
37This will create the files <b>~/.ssh/id_dsa</b> and <b>~/.ssh/id_dsa.pub</b>
38You must then send the content of 'id_dsa.pub' to me so I can set up your
39account. (The content of 'id_dsa' should of course be kept secret, anyone
40who has that can access any account that's installed your public key in
41its <b>.ssh/authorized_keys</b> file.)</p>
42
43<p>Note that if you would prefer to keep your communications with us
44private, you can encrypt your email using
45<a href="http://busybox.net/~vda/vda_pubkey.gpg">Denys' public key</a> or
46<a href="http://uClibc.org/~aldot/gpg.asc">Bernhard's public key</a>.
47</p>
48
49<p>Once you are setup with an account, you will need to use your account to
50checkout a copy of BusyBox from GIT:</p>
51
52<p><b>git+ssh://username@git.busybox.net/git/busybox busybox.mine</b></p>
53<p>or</p>
54<p><b>git+ssh://username@git.uClibc.org/git/uClibc uClibc.tmp</b></p>
55
56<p>You must change <em>username</em> to your own username, or omit
57it if it's the same as your local username.</p>
58
59<p>You can then enter the newly checked out project directory, make changes,
60check your changes, diff your changes, revert your changes, and and commit your
61changes using commands such as:</p>
62
63<b><pre>
64git diff
65git format-patch -s
66git status
67git revert <revert-hash>
68EDITOR=vi git commit -s
69git log
70git push -v --thin
71git help
72</pre></b>
73
74<p>For additional detail on how to use
75<a href="http://www.kernel.org/pub/software/scm/git/">GIT</a>, please visit the
76<a href="http://git.or.cz/">GIT overview</a> site.
77You might also want to read online the <a
78href="http://www.kernel.org/pub/software/scm/git/docs">manpages</a>
79or
80<a href="http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html">tutorial</a>.
81</p>
82
83<p>A morris account also gives you a personal web page
84(http://busybox.net/~username comes from ~/public_html on morris), and of
85course a shell prompt you can ssh into (as a regular user, root access is
86reserved for folks doing maintenancy stuff only). But keep in mind an
87account on Morris is a
88priviledge, not a requirement. Most contributors to busybox and uClibc
89haven't got one, and accounts are handed out to make the project maintainers'
90lives easier, not because &quot;you deserve it&quot;.</p>
91
92<!--#include file="footer.html" -->
diff --git a/docs/busybox.net/download.html b/docs/busybox.net/download.html
deleted file mode 100644
index 34195b6f1..000000000
--- a/docs/busybox.net/download.html
+++ /dev/null
@@ -1,60 +0,0 @@
1<!--#include file="header.html" -->
2
3
4
5<h3>Download</h3>
6
7<p>
8Source for the latest release can always be
9downloaded from <a href="downloads/">http://www.busybox.net/downloads/</a>.
10
11<p>
12Each 1.x branch has bug fix releases after initial 1.x.0 release.
13Also there are patches on top of latest bug fix release.
14<p>
15Latest releases and patch directories for each branch:
16<br>
17<a href="http://busybox.net/downloads/busybox-1.10.1.tar.bz2">1.10.1</a>,
18<a href="http://busybox.net/downloads/fixes-1.10.1/">patches</a>,
19<br>
20<a href="http://busybox.net/downloads/busybox-1.9.2.tar.bz2">1.9.2</a>,
21<a href="http://busybox.net/downloads/fixes-1.9.2/">patches</a>,
22<br>
23<a href="http://busybox.net/downloads/busybox-1.8.3.tar.bz2">1.8.3</a>,
24<a href="http://busybox.net/downloads/fixes-1.8.3/">patches</a>,
25<br>
26<a href="http://busybox.net/downloads/busybox-1.7.5.tar.bz2">1.7.5</a>,
27<a href="http://busybox.net/downloads/fixes-1.7.5/">patches</a>,
28<br>
29<a href="http://busybox.net/downloads/busybox-1.6.2.tar.bz2">1.6.2</a>,
30<a href="http://busybox.net/downloads/fixes-1.6.2/">patches</a>,
31<br>
32<a href="http://busybox.net/downloads/busybox-1.5.2.tar.bz2">1.5.2</a>,
33<a href="http://busybox.net/downloads/fixes-1.5.2/">patches</a>,
34<br>
35<a href="http://busybox.net/downloads/busybox-1.4.2.tar.bz2">1.4.2</a>,
36<a href="http://busybox.net/downloads/fixes-1.4.2/">patches</a>,
37<br>
38<a href="http://busybox.net/downloads/busybox-1.3.2.tar.bz2">1.3.2</a>,
39<a href="http://busybox.net/downloads/fixes-1.3.2/">patches</a>.
40
41<p>
42You can also obtain <a href="downloads/snapshots/">Daily Snapshots</a> of
43the latest development source tree for those wishing to follow BusyBox development,
44but cannot or do not wish to use Subversion (svn).
45
46<ul>
47 <li> Click here to <a href="http://sources.busybox.net/index.py/trunk/busybox/">browse the source tree</a>.
48 </li>
49
50 <li>Anonymous <a href="subversion.html">Subversion access</a> is available.
51 </li>
52
53 <li>For those that are actively contributing obtaining
54 <a href="developer.html">Subversion read/write access</a> is also possible.
55 </li>
56
57</ul>
58
59<!--#include file="footer.html" -->
60
diff --git a/docs/busybox.net/fix.html b/docs/busybox.net/fix.html
deleted file mode 100644
index 7bd7fe0f4..000000000
--- a/docs/busybox.net/fix.html
+++ /dev/null
@@ -1,15 +0,0 @@
1<!--#include file="header.html" -->
2
3<h3>How to get your patch added to "hot fixes"</h3>
4
5<p> If you found a regression or severe bug in busybox, and you have a patch
6 for it, and you want to see it added to "hot fixes", please rediff your
7 patch against corresponding unmodified busybox source and send it to
8 <a href="mailto:busybox@busybox.net">the mailing list</a>.
9</p>
10
11<br>
12<br>
13<br>
14
15<!--#include file="footer.html" -->
diff --git a/docs/busybox.net/footer.html b/docs/busybox.net/footer.html
deleted file mode 100644
index 066709237..000000000
--- a/docs/busybox.net/footer.html
+++ /dev/null
@@ -1,51 +0,0 @@
1<!-- Footer -->
2
3
4 </td>
5 </tr>
6 </table>
7
8<hr />
9
10
11 <table width="100%">
12 <tr>
13 <td width="60%">
14 <font face="arial, helvetica, sans-serif" size="-1">
15 <!--div style="font-family: arial, helvetica, sans-serif; font-size: 80%;" -->
16 <a href="/copyright.txt">Copyright &copy; 1999-2008 Erik Andersen</a>
17 <br>
18 Mail all comments, insults, suggestions and bribes to
19 <br>
20 Denys Vlasenko <a href="mailto:vda.linux@googlemail.com">vda.linux@googlemail.com</a><br>
21 </font>
22 <!--/div-->
23 </td>
24
25 <td>
26 <a href="http://www.vim.org/"><img border="0"
27 width="88" height="31"
28 src="images/written.in.vi.png"
29 alt="This site created with the vi editor" /></a>
30 </td>
31
32 <td>
33 <a href="http://osuosl.org/"><img border="0"
34 width="114" height="63"
35 src="images/osuosl.png"
36 alt="This site is kindly hosted by OSL" /></a>
37 </td>
38<!--
39 <td>
40 <a href="http://validator.w3.org/check?uri=referer"><img
41 border="0" height="31" width="88"
42 src="images/valid-html401.png"
43 alt="Valid HTML" /></a>
44 </td>
45-->
46 </tr>
47 </table>
48
49 </body>
50</html>
51
diff --git a/docs/busybox.net/header.html b/docs/busybox.net/header.html
deleted file mode 100644
index 16f3d7aea..000000000
--- a/docs/busybox.net/header.html
+++ /dev/null
@@ -1,92 +0,0 @@
1<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
2
3<html>
4 <head>
5 <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
6 <title>BusyBox</title>
7 <style type="text/css">
8 body {
9 background-color: #DEE2DE;
10 color: #000000;
11 font-family: lucida, helvetica, arial;
12 font-size: 100%;
13 }
14 :link { color: #660000 }
15 :visited { color: #660000 }
16 :active { color: #660000 }
17 td.c2 {font-family: arial, helvetica, sans-serif; font-size: 80%}
18 td.c1 {font-family: lucida, helvetica; font-size: 248%}
19 </style>
20 </head>
21
22 <body>
23 <!--basefont face="lucida, helvetica, arial" size="3"-->
24
25<table border="0" cellpadding="0" cellspacing="0">
26<tr>
27<td>
28 <div class="c3">
29 <table border="0" cellspacing="1" cellpadding="2">
30 <tr>
31 <td class="c1">BUSYBOX</td>
32 </tr>
33 </table>
34 </div>
35
36 <a href="/"><img src="images/busybox1.png" alt="BusyBox" border="0" /></a><br>
37</td>
38</tr>
39
40<tr>
41
42<td valign="top">
43 <b>About</b>
44 <ul>
45 <li><a href="about.html">About BusyBox</a></li>
46 <li><a href="screenshot.html">Screenshot</a></li>
47 <li><a href="news.html">Announcements</a></li>
48 </ul>
49 <b>Documentation</b>
50 <ul>
51 <li><a href="FAQ.html">FAQ</a></li>
52 <li><a href="downloads/BusyBox.html">Command Help</a></li>
53 <li><a href="downloads/README">README</a></li>
54 </ul>
55 <b>Get BusyBox</b>
56 <ul>
57 <li><a href="download.html">Download Source</a></li>
58 <li><a href="license.html">License</a></li>
59 <li><a href="products.html">Products</a></li>
60 </ul>
61 <b>Development</b>
62 <ul>
63 <li><a href="http://sources.busybox.net/index.py/trunk/busybox/">Browse Source</a></li>
64 <li><a href="subversion.html">Source Control</a></li>
65 <!--li><a href="/downloads/patches/recent.html">Recent Changes</a></li-->
66 <li><a href="lists.html">Mailing Lists</a></li>
67 <li><a href="https://bugs.busybox.net/">Bug Tracking</a></li>
68 <li><a href="developer.html">Contributing</a></li>
69 </ul>
70 <p><b>Links</b>
71 <ul>
72 <li><a href="links.html">Related Sites</a></li>
73 <li><a href="tinyutils.html">Tiny Utilities</a></li>
74 <li><a href="sponsors.html">Sponsors</a></li>
75 </ul>
76 <p><b>Developer Pages</b>
77 <ul>
78 <li><a href="http://busybox.net/~landley/">Rob</a></li>
79 <li><a href="http://busybox.net/~aldot/">Bernhard</a></li>
80 <li><a href="http://busybox.net/~vda/">Denys</a>
81 <br>- <a href="http://busybox.net/~vda/resume/denys_vlasenko.htm">resume</a>
82 <br>- <a href="http://busybox.net/~vda/mboot/">mboot</a>
83 <br>- <a href="http://busybox.net/~vda/linld/">linld</a>
84 <br>- <a href="http://busybox.net/~vda/init_vs_runsv.html">init must die</a>
85 <br>- <a href="http://busybox.net/~vda/no_ifup.txt">no ifup</a>
86 <br>- <a href="http://busybox.net/~vda/unscd/">unscd</a>
87 </li>
88 </ul>
89</td>
90
91<td valign="top">
92
diff --git a/docs/busybox.net/images/back.png b/docs/busybox.net/images/back.png
deleted file mode 100644
index 79923869b..000000000
--- a/docs/busybox.net/images/back.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/busybox.jpeg b/docs/busybox.net/images/busybox.jpeg
deleted file mode 100644
index 37edc9614..000000000
--- a/docs/busybox.net/images/busybox.jpeg
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/busybox.png b/docs/busybox.net/images/busybox.png
deleted file mode 100644
index b1eb92f38..000000000
--- a/docs/busybox.net/images/busybox.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/busybox1.png b/docs/busybox.net/images/busybox1.png
deleted file mode 100644
index 4d3126a52..000000000
--- a/docs/busybox.net/images/busybox1.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/busybox2.jpg b/docs/busybox.net/images/busybox2.jpg
deleted file mode 100644
index abf8f0610..000000000
--- a/docs/busybox.net/images/busybox2.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/busybox2.png b/docs/busybox.net/images/busybox2.png
deleted file mode 100644
index a7460b672..000000000
--- a/docs/busybox.net/images/busybox2.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/busybox3.jpg b/docs/busybox.net/images/busybox3.jpg
deleted file mode 100644
index 0fab84cf9..000000000
--- a/docs/busybox.net/images/busybox3.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/dir.png b/docs/busybox.net/images/dir.png
deleted file mode 100644
index 1d633ce4a..000000000
--- a/docs/busybox.net/images/dir.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/donate.png b/docs/busybox.net/images/donate.png
deleted file mode 100644
index b55621bb9..000000000
--- a/docs/busybox.net/images/donate.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/fm.mini.png b/docs/busybox.net/images/fm.mini.png
deleted file mode 100644
index c0883cd34..000000000
--- a/docs/busybox.net/images/fm.mini.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/gfx_by_gimp.png b/docs/busybox.net/images/gfx_by_gimp.png
deleted file mode 100644
index d58314034..000000000
--- a/docs/busybox.net/images/gfx_by_gimp.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/ltbutton2.png b/docs/busybox.net/images/ltbutton2.png
deleted file mode 100644
index 9bad9496a..000000000
--- a/docs/busybox.net/images/ltbutton2.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/osuosl.png b/docs/busybox.net/images/osuosl.png
deleted file mode 100644
index b00b5007d..000000000
--- a/docs/busybox.net/images/osuosl.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/sdsmall.png b/docs/busybox.net/images/sdsmall.png
deleted file mode 100644
index b1024501b..000000000
--- a/docs/busybox.net/images/sdsmall.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/text.png b/docs/busybox.net/images/text.png
deleted file mode 100644
index 6034f899f..000000000
--- a/docs/busybox.net/images/text.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/valid-html401.png b/docs/busybox.net/images/valid-html401.png
deleted file mode 100644
index ec9bc0ce0..000000000
--- a/docs/busybox.net/images/valid-html401.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/vh40.gif b/docs/busybox.net/images/vh40.gif
deleted file mode 100644
index c5e9402e7..000000000
--- a/docs/busybox.net/images/vh40.gif
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/images/written.in.vi.png b/docs/busybox.net/images/written.in.vi.png
deleted file mode 100644
index 84f59bc15..000000000
--- a/docs/busybox.net/images/written.in.vi.png
+++ /dev/null
Binary files differ
diff --git a/docs/busybox.net/index.html b/docs/busybox.net/index.html
deleted file mode 100644
index 1bab6b069..000000000
--- a/docs/busybox.net/index.html
+++ /dev/null
@@ -1 +0,0 @@
1<!--#include file="news.html" -->
diff --git a/docs/busybox.net/license.html b/docs/busybox.net/license.html
deleted file mode 100644
index 2a4c51d10..000000000
--- a/docs/busybox.net/license.html
+++ /dev/null
@@ -1,99 +0,0 @@
1<!--#include file="header.html" -->
2
3<p>
4<h3><a name="license">BusyBox is licensed under the GNU General Public License, version 2</a></h3>
5
6<p>BusyBox is licensed under <a href="http://www.gnu.org/licenses/gpl.html#SEC1">the
7GNU General Public License</a> version 2, which is often abbreviated as GPLv2.
8(This is the same license the Linux kernel is under, so you may be somewhat
9familiar with it by now.)</p>
10
11<p>A complete copy of the license text is included in the file LICENSE in
12the BusyBox source code.</p>
13
14<p><a href="products.html">Anyone thinking of shipping BusyBox as part of a
15product</a> should be familiar with the licensing terms under which they are
16allowed to use and distribute BusyBox. Read the full test of the GPL (either
17through the above link, or in the file LICENSE in the busybox tarball), and
18also read the <a href="http://www.gnu.org/licenses/gpl-faq.html">Frequently
19Asked Questions about the GPL</a>.</p>
20
21<p>Basically, if you distribute GPL software the license requires that you also
22distribute the source code to that GPL-licensed software. So if you distribute
23BusyBox without making the source code to the version you distribute available,
24you violate the license terms, and thus infringe on the copyrights of BusyBox.
25(This requirement applies whether or not you modified BusyBox; either way the
26license terms still apply to you.) Read the license text for the details.</p>
27
28<h3><a name="version">A note on GPL versions</a></h3>
29
30<p>Version 2 of the GPL is the only version of the GPL which current versions
31of BusyBox may be distributed under. New code added to the tree is licensed
32GPL version 2, and the project's license is GPL version 2.</p>
33
34<p>Older versions of BusyBox (versions 1.2.2 and earlier, up through about svn
3516112) included variants of the recommended
36&quot;GPL version 2 or (at your option) later versions&quot; boilerplate
37permission grant. Ancient versions of BusyBox
38(before svn 49) did not specify any version at all, and section 9 of GPLv2
39(the most recent version at that time) says those old versions may be
40redistributed under any version of GPL (including the obsolete V1). This was
41conceptually similar to a dual license, except that the different licenses were
42different versions of the GPL.</p>
43
44<p>However, BusyBox has apparently always contained chunks of code that were
45licensed under GPL version 2 only. Examples include applets written by Linus
46Torvalds (util-linux/mkfs_minix.c and util_linux/mkswap.c) which stated they
47&quot;may be redistributed as per the Linux copyright&quot; (which Linus
48clarified in the
492.4.0-pre8 release announcement in 2000 was GPLv2 only), and Linux kernel code
50copied into libbb/loop.c (after Linus's announcement). There are probably
51more, because all we used to check was that the code was GPL, not which
52version. (Before the GPLv3 draft proceedings in 2006, it was a purely
53theoretical issue that didn't come up much.)</p>
54
55<p>To summarize: every version of BusyBox may be distributed under the terms of
56GPL version 2. New versions (after 1.2.2) may <b>only</b> be distributed under
57GPLv2, not under other versions of the GPL. Older versions of BusyBox might
58(or might not) be distributable under other versions of the GPL. If you
59want to use a GPL version other than 2, you should start with one of the old
60versions such as release 1.2.2 or SVN 16112, and do your own homework to
61identify and remove any code that can't be licensed under the GPL version you
62want to use. New development is all GPLv2.</p>
63
64<h3><a name="enforce">License enforcement</a></h3>
65
66<p>BusyBox's copyrights are enforced by the <a
67href="http://www.softwarefreedom.org/">Software Freedom Law Center</a>
68(you can contact them at gpl@busybox.net), which
69&quot;accepts primary responsibility for enforcement of US copyrights on the
70software... and coordinates international copyright enforcement efforts for
71such works as necessary.&quot; If you distribute BusyBox in a way that doesn't
72comply with the terms of the license BusyBox is distributed under, expect to
73hear from these guys. Their entire reason for existing is to do pro-bono
74legal work for free/open source software projects. (We used to list people who
75violate the BusyBox license in <a href="shame.html">The Hall of Shame</a>,
76but these days we find it much more effective to hand them over to the
77lawyers.)</p>
78
79<p>Our enforcement efforts are aimed at bringing people into compliance with
80the BusyBox license. Open source software is under a different license from
81proprietary software, but if you violate that license you're still a software
82pirate and the law gives the vendor (us) some big sticks to play with. We
83don't want monetary awards, injunctions, or to generate bad PR for a company,
84unless that's the only way to get somebody that repeatedly ignores us to comply
85with the license on our code.</p>
86
87<h3><a name="good">A Good Example</a></h3>
88
89<p>These days, <a href="http://www.linksys.com/">Linksys</a> is
90doing a good job at complying with the GPL, they get to be an
91example of how to do things right. Please take a moment and
92check out what they do with
93<a href="http://www.linksys.com/servlet/Satellite?c=L_Content_C1&amp;childpagename=US%2FLayout&amp;cid=1115416836002&amp;pagename=Linksys%2FCommon%2FVisitorWrapper">
94distributing the firmware for their WRT54G Router.</a>
95Following their example would be a fine way to ensure that you
96have also fulfilled your licensing obligations.</p>
97
98<!--#include file="footer.html" -->
99
diff --git a/docs/busybox.net/links.html b/docs/busybox.net/links.html
deleted file mode 100644
index 14ad8d12a..000000000
--- a/docs/busybox.net/links.html
+++ /dev/null
@@ -1,19 +0,0 @@
1<!--#include file="header.html" -->
2
3<h3>Related Sites</h3>
4
5<br><a href="http://uclibc.org/">uClibc.org</a>
6<br><a href="http://cxx.uclibc.org/">uClibc++</a>
7<!--br><a href="http://udhcp.busybox.net/">udhcp</a -->
8<br><a href="http://buildroot.uclibc.org/">buildroot</a>
9<br><a href="http://www.scratchbox.org/">Scratchbox</a>
10<br><a href="http://openembedded.org/">OpenEmbedded</a>
11<br><a href="http://www.ucdot.org/">uCdot</a>
12<br><a href="http://www.linuxdevices.com/">LinuxDevices</a>
13<br><a href="http://slashdot.org/">Slashdot</a>
14<br><a href="http://freshmeat.net/">Freshmeat</a>
15<br><a href="http://linuxtoday.com/">Linux Today</a>
16<br><a href="http://lwn.net/">Linux Weekly News</a>
17<br><a href="http://www.tldp.org/HOWTO">Linux HOWTOs</a>
18
19<!--#include file="footer.html" -->
diff --git a/docs/busybox.net/lists.html b/docs/busybox.net/lists.html
deleted file mode 100644
index 29c2f7472..000000000
--- a/docs/busybox.net/lists.html
+++ /dev/null
@@ -1,46 +0,0 @@
1<!--#include file="header.html" -->
2
3
4<!-- Begin Introduction section -->
5
6<h3>Mailing List Information</h3>
7BusyBox has a <a href="/lists/busybox/">mailing list</a> for discussion and
8development. You can subscribe by visiting
9<a href="http://lists.busybox.net/mailman/listinfo/busybox">this page</a>.
10Only subscribers to the BusyBox mailing list are allowed to post
11to this list.
12
13<p>
14There is also a mailing list for <a href="/lists/busybox-cvs/">active developers</a>
15wishing to read the complete diff of each and every change to busybox -- not for the
16faint of heart. Active developers can subscribe by visiting
17<a href="http://lists.busybox.net/mailman/listinfo/busybox-cvs">this page</a>.
18The Subversion server is the only one permtted to post to this list. And yes,
19this list name uses the word 'cvs' even though we don't use that anymore...
20
21<p>
22
23
24<h3>Search the List Archives</h3>
25Please search the mailing list archives before asking questions on the mailing
26list, since there is a good chance someone else has asked the same question
27before. Checking the archives is a great way to avoid annoying everyone on the
28list with frequently asked questions...
29<p>
30
31<center>
32<form method="GET" action="http://www.google.com/custom">
33<input type="hidden" name="domains" value="busybox.net">
34<input type="hidden" name="sitesearch" value="busybox.net">
35<input type="text" name="q" size="31" maxlength="255" value="">
36<br>
37<input type="submit" name="sa" value="search the mailing list archives">
38<br>
39<a href="http://www.google.com"><img src="http://www.google.com/logos/Logo_25wht.gif" border="0" alt="Google" height="32" width="75" align="middle"></a>
40<br>
41</form>
42</center>
43
44
45
46<!--#include file="footer.html" -->
diff --git a/docs/busybox.net/news.html b/docs/busybox.net/news.html
deleted file mode 100644
index e0a8138b6..000000000
--- a/docs/busybox.net/news.html
+++ /dev/null
@@ -1,504 +0,0 @@
1<!--#include file="header.html" -->
2
3<ul>
4
5 <li>
6 <p>We want to thank the following companies which are providing support for the BusyBox project:
7 <ul>
8 <li>AOE media, a <a href="http://www.aoemedia.com/typo3-development.html">
9 TYPO3 development agency</a> contributes financially.</li>
10 <li><a href="http://www.analog.com/en/">Analog Devices, Inc.</a> provided
11 a <a href="http://docs.blackfin.uclinux.org/doku.php?id=bf537_quick_start">
12 Blackfin development board</a> free of charge.
13 <a href="http://www.analog.com/blackfin">Blackfin</a>
14 is a NOMMU processor, and its availability for testing is invaluable.
15 If you are an embedded device developer,
16 please note that Analog Devices has entire Linux distribution available
17 for download for this board. Visit
18 <a href="http://blackfin.uclinux.org/">http://blackfin.uclinux.org/</a>
19 for more information.
20 </li>
21 </ul>
22 </p>
23 </li>
24
25 <li><b>15 April 2009 -- BusyBox 1.14.0 (unstable), BusyBox 1.13.4 (stable)</b>
26 <p><a href="http://busybox.net/downloads/busybox-1.14.0.tar.bz2">BusyBox 1.14.0</a>.
27 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_14_stable/">svn</a>,
28 <a href="http://busybox.net/downloads/fixes-1.14.0/">patches</a>,
29 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
30 <p><a href="http://busybox.net/downloads/busybox-1.13.4.tar.bz2">BusyBox 1.13.4</a>.
31 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_13_stable/">svn</a>,
32 <a href="http://busybox.net/downloads/fixes-1.13.4/">patches</a>,
33 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
34
35 <p>Sizes of busybox-1.13.4 and busybox-1.14.0 (with equivalent config, static uclibc build):<pre>
36 text data bss dec hex filename
37 785501 483 7036 793020 c19bc busybox.1.13.4/busybox
38 788380 467 6960 795807 c249f busybox.1.14.0/busybox
39 15361 0 0 15361 3c01 busybox.1.13.4/shell/hush.o
40 20724 0 0 20724 50f4 busybox.1.14.0/shell/hush.o
41</pre>
42 <p>Most of growth is in hush. The rest shrank a bit.
43
44 <p>New applets:
45 <ul>
46 <li>flash_eraseall: by Sebastian Andrzej Siewior (bigeasy AT linutronix.de)</li>
47 <li>acpid, mkdosfs, tunctl: by Vladimir</li>
48 <li>ftpd: by Adam Tkac (vonsch AT gmail.com)</li>
49 <li>timeout: by Roberto Foglietta</li>
50 <li>ionice: adapted from Linux kernel example by Walter Harms</li>
51 <li>mkpasswd: synonym to cryptpw. mkpasswd is in Debian, OTOH cryptpw was added to busybox earlier. Trying to make both camps happy by making those two applets just aliases. They are command-line compatible</li>
52 </ul>
53
54 <p>Changes since previous release:
55
56 <p>lash and msh are deprecated, please migrate to hush.
57
58 <p>hush had many, many fixes and features added: here documents, arithmetic evaluation, function support, and all this works on NOMMU too, safely, including 100kb-sized `command` and here documents. Here document support, arithmetic evaluation, improved ${var} operations, other fixes are by Mike Frysinger (vapier AT gentoo.org).
59
60 <p>Other changes:
61 <ul>
62 <li>libbb: unify concurrent-safe update of /etc/{passwd,group,[g]shadow}. By Tito (farmatito AT tiscali.it)</li>
63 <li>libbb/sha{1,256,512}: major code shrink</li>
64 <li>libbb/lineedit: make history saving/loading concurrent-safe</li>
65 <li>libbb: shrink linked list ops. By xmaks AT email.cz</li>
66 <li>libbb: str2sockaddr should accept [IPv6] addr without port - wget 'ftp://[::1]/file' needs that to work</li>
67 <li>libbb: make bb_info_msg do atomic, unbuffered writes</li>
68 <li>util-linux/volumeid: abort early on read failures. Should help with probing missing fdd's</li>
69 <li>util-linux/volumeid: fix bug 249 "findfs finds the wrong partition"</li>
70 <li>adduser: allow adding to group 0; don't _create_ /etc/shadow, only append data if it exists</li>
71 <li>ash: fix mishandled ^C and SIGINT (several cases)</li>
72 <li>ash: fix "ash -c 'exec 1&gt;&amp;0'" complaining that fd 0 is busy</li>
73 <li>ash: fix $IFS handling in read. Closes bug 235</li>
74 <li>ash: fix a case where we were closing wrong descriptor</li>
75 <li>ash: fix bad interaction between ash -c '....&amp;' and bash compat</li>
76 <li>ash: fix miscalculation of memory needed for eval tree. Found by Timo Teras (timo.teras AT iki.fi)</li>
77 <li>ash: make dot command search current directory first, as bash does</li>
78 <li>ash: printf builtin with no arguments should not exit</li>
79 <li>awk: fix long field separators case. By Ian Wienand (ianw AT vmware.com)</li>
80 <li>awk: in BEGIN section $0 should be "", not "0"</li>
81 <li>awk: make "struct global" hack more robust wrt alignment. Closes bug 131</li>
82 <li>brctl: fix compilation on 2.4.x kernels</li>
83 <li>chat: treat timeout more correctly</li>
84 <li>chat: recognize RECORD directive</li>
85 <li>cksum, head, printenv: report errors via exitcode</li>
86 <li>cpio: add -p, -0 and -L options</li>
87 <li>crond, crontab: make cron directory location configurable</li>
88 <li>crond: correct more of logfile to 0666 (as usual, umask allows user to remove unwanted bits)</li>
89 <li>crond: put tasks in separate process groups</li>
90 <li>dc: fix the "base 2" patch omission of base not being set</li>
91 <li>depmod: accept and ignore -r. Linux kernel build needs this</li>
92 <li>depmod: fix -b option. By timo.teras AT iki.fi</li>
93 <li>udhcpc: fix a problem where we don't open listening socket fast enough</li>
94 <li>udhcpc: stop filtering environment passed to the script</li>
95 <li>udhcpd: disable option to have absolute lease times in lease file (that does not work with dumpleases)</li>
96 <li>udhcpd: write 64-bit current time in lease file. Without it, determination of remaining lease time is unreliable</li>
97 <li>udhcpd: remember hostnames of clients</li>
98 <li>dumpleases: fix -a option, use recorded current time in lease file, show hostnames</li>
99 <li>dnsd: fix a number of bugs. Ideas by Ming-Ching Tiew (mctiew AT yahoo.com)</li>
100 <li>dpkg: better and shorter code to compare versions. Taken from "official" dpkg by Eugene T. Bordenkircher (eugebo AT gmail.com)</li>
101 <li>du: fix "du /dir /dir" case</li>
102 <li>env: support -uVAR=VAL</li>
103 <li>expand, unexpand: fix incorrect expansion in some cases</li>
104 <li>expr: a bit more robust handling of regexps with groups. Closes bug 87</li>
105 <li>find: support --mindepth</li>
106 <li>getty: make speed 0 mean "don't change speed", stop using non-portable way of setting speeds</li>
107 <li>grep: support -z</li>
108 <li>gzip: fix gzip -dc bug caused by using stale getopt state</li>
109 <li>httpd: set $HOST to Host: header value. By Tobias Poschwatta (tp AT fonz.de)</li>
110 <li>ifupdown: allow options to udhcpc to be configurable from .config</li>
111 <li>init: do not eat last char in messages; do not print duplicate "init:" prefix to syslog</li>
112 <li>init: fix a bug where on reload order of entries might be wrong</li>
113 <li>init: major improvement in documentation and signal handling. Lots of nasty, but hard to trip, races are fixed</li>
114 <li>init: reinstate proper handling of !ENABLE_FEATURE_USE_INITTAB</li>
115 <li>init: remove wait loop on restart, it may be dangerous</li>
116 <li>init: test for vt terminal with VT_OPENQRY, assume that anything else is TERM=vt102, not TERM=linux. Closes bug 195</li>
117 <li>inotifyd: add x, o, and u events</li>
118 <li>inotifyd: fix buffer overflow and "unreaped zombies" problem</li>
119 <li>inotifyd: conserve resourses by closing unused inotify descriptors</li>
120 <li>insmod/modprobe: do not pass NULL to kernel as module parameter</li>
121 <li>ip: in "ip rule add from all table 1", "all" is taken as 0.0.0.0/32, whereas "any" and "default" would be 0.0.0.0/0. They must be all 0.0.0.0/0. Closes bug 57</li>
122 <li>iproute: fix ipXXX utilities trying to parse their applet name as their 1st parameter</li>
123 <li>klogctl: fix a problem where we don't terminate read data with '\0' and then misinterpret it</li>
124 <li>ls: do not follow links with -s. Closes bug 33</li>
125 <li>ls: implement -Q and -g (-g was accepted but ignored)</li>
126 <li>ls: make readlink error to not disrupt output (try ls -l /proc/self/fd)</li>
127 <li>man: better check for duplicated MANPATH</li>
128 <li>mdev: add support for - ("dont stop here") char</li>
129 <li>mdev: if /sys/class/block exists, don't scan /sys/block</li>
130 <li>mdev: ignore events with "$SUBSYSTEM" == "firmware" &amp;&amp; "$ACTION" == "remove"</li>
131 <li>mdev: provide $SUBSYSTEM. By Vladimir</li>
132 <li>modprobe/insmod for 2.4: support compressed modules. By Guenter (lists AT gknw.net)</li>
133 <li>modprobe: rework/speedup by Timo Teras (timo.teras AT iki.fi)</li>
134 <li>modutils-24: fix bad interaction of xzalloc with xrealloc_vector</li>
135 <li>mount: support "-O option", stop trying to mount swap partitions, fix CIFS support</li>
136 <li>mountpoint: add -n option. By Vladimir</li>
137 <li>nslookup: allow usage of IPv6 addresses or hostnames for DNS server name; allow for port specification. Tested to work on uclibc svn: "nslookup google.com [::1]:5353". glibc + IPv6 address of DNS server still does not work</li>
138 <li>popmaildir: fix several grave bugs with using memory past end of malloc block</li>
139 <li>printf: fix 1.12.0 breakage (from %*d fix), it was misinterpreting "*"</li>
140 <li>printf: make integer format strings print long long-sized values</li>
141 <li>rmmod: fix bug 263 "modutils/rmmod can't remove modules with dash in name on 2.4 kernels"</li>
142 <li>sendmail: document and fix usage of fd #4, fix check for helper failure</li>
143 <li>sendmail: update by Vladimir</li>
144 <li>seq: add -w support. By Natanael Copa</li>
145 <li>seq: add support for "-s separator"</li>
146 <li>stat: make stat -f show filesystem "ID:" as coreutils does</li>
147 <li>sysctl: fix another corner case with "dots and slashes"</li>
148 <li>sysctl: fix broken -p [file]. Closes bug 231</li>
149 <li>sysctl: support recursing if name is a directory: "sysctl net.ipv4.conf". Patch by xmaks AT email.cz</li>
150 <li>syslogd: make signal handling syncronous</li>
151 <li>syslogd: create logfile with 0666 (affected by umask as usual), not 0600</li>
152 <li>tail: fix tail +N syntax not working. Closes bug 221</li>
153 <li>tar: do not change new tarfile's mode, GNU tar doesn't do it</li>
154 <li>tar: support GNU tar's "base256" encoding</li>
155 <li>telnetd: correctly output 0xff char</li>
156 <li>telnetd: do not advertise TELNET_LFLOW, we do not support it properly</li>
157 <li>tftp: when we infer local name from remote (-r [/]path/path/file), strip path. This mimics wget and is generally more intuitive</li>
158 <li>timeout: fix parsing of -t NUM on MMU</li>
159 <li>top: make it work again on 2.4 kernels. Closes bug 125</li>
160 <li>tr: fix overflow in expand and complement, fix stop after [:class:], fix handling of ranges and [x]'s</li>
161 <li>tr: support -C as synonym to -c, support [:xdigit:]</li>
162 <li>traceroute: rewrite. Do not emit raw IP packets, instead send UDP or ICMP packets and rely on the kernel to form IP headers, select source IP and interface</li>
163 <li>uname: add support for -i and -o, fix printing of unknown -p value with -a option, support long options</li>
164 <li>unzip: fix thinko with le/be conv and size. Closes bug 129</li>
165 <li>vi: fix several instances of major goof: when text grows, text[] might get reallocated! We were keeping around pointers to old place</li>
166 <li>vi: speedup and code shrink. By Walter Harms</li>
167 <li>wget: --post-data support. By Harald Kuthe (harald-tuxbox AT arcor.de)</li>
168 <li>wget: fix --header handling, more robust EINTR detection</li>
169 </ul>
170 </p>
171
172 <li><b>8 March 2009 -- BusyBox 1.13.3 (stable)</b>
173 <p><a href="http://busybox.net/downloads/busybox-1.13.3.tar.bz2">BusyBox 1.13.3</a>.
174 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_13_stable/">svn</a>,
175 <a href="http://busybox.net/downloads/fixes-1.13.3/">patches</a>,
176 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
177
178 <p>1.13.3 is a bug fix release. It has fixes for awk, depmod, init, killall, mdev,
179 modprobe, printf, syslogd, tar, top, unzip, wget.
180 </p>
181 </li>
182
183 <li><b>31 December 2008 -- BusyBox 1.13.2 (stable), BusyBox 1.12.4 (stable)</b>
184 <p><a href="http://busybox.net/downloads/busybox-1.13.2.tar.bz2">BusyBox 1.13.2</a>.
185 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_13_stable/">svn</a>,
186 <a href="http://busybox.net/downloads/fixes-1.13.2/">patches</a>,
187 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
188 <p><a href="http://busybox.net/downloads/busybox-1.12.4.tar.bz2">BusyBox 1.12.4</a>.
189 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_12_stable/">svn</a>,
190 <a href="http://busybox.net/downloads/fixes-1.12.4/">patches</a>,
191 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
192
193 <p>Bug fix releases. 1.13.2 has fixes for crond, dc, init, ip, printf.
194 1.12.4 has fixes for ip and printf.
195 </p>
196 </li>
197
198 <li><b>29 November 2008 -- BusyBox 1.13.1 (stable), BusyBox 1.12.3 (stable)</b>
199 <p><a href="http://busybox.net/downloads/busybox-1.13.1.tar.bz2">BusyBox 1.13.1</a>.
200 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_13_stable/">svn</a>,
201 <a href="http://busybox.net/downloads/fixes-1.13.1/">patches</a>,
202 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
203 <p><a href="http://busybox.net/downloads/busybox-1.12.3.tar.bz2">BusyBox 1.12.3</a>.
204 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_12_stable/">svn</a>,
205 <a href="http://busybox.net/downloads/fixes-1.12.3/">patches</a>,
206 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
207
208 <p>Bug fix releases. 1.13.1 has fixes for ash, option parsing, id, init,
209 inotifyd, klogd, line editing and modprobe. 1.12.3 has fixes
210 for option parsing and line editing.
211 </p>
212 </li>
213
214 <li><b>10 November 2008 -- BusyBox 1.13.0 (unstable), BusyBox 1.12.2 (stable)</b>
215 <p><a href="http://busybox.net/downloads/busybox-1.13.0.tar.bz2">BusyBox 1.13.0</a>.
216 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_13_stable/">svn</a>,
217 <a href="http://busybox.net/downloads/fixes-1.13.0/">patches</a>,
218 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
219 <p><a href="http://busybox.net/downloads/busybox-1.12.2.tar.bz2">BusyBox 1.12.2</a>.
220 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_12_stable/">svn</a>,
221 <a href="http://busybox.net/downloads/fixes-1.12.2/">patches</a>,
222 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
223
224 <p>Sizes of busybox-1.12.2 and busybox-1.13.0 (with equivalent config, static uclibc build):<pre>
225 text data bss dec hex filename
226 778291 551 7856 786698 c010a busybox-1.12.2/busybox
227 778981 551 7852 787384 c03b8 busybox-1.13.0/busybox
228</pre>
229
230 <p>New applets: blkid, devmem
231
232 <p>Changes since previous release:
233 <ul>
234 <li>mail applets: total overhaul. Vladimir as usual</li>
235 <li>ash: fix "while kill -0 $child; do true; done" looping forever</li>
236 <li>ash: fix NOEXEC mode - we were forgetting to pass environment</li>
237 <li>ash: fix a bug in standalone mode (corrupted getopt state)</li>
238 <li>ash: optionally support "&gt;&amp;file" and "&amp;&gt;file" redirections</li>
239 <li>awk: bitwise ops cast oprands and results to unsigned long, not signed. closes bug 4774</li>
240 <li>awk: fix typo in atan2 code. closes bug 5594</li>
241 <li>awk: improve handling of negative numbers in bitwise ops; fix handling of octal costants</li>
242 <li>awk: support hex constants</li>
243 <li>basename: fix error code (again)</li>
244 <li>cpio: emit TRAILER even when hard links were found. By Pascal Bellard (pascal.bellard AT ads-lu.com)</li>
245 <li>crontab: do not destroy STDIN_FILENO, editor may need it (crontab -e)</li>
246 <li>dc: support for bases 2 and 8, by Nate Case (ncase AT xes-inc.com)</li>
247 <li>dhcpc: treat "discover...select...discover..." loop the same way as "discover...discover...discover..."</li>
248 <li>dpkg: add dpkg -l PACKAGE_PATTERN. By Peter Korsgaard</li>
249 <li>fbset: fix mode matching code: original code may trigger false positive.</li>
250 <li>findfs: fix LUKS and FAT detection routines; do not exit if corrupted FAT fs makes us try to seek past the end</li>
251 <li>grep: fix 'echo aaa | grep -o a' + ENABLE_EXTRA_COMPAT case. By Natanael Copa</li>
252 <li>grep: fix EXTRA_COMPAT grep to honor -E and -i</li>
253 <li>gunzip: restore mtime</li>
254 <li>halt: reinstate -w even if !FEATURE_WTMP</li>
255 <li>hexdump: fix SEGV in hexdump -e ""</li>
256 <li>httpd: pass "Accept:" and "Accept-Language:" header to CGI scripts (Alina Friedrichsen)</li>
257 <li>hush: fix environment and memory leaks</li>
258 <li>hush: fix trashing of environment by local env vars: a=a; a=b cmd; - a was unset</li>
259 <li>id: improve compatibility with coreutils. By Tito Ragusa</li>
260 <li>inetd: fix a case when we have zero services</li>
261 <li>inetd: use config parser. by Vladimir</li>
262 <li>init: set stderr to NONBLOCK</li>
263 <li>insmod: fix detection of open failure</li>
264 <li>install: support -D</li>
265 <li>ip: fix ip route rejecting dotted quads as prefix</li>
266 <li>ip: route metric support (Natanael Copa)</li>
267 <li>iplink: accept shorthands for "address" keyword: "ip link set address 00:11:22:33:44:55"</li>
268 <li>kbd_mode: support -C TTY</li>
269 <li>kill[all[5]]: accept -s SIG too. By Steve Bennett (steveb AT workware.net.au)</li>
270 <li>klogd: handle many lines at once. By Steve Bennett (steveb AT workware.net.au)</li>
271 <li>less: support -I to be able to search case-insensitively</li>
272 <li>less: add optional line number toggle and resizing on window resize</li>
273 <li>libbb: do not reject floating point strings like ".15"</li>
274 <li>lineedit: fix bug 5824 "since rev 23530 fdisk and ed don't work any more"</li>
275 <li>lineedit: fix problems with empty commands in history</li>
276 <li>login: fix /etc/nologin handling</li>
277 <li>man: fix inconsistencies in handling $MANPATH</li>
278 <li>mdev: support match by major,minor. See bug 4714</li>
279 <li>modprobe-small: make insmod command line compatible</li>
280 <li>modprobe-small: support "blacklist" keyword in /etc/modules/MODULE_NAME</li>
281 <li>modprobe: fix a segfault when modprobe is called with no arguments at all</li>
282 <li>modutils/*: rewrite by Timo Teras (timo.teras AT iki.fi)</li>
283 <li>mount: fix "-o parm1 -o parm2" not accumulating</li>
284 <li>nmeter: 4k buffers are too small for /proc files, make them dynamically sized with 16k upper limit</li>
285 <li>ping: SO_RCVBUF must be bigger than packet size, otherwise large ping packets might fail to be received</li>
286 <li>route: fix for 64-bit BE machines by Seonghun Lim (wariua AT gmail.com)</li>
287 <li>rpm: fix incompatibilities which prevented rpm -i foo.src.rpm</li>
288 <li>runsvdir: support runsvdir-as-init</li>
289 <li>setarch: do not try to use non-existent data in argv[]</li>
290 <li>setfont: support -m and -C, support -m TEXTUAL_MAP (by Vladimir)</li>
291 <li>setup_environment: cd $HOME regardless of clear_env value</li>
292 <li>slattach: preserve speed in non-raw mode. By Matthieu Castet (matthieu.castet AT parrot.com)</li>
293 <li>start_stop_daemon: accept (and ignore) -R PARAM</li>
294 <li>sv: make default service dir configurable (Vladimir wants it)</li>
295 <li>sysctl: fix bug 3894 (by Kryzhanovskyy Maksym)</li>
296 <li>tar: fix bug 3844: non-root tar does not preserve perms</li>
297 <li>telnetd: handle emacs M-DEL and IAC-NOP. by Jim Cathey (jcathey AT ciena.com)</li>
298 <li>top: fix "top -d 1" (bug 5144)</li>
299 <li>top: optional SMP support by Vineet Gupta (vineetg76 AT gmail.com)</li>
300 <li>trylink: make messages less confusing</li>
301 <li>unzip: handle "central directory". needed for OpenOffice, gmail attachment .zips etc</li>
302 <li>vi: Rob's algorithm of reading and matching ESC sequences (nice work btw!)</li>
303 <li>vi: deal with EOF/error on stdin and with input NULs</li>
304 <li>vi: fix uninitialized last_search_pattern (bug 5794)</li>
305 <li>vi: handle chars 0x80, 0x81 etc correctly</li>
306 <li>volume identification: abolish /proc/partitions and /proc/cdroms scanning. It does not catch volume managers and such. Simply scan /dev/* for any block devices</li>
307 <li>watchdog: WDIOC_SETTIMEOUT accepts seconds, not milliseconds</li>
308 <li>watchdog: add -T option</li>
309 </ul>
310 <p>
311 The email address gpl@busybox.net is the recommended way to contact
312 the Software Freedom Law Center to report BusyBox license violations.
313 </p>
314 </li>
315
316 <li><b>28 September 2008 -- BusyBox 1.12.1 (stable), BusyBox 1.11.3 (stable)</b>
317 <p><a href="http://busybox.net/downloads/busybox-1.12.1.tar.bz2">BusyBox 1.12.1</a>.
318 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_12_stable/">svn</a>,
319 <a href="http://busybox.net/downloads/fixes-1.12.1/">patches</a>,
320 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
321 <p><a href="http://busybox.net/downloads/busybox-1.11.3.tar.bz2">BusyBox 1.11.3</a>.
322 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_11_stable/">svn</a>,
323 <a href="http://busybox.net/downloads/fixes-1.11.3/">patches</a>,
324 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
325 <p>
326 Bugfix-only releases for 1.11.x and 1.12.x branches.
327 </p>
328 </li>
329
330 <li><b>21 August 2008 -- BusyBox 1.12.0 (unstable), BusyBox 1.11.2 (stable)</b>
331 <p><a href="http://busybox.net/downloads/busybox-1.12.0.tar.bz2">BusyBox 1.12.0</a>.
332 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_12_stable/">svn</a>,
333 <a href="http://busybox.net/downloads/fixes-1.12.0/">patches</a>,
334 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
335 <p><a href="http://busybox.net/downloads/busybox-1.11.2.tar.bz2">BusyBox 1.11.2</a>.
336 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_11_stable/">svn</a>,
337 <a href="http://busybox.net/downloads/fixes-1.11.2/">patches</a>,
338 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
339
340 <p>Sizes of busybox-1.11.2 and busybox-1.12.0 (with equivalent config, static uclibc build):<pre>
341 text data bss dec hex filename
342 829687 617 7052 837356 cc6ec busybox-1.11.2/busybox
343 822961 594 6832 830387 cabb3 busybox-1.12.0/busybox
344</pre>
345
346 <p>New applets: rdev (Grant Erickson), setfont, showkey (both by Vladimir)
347
348 <p>Most significant changes since previous release (please report any regression):
349 <ul>
350 <li>ash: bash compat: "shift $BIGNUM" is equivalent to "shift 1"</li>
351 <li>ash: dont allow e.g. exec &lt;&amp;10 to attach to script's fd! </li>
352 <li>ash: fix a bug where redirection fds were not closed afterwards. optimize close+fcntl(DUPFD) into dup2</li>
353 <li>ash: fix segfault in "command -v"</li>
354 <li>ash: fix very weak $RANDOM generator</li>
355 <li>ash: prevent exec NN&gt;&amp;- from closing fd used for script reading</li>
356 <li>ash: teach ash about 123&gt;file. It could take only 0..9 before</li>
357 <li>hush: fix a case where "$@" must expand to no word at all</li>
358 <li>hush: fix mishandling of a'b'c=fff as assignments. They are not</li>
359 <li>hush: fix non-detection of builtins and applets in "v=break; ...; $v; ..." case</li>
360 <li>hush: fix "while false; ..." exitcode; add testsuites</li>
361 <li>hush: support "case...esac" statements (~350 bytes of code)</li>
362 <li>hush: support "break [N]" and "continue [N]" statements</li>
363 <li>hush: support "for if in do done then; do echo $if; done" case</li>
364 <li>hush: support "for v; do ... done" syntax (implied 'in "$@"')</li>
365 <li>hush: support $_NUMBERS variable names</li>
366 <li>libbb: unified config parser (by Vladimir). This change affected many applets</li>
367 </ul>
368
369 <p>Other changes:
370 <ul>
371 <li>libbb: dump: do not use uninitialized memory (closes bug 4364)</li>
372 <li>libbb: fix bb_strtol[l]'s check for "-" (closes bug 4174)</li>
373 <li>libbb: fix --help to not affect "test --help"</li>
374 <li>libbb: fix mishandling of "all argv are opts" in getopt32()</li>
375 <li>libbb: getopt32() should not ever touch argv[0] (even read)</li>
376 <li>libbb: introduce and use xrealloc_vector</li>
377 <li>libbb: [x]fopen_for_{read,write} introduced and used (by Vladimir)</li>
378 <li>lineedit: fix use-after-free</li>
379 <li>libunarchive: refactor handling of archived files. "tar f file.tar.lzma" now works too</li>
380 <li>bb_strtoXXX: close bug 4174 (potential use of buf[-1])</li>
381 <li>open_transformer: don't leak file descriptor</li>
382 <li>open_transformer: fix bug of calling exit instead of _exit</li>
383 <li>arp: without -H type, assume "ether" (closes bug 4564)</li>
384 <li>ar: reuse existing ar unpacking code</li>
385 <li>awk: fix a case with multiple -f options. Simplify -f file reading. </li>
386 <li>build system: introduce and use FAST_FUNC: regparm on i386, otherwise no-op</li>
387 <li>bunzip2: fix an uncompression error (by Rob Landley rob AT landley.net)</li>
388 <li>b[un]zip2, g[un]zip: unlink destination if -f is given (closes bug 3854)</li>
389 <li>comm: almost total rewrite</li>
390 <li>cpio: fix -m to actually work as expected (by Pascal Bellard)</li>
391 <li>cpio: internalize archive_xread_all_eof, add a few paranoia checks for corrupted cpio files</li>
392 <li>cpio: make long opts depend only on ENABLE_GETOPT_LONG</li>
393 <li>cpio: on unpack, limit filename length to 8k</li>
394 <li>cpio: support some long options</li>
395 <li>crond: use execlp instead of execl</li>
396 <li>cut: fix buffer overflow (closes bug 4544)</li>
397 <li>envdir: fix "envdir" (no params at all) and "envdir dir" cases</li>
398 <li>findfs: make it use setuid-ness of busybox binary</li>
399 <li>fsck: use getmntent_r instead of open-coded parsing (by Vladimir)</li>
400 <li>fuser: a bit of safety in scanf</li>
401 <li>grep: option to use GNU regex matching instead of POSIX one. This fixes problems with NULs in files being scanned, but costs +800 bytes</li>
402 <li>halt: signal init regardless of ENABLE_INIT</li>
403 <li>httpd: add homedir directive specially for (and by) Walter Harms wharms AT bfs.de</li>
404 <li>ifupdown: /etc/network/interfaces can have comments with leading blanks</li>
405 <li>ifupdown: fixes for custom MAC address (by Wade Berrier wberrier AT gmail.com)</li>
406 <li>ifupdown: fixes for shutdown of DHCP-managed interfaces (by Wade Berrier wberrier AT gmail.com)</li>
407 <li>inetd: do not trash errno in signal handlers; in CHLD handler, stop looping through services when pid is found</li>
408 <li>insmod: users report that "|| defined(__powerpc__)" is missing</li>
409 <li>install: do not chown intermediate directories with install -d (by Natanael Copa)</li>
410 <li>install: fix long option not taking params (closes bug 4584)</li>
411 <li>lpd,lpr: send/receive ACKs after filenames, not only after file bodies</li>
412 <li>ls: fix a bug where we may use uninintialized variable</li>
413 <li>man: add handling of "man links", by Ivana Varekova varekova AT redhat.com</li>
414 <li>man: fix a case when a full pathname to manpage is given</li>
415 <li>man: fix inverted cat/man bool variable</li>
416 <li>man: fix missed NULL termination of an array</li>
417 <li>man: mimic "no manual entry for 'bogus'" message and exitcode</li>
418 <li>man: support cat pages too (by Jason Curl jcurlnews AT arcor.de)</li>
419 <li>man: teach it to use .lzma if requested by .config</li>
420 <li>mdev: check for "/block/" substring for block dev detection</li>
421 <li>mdev: do not complain if mdev.conf does not exist</li>
422 <li>mdev: if device was moved at creation, at removal correctly remove it from moved location and also remove symlinks to it</li>
423 <li>mdev: support for serializing hotplug</li>
424 <li>mdev, init: use shared code for fd sanitization</li>
425 <li>mkdir: fix "uname 0222; mkdir -p foo/bar" case (by Doug Graham dgraham AT nortel.com)</li>
426 <li>modprobe: support for /etc/modprobe.d (by Timo Teras)</li>
427 <li>modprobe: use buffering line reads (fgets()) instead of reads()</li>
428 <li>modutils: optional modprobe-small (by Vladimir), 15kb smaller than standard one</li>
429 <li>mount: support for "-o mand" and "[no]relatime"</li>
430 <li>mount: support nfs mount option "nordiplus" (by Octavian Purdila opurdila AT ixiacom.com)</li>
431 <li>mount: support "relatime" / "norelatime"</li>
432 <li>mount: testsuite for "-o mand"</li>
433 <li>msh: fix "while... continue; ..." (closes bug 3884)</li>
434 <li>mv: fix a case when we move dangling symlink across mountpoints</li>
435 <li>netstat: optional -p support (by L. Gabriel Somlo somlo AT cmu.edu)</li>
436 <li>nmeter: fix read past the end of a buffer (closes bug 4594)</li>
437 <li>od, hexdump: fix bug where xrealloc may move pointer, leaving other pointers dangling (closes bug 4104)</li>
438 <li>pidof/killall: allow find_pid_by_name to find running processes started as scripts_with_name_longer_than_15_bytes.sh (closes bug 4054)</li>
439 <li>printf: do not print garbage on "%Ld" (closes bug 4214)</li>
440 <li>printf: fix %b, fix several bugs in %*.*, fix compat issues with aborting too early, support %zd; expand testsuite</li>
441 <li>printf: protect against bogus format specifiers (closes bug 4184)</li>
442 <li>sendmail: updates from Vladimir:</li>
443 <li>sendmail: do not discard all headers</li>
444 <li>sendmail: do not ignore CC; accept to: and cc: case-insensitively. +20 bytes</li>
445 <li>sendmail: fixed mail recipient address</li>
446 <li>sendmail: fixed SEGV if sender address is missed</li>
447 <li>sendmail: use HOSTNAME instead of HOST when no server is explicitly specified</li>
448 <li>sleep: if FANCY &amp;&amp; DESKTOP, support fractional seconds, minutes, hours and so on (coreutils compat)</li>
449 <li>ssd: CLOSE_EXTRA_FDS in MMU case too</li>
450 <li>ssd: do not stat -x EXECUTABLE, it is not needed anymore</li>
451 <li>ssd: fix -a without -x case</li>
452 <li>ssd: use $PATH</li>
453 <li>tar: fix handling of tarballs with symlinks with size field != 0</li>
454 <li>tar: handle autodetection for tiny .tar.gz files too, simplify autodetection</li>
455 <li>taskset: fix some careless code in both fancy and non-fancy cases. -5 bytes for fancy, +5 for non-fancy</li>
456 <li>tee: fix infinite looping on open error (echo asd | tee "")</li>
457 <li>tee: "-" is a name for stdout, handle it that way</li>
458 <li>telnetd: fix issue file printing</li>
459 <li>test: fix parser to prefer binop over unop, as coreutils does</li>
460 <li>testsuite: uniformly use $ECHO with -n -e</li>
461 <li>time: don't segfault with no arguments</li>
462 <li>touch: support -r REF_FILE if ENABLE_DESKTOP (needed for blackfin compile)</li>
463 <li>tr: fix "access past the end of a string" bug 4354</li>
464 <li>tr: fix "tr [=" case (closes bug 4374)</li>
465 <li>tr: fix yet another access past the end of a string (closes bug 4374)</li>
466 <li>unlzma: fix memory leak (by Pascal Bellard)</li>
467 <li>vi: fix reversed checks for underflow</li>
468 <li>vi: using array data after it fell out of scope is stupid</li>
469 <li>xargs: fix -e default to match newer GNU xargs, add SUS mandated -E (closes bug 4414)</li>
470 <li>other fixes and code size reductions in many applets</li>
471 </ul>
472 </p>
473
474 <li><b>12 July 2008 -- BusyBox 1.11.1 (stable)</b>
475 <p><a href="http://busybox.net/downloads/busybox-1.11.1.tar.bz2">BusyBox 1.11.1</a>.
476 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_11_stable/">svn</a>,
477 <a href="http://busybox.net/downloads/fixes-1.11.1/">patches</a>,
478 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
479 <p>
480 Bugfix-only release for 1.11.x branch. It contains fixes for awk,
481 bunzip2, cpio, ifupdown, ip, man, start-stop-daemon, uname and vi.
482 </p>
483 </li>
484
485 <li><b>11 July 2008 -- HOWTO is updated</b>
486 <p>
487 <a href="http://busybox.net/~vda/HOWTO/i486-linux-uclibc/HOWTO.txt">
488 "How to build static busybox for i486-linux-uclibc"</a> is updated
489 and tested on a fresh Fedora 9 install. Please report if it doesn't
490 work for you.
491 </p>
492 </li>
493
494
495
496 <li><b>Old News</b><p>
497 Click here to read <a href="oldnews.html">older news</a>
498 </p>
499 </li>
500
501</ul>
502
503<!--#include file="footer.html" -->
504
diff --git a/docs/busybox.net/oldnews.html b/docs/busybox.net/oldnews.html
deleted file mode 100644
index 444af74a4..000000000
--- a/docs/busybox.net/oldnews.html
+++ /dev/null
@@ -1,2214 +0,0 @@
1<!--#include file="header.html" -->
2
3<h3>News archive</h3>
4
5<ul>
6
7 <li><b>25 June 2008 -- BusyBox 1.11.0 (unstable), BusyBox 1.10.4 (stable)</b>
8 <p><a href="http://busybox.net/downloads/busybox-1.11.0.tar.bz2">BusyBox 1.11.0</a>.
9 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_11_stable/">svn</a>,
10 <a href="http://busybox.net/downloads/fixes-1.11.0/">patches</a>,
11 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
12 <p><a href="http://busybox.net/downloads/busybox-1.10.4.tar.bz2">BusyBox 1.10.4</a>.
13 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_10_stable/">svn</a>,
14 <a href="http://busybox.net/downloads/fixes-1.10.4/">patches</a>,
15 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
16 <p>Sizes of busybox-1.10.4 and busybox-1.11.0 (with equivalent config, static uclibc build):<pre>
17 text data bss dec hex filename
18 800675 636 7080 808391 c55c7 busybox-1.10.4
19 798392 611 6900 805903 c4c0f busybox-1.11.0
20</pre>
21
22 <p>New applets: inotify (Vladimir Dronnikov), man (Ivana Varekova),
23 fbsplash (Michele Sanges), depmod (Bernhard Reutner-Fischer)
24
25 <p>Changes since previous release:
26 <ul>
27 <li>build system: reinstate CONFIG_CROSS_COMPILE_PREFIX</li>
28 <li>ash: optional bash compatibility features added; other fixes</li>
29 <li>hush: lots and lots of fixes</li>
30 <li>msh: fix the case where the file has exec bit but can't be run directly (runs "$SHELL file" instead)</li>
31 <li>msh: fix exit codes when command is not found or can't be execed</li>
32 <li>udhcpc: added workaround for buggy kernels</li>
33 <li>mount: fix mishandling of proto=tcp/udp</li>
34 <li>diff: make it work on non-seekable streams</li>
35 <li>openvt: made more compatible with "standard" one</li>
36 <li>mdev: fix block/char device detection</li>
37 <li>ping: add -w, -W support (James Simmons)</li>
38 <li>crond: add handling of "MAILTO=user" lines</li>
39 <li>start-stop-daemon: make --exec follow symlinks (Joakim Tjernlund)</li>
40 <li>date: make it accept ISO date format</li>
41 <li>echo: fix echo -e -n "msg\n\0" (David Pinedo)</li>
42 <li>httpd: fix several bugs triggered by relative path in -h DIR</li>
43 <li>printf: fix printf -%s- foo, printf -- -%s- foo</li>
44 <li>syslogd: do not error out on missing files to rotate</li>
45 <li>ls: support Unicode in names</li>
46 <li>ip: support for the LOWER_UP flag (Natanael Copa)</li>
47 <li>mktemp: make argument optional (coreutil 6.12 compat)</li>
48 <li>libiproute: fix option parsing, so that "ip -o link" works again</li>
49 <li>other fixes and code size reductions in many applets</li>
50 </ul>
51 <p>
52 The email address gpl@busybox.net is the recommended way to contact
53 the Software Freedom Law Center to report BusyBox license violations.
54 </p>
55 </li>
56
57 <li><b>12 June 2008 -- Sponsors!</b>
58 <p>We want to thank the following companies which are providing support
59 for the BusyBox project:
60 </p>
61 <ul>
62 <li>AOE media, a <a href="http://www.aoemedia.com/typo3-development.html">
63 TYPO3 development agency</a> contributes financially.</li>
64 <li><a href="http://www.analog.com/en/">Analog Devices, Inc.</a> provided
65 a <a href="http://docs.blackfin.uclinux.org/doku.php?id=bf537_quick_start">
66 Blackfin development board</a> free of charge.
67 <a href="http://www.analog.com/blackfin">Blackfin</a>
68 is a NOMMU processor, and its availability for testing is invaluable.
69 If you are an embedded device developer,
70 please note that Analog Devices has entire Linux distribution available
71 for download for this board. Visit
72 <a href="http://blackfin.uclinux.org/">http://blackfin.uclinux.org/</a>
73 for more information.
74 </li>
75 </ul>
76 </li>
77
78 <li><b>5 June 2008 -- BusyBox 1.10.3 (stable)</b>
79 <p><a href="http://busybox.net/downloads/busybox-1.10.3.tar.bz2">BusyBox 1.10.3</a>.
80 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_10_stable/">svn</a>,
81 <a href="http://busybox.net/downloads/fixes-1.10.3/">patches</a>,
82 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
83 <p>
84 Bugfix-only release for 1.10.x branch. It contains fixes for dnsd, fuser, hush,
85 ip, mdev and syslogd.
86 </p>
87 </li>
88
89 <li><b>8 May 2008 -- BusyBox 1.10.2 (stable)</b>
90 <p><a href="http://busybox.net/downloads/busybox-1.10.2.tar.bz2">BusyBox 1.10.2</a>.
91 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_10_stable/">svn</a>,
92 <a href="http://busybox.net/downloads/fixes-1.10.2/">patches</a>,
93 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
94 <p>
95 Bugfix-only release for 1.10.x branch. It contains fixes for echo, httpd, pidof,
96 start-stop-daemon, tar, taskset, tab completion in shells, build system.
97 <p>Please note that mdev was backported from current svn trunk. Please
98 report if you encounter any problems with it.
99 </p>
100 </li>
101
102 <li><b>19 April 2008 -- BusyBox 1.10.1 (stable)</b>
103 <p><a href="http://busybox.net/downloads/busybox-1.10.1.tar.bz2">BusyBox 1.10.1</a>.
104 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_10_stable/">svn</a>,
105 <a href="http://busybox.net/downloads/fixes-1.10.1/">patches</a>,
106 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
107 <p>
108 Bugfix-only release for 1.10.x branch. It contains fixes for
109 fuser, init, less, nameif, tail, taskset, tcpudp, top, udhcp.
110 </li>
111
112 <li><b>21 March 2008 -- BusyBox 1.10.0 (unstable)</b>
113 <p><a href="http://busybox.net/downloads/busybox-1.10.0.tar.bz2">BusyBox 1.10.0</a>.
114 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_10_stable/">svn</a>,
115 <a href="http://busybox.net/downloads/fixes-1.10.0/">patches</a>,
116 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
117
118 <p>Sizes of busybox-1.9.2 and busybox-1.10.0 (with almost full config, static uclibc build):<pre>
119 text data bss dec hex filename
120 781405 679 7500 789584 c0c50 busybox-1.9.2
121 773551 640 7372 781563 becfb busybox-1.10.0
122</pre>
123 <p>Top 10 stack users:<pre>
124busybox-1.9.2: busybox-1.10.0:
125echo_dg 4116 bb_full_fd_action 4112
126bb_full_fd_action 4112 find_list_entry2 4096
127discard_dg 4108 readlink_main 4096
128discard_dg 4096 ipaddr_list_or_flush 3900
129echo_stream 4096 iproute_list_or_flush 3680
130discard_stream 4096 insmod_main 3152
131find_list_entry2 4096 fallbackSort 2952
132readlink_main 4096 do_iproute 2492
133ipaddr_list_or_flush 3900 cal_main 2464
134iproute_list_or_flush 3680 readhere 2308
135</pre>
136
137 <p>New applets: brctl, chat (by Vladimir Dronnikov &lt;dronnikov AT gmail.com&gt;),
138 findfs, ifenslave (closes bug 115), lpd (by Vladimir Dronnikov &lt;dronnikov AT gmail.com&gt;),
139 lpr+lpq (by Walter Harms), script (by Pascal Bellard &lt;pascal.bellard AT ads-lu.com&gt;),
140 sendmail (Vladimir Dronnikov &lt;dronnikov AT gmail.com&gt;), tac, tftpd.
141 </p>
142 <p>Made NOMMU-compatible: crond, crontab, ifupdown, inetd, init, runsv, svlogd, tcpsvd, udpsvd.
143 </p>
144 <p>Changes since previous release:
145 </p>
146 <ul>
147 <li>globally: add -Wunused-parameter</li>
148 <li>globally: add optimization barrier to all "G trick" locations</li>
149 <li>adduser/addgroup: check username for invalid chars (by Tito &lt;farmatito AT tiscali.it&gt;)</li>
150 <li>adduser: optional support for long options. Closes bug 2134</li>
151 <li>ash: handle "A=1 A=2 B=$A; echo $B". Closes bug 947</li>
152 <li>ash: make ash -c "if set -o barfoo 2&gt;/dev/null; then echo foo; else echo bar; fi" work. Closes bug 1142</li>
153 <li>build system: don't use "gcc -o /dev/null", old gcc can delete /dev/null in this case</li>
154 <li>build system: fixes for cross-compiling on an OS X host</li>
155 <li>build system: make it do without "od -t"</li>
156 <li>build system: pass CFLAGS to link stage too. Closes bug 1376</li>
157 <li>build system: add CONFIG_NOMMU</li>
158 <li>cp: add ENABLE_FEATURE_VERBOSE_CP_MESSAGE. Closes bug 1470</li>
159 <li>crontab: almost complete rewrite</li>
160 <li>dnsd: properly set _src_ IP:port on outgoing UDP packets</li>
161 <li>dpkg: fix bug where existence check was reversed</li>
162 <li>eject: add -s for SCSI- and USB-devices (Nico Erfurth)</li>
163 <li>fdisk: fix a case where break was reached only for DOS labels</li>
164 <li>fsck: don't kill pid -1! (Roy Marples &lt;roy at marples.name&gt;)</li>
165 <li>fsck_minix: fix bug in map_block2: s/(blknr &gt;= 256 * 256)/(blknr &lt; 256 * 256)/</li>
166 <li>fuser: substantial rewrite</li>
167 <li>getopt: add support for "a+" specifier for nonnegative int parameters. By Vladimir Dronnikov &lt;dronnikov at gmail.com&gt;</li>
168 <li>getty: don't try to detect parity on local lines (Joakim Tjernlund &lt;Joakim.Tjernlund at transmode.se&gt;)</li>
169 <li>halt: write wtmp entry if wtmp support is enabled</li>
170 <li>httpd: "HEAD" support. Closes bug 1530</li>
171 <li>httpd: fix bug 2004: wrong argv when interpreter is invoked</li>
172 <li>httpd: fix bug where we did chdir("") if CGI path had only one "/"</li>
173 <li>httpd: fix for POST upload</li>
174 <li>httpd: support for "I:index.xml" syntax (Peter Korsgaard &lt;jacmet AT uclibc.org&gt;)</li>
175 <li>hush: fix a case where none of pipe members could be started because of fork failure</li>
176 <li>hush: more correct handling of piping</li>
177 <li>hush: reinstate `cmd` handling for NOMMU</li>
178 <li>hush: report [v]fork failures</li>
179 <li>hush: set CLOEXEC on script file being executed</li>
180 <li>hush: try to add a bit more of vfork-friendliness</li>
181 <li>inetd: make "udp nowait" work</li>
182 <li>inetd: make inetd IPv6-capable</li>
183 <li>init: add FEATURE_KILL_REMOVED (Eugene Bordenkircher &lt;eugebo AT gmail.com&gt;)</li>
184 <li>init: allow last line of config file to be not terminated by "\n"</li>
185 <li>init: do not die if "/dev/null" is missing</li>
186 <li>init: fix bug 1111: restart actions were not splitting words</li>
187 <li>init: wait for orphaned children too while waiting for sysinit-like processes (harald-tuxbox AT arcor.de)</li>
188 <li>ip route: "ip route" was misbehaving (extra argv+1 ate 1st env var)</li>
189 <li>last: do not go into endless loop on read error</li>
190 <li>less,klogd,syslogd,nc,tcpudp: exit on signal by killing itself, not exit(1)</li>
191 <li>less: "examine" command will not bomb out on bad file name now</li>
192 <li>less: fix bug where backspace wasn't actually deleting chars</li>
193 <li>less: make it a bit more resistant against status line corruption</li>
194 <li>less: improve search when data is not supplied fast enough by stdin - now will try reading for 1-2 seconds before declaring that there is no match. This fixes a very common annoyance with long manpages</li>
195 <li>less: update line input so that it doesn't interfere with screen update. Makes "man bash", [enter], [/], &lt;enter search pattern&gt;, [enter] more usable - manpage now draws even as you enter the pattern!</li>
196 <li>libbb: filename completion matches dangling symlinks too</li>
197 <li>libbb: fix getopt state corruption for NOFORK applets</li>
198 <li>libbb: full_read/write now will report partial data counts prior to error</li>
199 <li>libbb: intrduce and use safe_gethostname. By Tito &lt;farmatito AT tiscali.it&gt;</li>
200 <li>libbb: introduce and use nonblock_safe_read(). Yay! Our shells are immune from this nasty O_NONBLOCK now!</li>
201 <li>login,su: avoid clearing environment with some options, as was intended</li>
202 <li>microcom: read more than 1 byte from device, if possible</li>
203 <li>microcom: split -d (delay) option away from -t</li>
204 <li>mktemp: support -p DIR (Timo Teras &lt;timo.teras at iki.fi&gt;)</li>
205 <li>mount: #ifdef out MOUNT_LABEL code parts if it is not selected</li>
206 <li>mount: add another mount helper call method</li>
207 <li>mount: allow and ignore _netdev option</li>
208 <li>mount: make -f work even without mtab support (Cristian Ionescu-Idbohrn &lt;cristian.ionescu-idbohrn at axis.com&gt;)</li>
209 <li>mount: optional support for -vv verbosity</li>
210 <li>mount: plug a hole where FEATURE_MOUNT_HELPERS could allow execution of arbitrary command</li>
211 <li>mount: recognize "dirsync" (closes bug 835)</li>
212 <li>mount: sanitize environment if called by non-root</li>
213 <li>mount: support for mount by label. Closes bug 1143</li>
214 <li>mount: with -vv -f, say what mount() calls we were going to make</li>
215 <li>msh: create testsuite (based on hush one)</li>
216 <li>msh: don't use floating point in "times" builtin</li>
217 <li>msh: fix Ctrl-C handling with line editing</li>
218 <li>msh: fix for bug 846 ("break" didn't work second time)</li>
219 <li>msh: glob0/glob1/glob2/glob3 were just a sorting routine, removed</li>
220 <li>msh: instead of fixing "ls | cd", "cd | ls" etc disallow builtins in pipes. They make no sense there anyway</li>
221 <li>msh: stop trying to parse variables in "msh SCRIPT VAR=val param". They are passed as ordinary parameters</li>
222 <li>netstat: print control chars as "^C" etc</li>
223 <li>nmeter: fix bug where %[mf] behaves as %[mt]</li>
224 <li>nohup: compat patch by Christoph Gysin &lt;mailinglist.cache at gmail.com&gt;</li>
225 <li>od: handle /proc files (which have filesize 0) correctly</li>
226 <li>patch: don't trash permissions of patched file</li>
227 <li>ps: add conditional support for -o [e]time</li>
228 <li>ps: fix COMMAND column adjustment; overflow in USER and VSZ columns</li>
229 <li>reset: call "stty sane". Closes bug 1414</li>
230 <li>rmdir: optional long options support for Debian users. By Roberto Gordo Saez &lt;roberto.gordo AT gmail.com&gt;</li>
231 <li>run-parts: add --reverse</li>
232 <li>script: correctly handle buffered "tail" of output</li>
233 <li>sed: "n" command must reset "we had successful subst" flag. Closes bug 1214</li>
234 <li>sort: -z outputs NUL terminated lines. Closes bug 1591</li>
235 <li>stty: fix mishandling of control keywords (Ralf Friedl &lt;Ralf.Friedl AT online.de&gt;)</li>
236 <li>switch_root: stop at first non-option. Closes bug 1425</li>
237 <li>syslogd: avoid excessive time() system calls</li>
238 <li>syslogd: don't die if remote host's IP cannot be resolved. Retry resolutions every two minutes instead</li>
239 <li>syslogd: fix shmat error check</li>
240 <li>syslogd: optional support for dropping dups. Closes bug 436</li>
241 <li>syslogd: send "\n"-terminated messages over the network. Fully closes bug 1574</li>
242 <li>syslogd: tighten up hostname handling</li>
243 <li>tail: fix "tail -c 20 /dev/huge_disk" (was taking ages)</li>
244 <li>tar: compat: handle tarballs with only one zero block at the end</li>
245 <li>tar: autodetection of gz/bz2 compressed tarballs. Closes bug 992</li>
246 <li>tar: real support for -p. By Natanael Copa &lt;natanael.copa at gmail.com&gt;</li>
247 <li>tcpudp: narrow down time window where we have no wildcard socket</li>
248 <li>telnetd: use login always, not "sometimes login, sometimes shell"</li>
249 <li>test: fix mishandling of "test ! arg1 op arg2 more args"</li>
250 <li>trylink: instead of build error, disable --gc-sections if GLIBC and STATIC are selected</li>
251 <li>udhcp: make file paths configurable</li>
252 <li>udhcp: optional support for non-standard DHCP ports</li>
253 <li>udhcp: set correct op byte in the packet for DHCPDECLINE</li>
254 <li>udhcpc: filter unwanted packets in kernel (Cristian Ionescu-Idbohrn &lt;cristian.ionescu-idbohrn AT axis.com&gt;)</li>
255 <li>udhcpc: fix wrong options in decline and release packets (Jonas Danielsson &lt;jonas.danielsson AT axis.com&gt;)</li>
256 <li>umount: do not complain several times about the same mountpoint</li>
257 <li>umount: do not try to free loop device or erase mtab if remounted ro</li>
258 <li>umount: instead of non-standard -D, use -d with opposite meaning. Closes bug 1604</li>
259 <li>unlzma: shrink by Pascal Bellard &lt;pascal.bellard AT ads-lu.com&gt;</li>
260 <li>unzip: do not try to read entire compressed stream at once (it can be huge)</li>
261 <li>unzip: handle short reads correctly</li>
262 <li>vi: many fixes</li>
263 <li>zcip: don't chdir to root</li>
264 <li>zcip: open ARP socket before openlog (else we can trash syslog socket)</li>
265 </ul>
266 </li>
267
268 <li><b>21 March 2008 -- BusyBox old stable releases</b>
269 <p>
270 Bugfix-only releases for four past branches. Links to locations
271 for future hot patches are in parentheses.
272 <p>
273 <a href="http://busybox.net/downloads/busybox-1.9.2.tar.bz2">1.9.2</a>
274 (<a href="http://busybox.net/downloads/fixes-1.9.2/">patches</a>),
275 <a href="http://busybox.net/downloads/busybox-1.8.3.tar.bz2">1.8.3</a>
276 (<a href="http://busybox.net/downloads/fixes-1.8.3/">patches</a>),
277 <a href="http://busybox.net/downloads/busybox-1.7.5.tar.bz2">1.7.5</a>
278 (<a href="http://busybox.net/downloads/fixes-1.7.5/">patches</a>),
279 <a href="http://busybox.net/downloads/busybox-1.5.2.tar.bz2">1.5.2</a>
280 (<a href="http://busybox.net/downloads/fixes-1.5.2/">patches</a>).
281 <p>
282 <a href="http://busybox.net/fix.html">How to add a patch.</a>
283 </p>
284
285
286 <li><b>12 February 2008 -- BusyBox 1.9.1 (stable)</b>
287 <p><a href="http://busybox.net/downloads/busybox-1.9.1.tar.bz2">BusyBox 1.9.1</a>.
288 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_9_stable/">svn</a>,
289 <a href="http://busybox.net/downloads/fixes-1.9.1/">patches</a>,
290 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
291
292 <p>This is a bugfix-only release, with fixes to fsck,
293 iproute, mdev, mkswap, msh, nameif, stty, test, zcip.</p>
294 <p>hush has `command` expansion re-enabled for NOMMU, although it is
295 inherently unsafe (by virtue of NOMMU's use of vfork instead of fork).
296 The plan is to make this less likely to bite people in future versions.</p>
297 </li>
298
299 <li><b>24 December 2007 -- BusyBox 1.9.0 (unstable)</b>
300 <p><a href="http://busybox.net/downloads/busybox-1.9.0.tar.bz2">BusyBox 1.9.0</a>.
301 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_9_stable/">svn</a>,
302 <a href="http://busybox.net/downloads/fixes-1.9.0/">patches</a>,
303 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
304
305 <p>Sizes of busybox-1.8.2 and busybox-1.9.0 (with almost full config, static uclibc build):<pre>
306 text data bss dec hex filename
307 792796 978 9724 803498 c42aa busybox-1.8.2
308 783803 683 7508 791994 c15ba busybox-1.9.0
309</pre>
310 <p>Top 10 stack users:<pre>
311busybox-1.8.2: busybox-1.9.0:
312input_tab 10428 echo_dg 4116
313umount_main 8252 bb_full_fd_action 4112
314rtnl_talk 8240 discard_dg 4096
315xrtnl_dump_filter 8240 echo_stream 4096
316sendMTFValues 5316 discard_stream 4096
317mainSort 4700 find_list_entry2 4096
318mkfs_minix_main 4288 readlink_main 4096
319grave 4260 ipaddr_list_or_flush 3900
320unix_do_one 4156 iproute_list_or_flush 3680
321parse_prompt 4132 insmod_main 3152
322</pre>
323
324 <p>lash is deleted from this release. hush can be configured down to almost
325 the same size, but it is significantly less buggy. It even works
326 on NOMMU machines (interactive mode and backticks are not working on NOMMU,
327 though). "lash" applet is still available, but it runs hush.
328
329 <p>init has some changes in this release, please report if it causes
330 problems for you.
331
332 <p>Changes since previous release:
333 <ul>
334 <li>Build system improvements
335 <li>Testsuite additions
336 <li>Stack size reductions, code size reductions, data/bss reductions
337 <li>An option to prefer IPv4 address if host has both
338 <li>New applets: hd, sestatus
339 <li>Removed applets: lash
340 <li>hush: fixed a few bugs, wired up echo and test to be builtins
341 <li>init: simplify forking of children
342 <li>getty: special handling of '#' and '@' is removed
343 <li>[su]login: sanitize environment if called by non-root
344 <li>udhcpc: support "bad" servers which send oversized packets
345 (Cristian Ionescu-Idbohrn &lt;cristian.ionescu-idbohrn at axis.com&gt;)
346 <li>udhcpc: -O option allows to specify which options to ask for
347 (Stefan Hellermann &lt;stefan at the2masters.de&gt;)
348 <li>udhcpc: optionally check whether given IP is really free (by ARP ping)
349 (Jonas Danielsson &lt;jonas.danielsson at axis.com&gt;)
350 <li>vi: now handles files with unlimited line length
351 <li>vi: speedup for huge line lengths
352 <li>vi: Del key works
353 <li>sed: support GNUism '\t'
354 <li>cp/mv/install: optionally use bigger buffer for bulk copying
355 <li>line editing: don't eat stack like crazy
356 <li>passwd: follows symlinked /etc/passwd
357 <li>renice: accepts priority with +N too
358 <li>netstat: wide output mode
359 <li>nameif: extended matching (Nico Erfurth &lt;masta at perlgolf.de&gt;)
360 <li>test: become NOFORK applet
361 <li>find: -iname (Alexander Griesser &lt;alexander.griesser at lkh-vil.or.at&gt;)
362 <li>df: -i option (show inode info) (Pascal Bellard &lt;pascal.bellard at ads-lu.com&gt;)
363 <li>hexdump: -R option (Pascal Bellard &lt;pascal.bellard at ads-lu.com&gt;)
364 </ul>
365 </li>
366
367 <li><b>23 November 2007 -- BusyBox 1.8.2 (stable), BusyBox 1.7.4 (stable)</b>
368 <p><a href="http://busybox.net/downloads/busybox-1.8.2.tar.bz2">BusyBox 1.8.2</a>.
369 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_8_stable/">svn</a>,
370 <a href="http://busybox.net/downloads/fixes-1.8.2/">patches</a>,
371 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
372 <p><a href="http://busybox.net/downloads/busybox-1.7.4.tar.bz2">BusyBox 1.7.4</a>.
373 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_7_stable/">svn</a>,
374 <a href="http://busybox.net/downloads/fixes-1.7.4/">patches</a>,
375 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
376
377 <p>These are bugfix-only releases.
378 1.8.2 contains fixes for inetd, lash, tar, tr, and build system.
379 1.7.4 contains a fix for inetd.</p>
380 </li>
381
382 <li><b>9 November 2007 -- BusyBox 1.8.1 (stable)</b>
383 <p><a href="http://busybox.net/downloads/busybox-1.8.1.tar.bz2">BusyBox 1.8.1</a>.
384 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_8_stable/">svn</a>,
385 <a href="http://busybox.net/downloads/fixes-1.8.1/">patches</a>,
386 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
387
388 <p>This is a bugfix-only release, with fixes to login (PAM), modprobe, syslogd, telnetd, unzip.</p>
389 </li>
390
391 <li><b>4 November 2007 -- BusyBox 1.8.0 (unstable)</b>
392 <p><a href="http://busybox.net/downloads/busybox-1.8.0.tar.bz2">BusyBox 1.8.0</a>.
393 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_8_stable/">svn</a>,
394 <a href="http://busybox.net/downloads/fixes-1.8.0/">patches</a>,
395 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
396
397 <p>Note: this is probably the very last release with lash. It will be dropped. Please migrate to hush.
398
399 <p>Applets which had many changes since 1.7.x:
400 <p>httpd:
401 <ul>
402 <li>does not clear environment, CGIs will see all environment variables which were set for httpd
403 <li>fix bug where we were trying to read more POSTDATA than content-length
404 <li>fix trivial bug (spotted by Alex Landau)
405 <li>optional support for partial downloads
406 <li>simplified CGI i/o loop (now it looks good to me)
407 <li>small auth and IPv6 fixes (Kim B. Heino &lt;Kim.Heino at bluegiga.com>)
408 <li>support for proxying connection to other http server (by Alex Landau &lt;landau_alex at yahoo.com>)
409 </ul>
410
411 <p>top:
412 <ul>
413 <li>TOPMEM feature - 's(how sizes)' command
414 <li>don't wait before final bailout (try top -b -n1)
415 <li>fix for command line wrapping
416 </ul>
417
418 <p>Build system improvements: libbusybox mode restored (it was lost in transition to new makefiles).
419
420 <p>Code and data size in comparison with 1.7.3:<pre>
421Equivalent .config, i386 uclibc static builds:
422 text data bss dec hex filename
423 768123 1055 10768 779946 be6aa busybox-1.7.3/busybox
424 759693 974 9420 770087 bc027 busybox-1.8.0/busybox</pre>
425
426 <p>New applets:
427 <ul>
428 <li>microcom: new applet by Vladimir Dronnikov &lt;dronnikov at gmail.ru&gt;
429 <li>kbd_mode: new applet by Loic Grenie &lt;loic.grenie at gmail.com&gt;
430 <li>bzip2: port bzip2 1.0.4 to busybox, 9 kb of code
431 <li>pgrep, pkill: new applets by Loic Grenie &lt;loic.grenie at gmail.com&gt;
432 <li>setsebool: new applet (Yuichi Nakamura &lt;ynakam at hitachisoft.jp&gt;)
433 </ul>
434
435 <p>Other changes since previous release (abridged):
436 <ul>
437 <li>cp: -r and -R imply -d (coreutils compat)
438 <li>cp: detect and prevent infinite recursion
439 <li>cp: make it a bit closer to POSIX, but still refuse to open and overwrite symbolic link
440 <li>hdparm: reduce possibility of numeric overflow in -T
441 <li>hdparm: simplify timing measurement
442 <li>wget: -O FILE is allowed to overwrite existing file (compat)
443 <li>wget: allow dots in header field names
444 <li>telnetd: add -K option to close sessions as soon as child exits
445 <li>telnetd: don't SIGKILL child when closing the session, kernel will send SIGHUP for us
446 <li>ed: large cleanup, add line editing
447 <li>hush: feeble attempt at making it more NOMMU-friendly
448 <li>hush: fix glob()
449 <li>hush: stop doing manual accounting of open fd's, kernel can do it for us
450 <li>adduser: implement -S and fix uid selection
451 <li>ash: fix prompt expansion (Natanael Copa &lt;natanael.copa at gmail.com&gt;)
452 <li>ash: revert "cat | jobs" fix, it causes more problems than good
453 <li>find: fix -xdev behavior in the presence of two or more nested mount points
454 <li>grep: fix grep -F -e str1 -e str2 (was matching str2 only)
455 <li>grep: optimization: stop on first -e match
456 <li>gunzip: support concatenated gz files
457 <li>inetd: fix bug 1562 "inetd does not set argv[0] properly" (fix by Ilya Panfilov)
458 <li>install: 'support' (by ignoring) -v and -b
459 <li>install: fix bug in "install -c file dir" (tried to copy dir into dir too)
460 <li>ip: tunnel parameter parsing fix by Jean Wolter &lt;jw5 at os.inf.tu-dresden.de&gt;
461 <li>isrv: use monotonic_sec
462 <li>less: make 'f' key page forward
463 <li>libiproute: add missing break statements
464 <li>load_policy: update (Yuichi Nakamura &lt;ynakam at hitachisoft.jp&gt;)
465 <li>logger: fix a problem of losing all argv except first
466 <li>login: do reject wrong passwords with PAM auth
467 <li>losetup: support -f (Loic Grenie &lt;loic.grenie at gmail.com&gt;)
468 <li>fdisk: make fdisk compile on libc without llseek64
469 <li>libbb: by popular request allow PATH to be customized at build time
470 <li>mkswap: selinux support by KaiGai Kohei &lt;kaigai at ak.jp.nec.com&gt;
471 <li>mount: allow (and ignore) -i
472 <li>mount: ignore NFS bg option on NOMMU machines
473 <li>mount: mount helpers support (by Vladimir Dronnikov &lt;dronnikov at gmail.ru&gt;)
474 <li>passwd: handle Ctrl-C, restore termios on Ctrl-C
475 <li>passwd: SELinux support by KaiGai Kohei &lt;kaigai at ak.jp.nec.com&gt;
476 <li>ping: make -I ethN work too (-I addr already worked)
477 <li>ps: fix RSS parsing (rss field in /proc/PID/stat is in pages, not bytes)
478 <li>read_line_input: fix it to not do any fancy editing if echoing is disabled
479 <li>run_parts: make it sort executables by name (required by API)
480 <li>runsv: do not use clock_gettime if !MONOTONIC_CLOCK
481 <li>runsvdir: fix "linear wait time" bug
482 <li>sulogin: remove alarm handling, it is redundant there
483 <li>svlogd: compat: svlogd -tt should timestamp stderr too
484 <li>syslogd: bail out if you see null read from Unix socket
485 <li>syslogd: do not need to poll(), we can just block in read()
486 <li>tail: work correctly on /proc files (Kazuo TAKADA &lt;kztakada at sm.sony.co.jp&gt;)
487 <li>tar + gzip/bzip2/etc: support NOMMU machines (by Alex Landau &lt;landau_alex at yahoo.com&gt;)
488 <li>tar: strip leading '/' BEFORE memorizing hardlink's name
489 <li>tftp: fix infinite retry bug
490 <li>umount: support (by ignoring) -i; style fixes
491 <li>unzip: fix endianness bugs
492 <li>vi: don't wait 50 ms before reading ESC sequences
493 <li>watchdog: allow millisecond spec (-t 250ms)
494 <li>zcip: fix unaligned trap on ARM
495 </ul>
496 </li>
497
498 <li><b>4 November 2007 -- BusyBox 1.7.3 (stable)</b>
499 <p><a href="http://busybox.net/downloads/busybox-1.7.3.tar.bz2">BusyBox 1.7.3</a>.
500 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_7_stable/">svn</a>,
501 <a href="http://busybox.net/downloads/fixes-1.7.3/">patches</a>,
502 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
503
504 <p>This is a bugfix-only release, with fixes to ash, httpd, inetd, iptun, logger, login, tail.</p>
505 </li>
506
507 <li><b>30 September 2007 -- BusyBox 1.7.2 (stable)</b>
508 <p><a href="http://busybox.net/downloads/busybox-1.7.2.tar.bz2">BusyBox 1.7.2</a>.
509 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_7_stable/">svn</a>,
510 <a href="http://busybox.net/downloads/fixes-1.7.2/">patches</a>,
511 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
512
513 <p>This is a bugfix-only release, with fixes to install, find, login, httpd, runsvdir, chcon, setfiles, fdisk and line editing.</p>
514 </li>
515
516 <li><b>16 September 2007 -- BusyBox 1.7.1 (stable)</b>
517 <p><a href="http://busybox.net/downloads/busybox-1.7.1.tar.bz2">BusyBox 1.7.1</a>.
518 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_7_stable/">svn</a>,
519 <a href="http://busybox.net/downloads/fixes-1.7.1/">patches</a>,
520 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
521
522 <p>This is a bugfix-only release, with fixes to cp, runsv, tar, busybox --install and build system.</p>
523 </li>
524
525 <li><b>24 August 2007 -- BusyBox 1.7.0 (unstable)</b>
526 <p><a href="http://busybox.net/downloads/busybox-1.7.0.tar.bz2">BusyBox 1.7.0</a>.
527 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_7_stable/">svn</a>,
528 <a href="http://busybox.net/downloads/fixes-1.7.0/">patches</a>,
529 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
530
531 <p>Applets which had many changes since 1.6.x:
532 <p>httpd:
533 <ul>
534 <li>works in standalone mode on NOMMU machines now (partly by Alex Landau &lt;landau_alex at yahoo.com&gt;)
535 <li>indexer example is rewritten in C
536 <li>optional support for error pages (by Pierre Metras &lt;genepi at sympatico.ca&gt;)
537 <li>stop reading headers using 1-byte reads
538 <li>new option -v[v]: prints client addresses, HTTP codes returned, URLs
539 <li>extended -p PORT to -p [IP[v6]:]PORT
540 <li>sendfile support (by Pierre Metras &lt;genepi at sympatico.ca&gt;)
541 <li>add support for Status: CGI header
542 <li>fix CGI handling bug (we were closing wrong fd)
543 <li>CGI I/O loop still doesn't look 100% ok to me...
544 </ul>
545
546 <p>udhcp[cd]:
547 <ul>
548 <li>add -f "foreground" and -S "syslog" options
549 <li>fixed "ifupdown + udhcpc_without_pidfile_creation" bug
550 <li>new config option "Rewrite the lease file at every new acknowledge" (Mats Erik Andersson &lt;mats at blue2net.com&gt; (Blue2Net AB))
551 <li>consistently treat server_config.start/end IPs as host-order
552 <li>fix IP parsing for 64bit machines
553 <li>fix unsafe hton macro usage in read_opt()
554 <li>do not chdir to / when daemonizing
555 </ul>
556
557 <p>top, ps, killall, pidof:
558 <ul>
559 <li>simpler loadavg processing
560 <li>truncate usernames to 8 chars
561 <li>fix non-CONFIG_DESKTOP ps -ww (by rockeychu)
562 <li>improve /proc/PID/cmdinfo reading code
563 <li>use cmdline, not comm field (fixes problems with re-execed applets showing as processes with name "exe", and not being found by pidof/killall by applet name)
564 <li>reduce CPU usage in decimal conversion (optional) (corresponding speedup on kernel side is accepted in mainline Linux kernel, yay!)
565 <li>make percentile (0.1%) calculations configurable
566 <li>add config option and code for global CPU% display
567 <li>reorder columns, so that [P]PIDs are together and VSZ/%MEM are together - makes more sense
568 </ul>
569
570 <p>Build system improvements: doesn't link against libraries we don't need,
571 generates verbose link output and map file, allows for custom link
572 scripts (useful for removing extra padding, among other things).
573
574 <p>Code and data size in comparison with 1.6.1:<pre>
575Equivalent .config, i386 glibc dynamic builds:
576 text data bss dec hex filename
577 672671 2768 16808 692247 a9017 busybox-1.6.1/busybox
578 662948 2660 13528 679136 a5ce0 busybox-1.7.0/busybox
579 662783 2631 13416 678830 a5bae busybox-1.7.0/busybox.customld
580
581Same .config built against static uclibc:
582 765021 1059 11020 777100 bdb8c busybox-1.7.0/busybox_uc</pre>
583
584 <p>Code/data shrink done in applets: crond, hdparm, dd, cal, od, nc, expr, uuencode,
585 test, slattach, diff, ping, tr, syslogd, hwclock, zcip, find, pidof, ash, uudecode,
586 runit/*, in libbb.
587
588 <p>New applets:
589 <ul>
590 <li>pscan, expand, unexpand (from Tito &lt;farmatito at tiscali.it&gt;)
591 <li>setfiles, restorecon (by Yuichi Nakamura &lt;ynakam at hitachisoft.jp&gt;)
592 <li>chpasswd (by Alexander Shishkin &lt;virtuoso at slind.org&gt;)
593 <li>slattach, ttysize
594 </ul>
595
596 <p>Unfortunately, not much work is done on shells. This was mostly stalled
597 by lack of time (read: laziness) on my part to learn how to adapt existing
598 qemu-runnable image for a NOMMU architechture (available on qemu website)
599 for local testing of cross-compiled busybox on my machine.
600
601 <p>Other changes since previous release (abridged):
602 <ul>
603 <li>addgroup: disallow addgroup -g num user group; make -g 0 work (Tito &lt;farmatito at tiscali.it&gt;)
604 <li>adduser: close /etc/{passwd,shadow} before calling passwd etc. Spotted by Natanael Copa &lt;natanael.copa at gmail.com&gt;
605 <li>arping: -i should be -I, fixed
606 <li>ash: make "jobs | cat" work like in bash (was giving empty output)
607 <li>ash: recognize -l as --login equivalent; do not recognize +-login
608 <li>ash: fix buglet in DEBUG code (Nguyen Thai Ngoc Duy &lt;pclouds at gmail.com&gt;)
609 <li>ash: fix SEGV if type has zero parameters
610 <li>awk: fix -F 'regex' bug (miscounted fields if last field is empty)
611 <li>catv: catv without arguments was trying to use environ as argv (Alex Landau &lt;landau_alex at yahoo.com&gt;)
612 <li>catv: don't die on open error (emit warning)
613 <li>chown/chgrp: completely match coreutils 6.8 wrt symlink handling
614 <li>correct_password: do not print "no shadow passwd..." message
615 <li>crond: don't start sendmail with absolute path, don't report obsolete version (report true bbox version)
616 <li>dd: fix bug where we assume count=INT_MAX when count is unspecified
617 <li>devfsd: sanitization by Tito &lt;farmatito at tiscali.it&gt;
618 <li>echo: fix non-fancy echo
619 <li>fdisk: make it work with big disks (read: typical today's disks) even if CONFIG_LFS is unset
620 <li>find: -context support for SELinux (KaiGai Kohei &lt;kaigai at kaigai.gr.jp&gt;)
621 <li>find: add conditional support for -maxdepth and -regex, make -size match GNU find
622 <li>find: fix build failure on certain configs (found by Cristian Ionescu-Idbohrn &lt;cristian.ionescu-idbohrn at axis.com&gt;)
623 <li>fsck_minix: make it print bb version, not it's own (outdated/irrelevant) one
624 <li>grep: implement -m MAX_MATCHES, fix buglets with context printing
625 <li>grep: fix selection done by FEATURE_GREP_EGREP_ALIAS (Maxime Bizon &lt;mbizon at freebox.fr&gt; (Freebox))
626 <li>hush: add missing dependencies (Maxime Bizon &lt;mbizon at freebox.fr&gt; (Freebox))
627 <li>hush: fix read builtin to not read ahead past EOL and to not use insane amounts of stack
628 <li>ifconfig: make it work with ifaces with interface no. &gt; 255
629 <li>ifup/ifdown: make location of ifstate configurable
630 <li>ifupdown: make netmask parsing smaller and more strict (was accepting 255.0.255.0, 255.1234.0.0 etc...)
631 <li>install: fix -s (strip) option, fix install a b /a/link/to/dir
632 <li>libbb: consolidate ARRAY_SIZE macro (Walter Harms &lt;wharms at bfs.de&gt;)
633 <li>libbb: make /etc/network parsing configurable. -200 bytes when off
634 <li>libbb: nuke BB_GETOPT_ERROR, always die if there are mutually exclusive options
635 <li>libbb: xioctl and friends by Tito &lt;farmatito at tiscali.it&gt;
636 <li>login: optional support for PAM
637 <li>login: make /etc/nologin support configurable (-240 bytes)
638 <li>login: ask passwords even for wrong usernames
639 <li>md5_sha1_sum: fix mishandling when run as /bin/md5sum
640 <li>mdev: add support for firmware loading
641 <li>mdev: work even when CONFIG_SYSFS_DEPRECATED in kernel is off
642 <li>modprobe: add scanning of /lib/modules/`uname -r`/modules.symbols (by Yann E. MORIN &lt;yann.morin.1998 at anciens.enib.fr&gt;)
643 <li>more: fixes by Tristan Schmelcher &lt;tpkschme at engmail.uwaterloo.ca&gt;
644 <li>nc: make connecting to IPv4 from IPv6-enabled hosts easier (was requiring -s local_addr)
645 <li>passwd: fix bug "updating shadow even if user's record is in passwd"
646 <li>patch: fix -p -1 handling
647 <li>patch: fix bad line ending handling (Nguyen Thai Ngoc Duy &lt;pclouds at gmail.com&gt;)
648 <li>ping: display roundtrip times with 1/1000th of ms, not 1/10 ms precision.
649 <li>ping: fix incorrect handling of -I (Iouri Kharon &lt;bc-info at styx.cabel.net&gt;)
650 <li>ping: fix non-fancy ping6
651 <li>printenv: fix "printenv VAR1 VAR2" bug (spotted by Kalyanatejaswi Balabhadrapatruni &lt;kalyanatejaswi at yahoo.co.in&gt;)
652 <li>ps: fix -Z (by Yuichi Nakamura &lt;ynakam at hitachisoft.jp&gt;)
653 <li>rpm: add optional support for bz2 data. +50 bytes of code
654 <li>rpm: fix bogus "package is not installed" case
655 <li>sed: fix 'q' command handling (by Nguyen Thai Ngoc Duy &lt;pclouds at gmail.com&gt;)
656 <li>start_stop_daemon: NOMMU fixes by Alex Landau &lt;landau_alex at yahoo.com&gt;
657 <li>stat: fix option -Z SEGV
658 <li>strings: strings a b was processing a twice, fix that
659 <li>svlogd: fix timestamping, do not warn if config is missing
660 <li>syslogd, logread: get rid of head pointer, fix logread bug in the process
661 <li>syslogd: do not convert tabs to ^I, set syslog IPC buffer to mode 0644
662 <li>tar: improve OLDGNU compat, make old SUN compat configurable
663 <li>test: fix testing primary expressions like '"-u" = "-u"'
664 <li>uudecode: fix to base64 decode by Jorgen Cederlof &lt;jcz at google.com&gt;
665 <li>vi: multiple fixes by Natanael Copa &lt;natanael.copa at gmail.com&gt;
666 <li>wget: fix bug in base64 encoding (bug 1404). +10 bytes
667 <li>wget: lift 256 chars limitation on terminal width
668 <li>wget, zcip: use monotonic_sec instead of gettimeofday
669 </ul>
670 </li>
671
672 <li><b>30 June 2007 -- BusyBox 1.6.1 (stable)</b>
673 <p><a href="http://busybox.net/downloads/busybox-1.6.1.tar.bz2">BusyBox 1.6.1</a>.
674 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_6_stable/">svn</a>,
675 <a href="http://busybox.net/downloads/fixes-1.6.1/">patches</a>,
676 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
677
678 <p>This is a bugfix-only release, with fixes to echo, hush, and wget.</p>
679 </li>
680
681 <li><b>1 June 2007 -- BusyBox 1.6.0 (unstable)</b>
682 <p><a href="http://busybox.net/downloads/busybox-1.6.0.tar.bz2">BusyBox 1.6.0</a>.
683 (<a href="http://sources.busybox.net/index.py/branches/busybox_1_6_stable/">svn</a>,
684 <a href="http://busybox.net/downloads/fixes-1.6.0/">patches</a>,
685 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
686
687 <p>Since this is a x.x.0 release, it probably does not deserve "stable"
688 label. Please help making 1.6.1 stable by testing 1.6.0.</p>
689 <p>Note that hush shell had many changes and (hopefully) is much improved now,
690 but there is a possibility that it regressed in some obscure cases. Please
691 report any such cases.</p>
692 <p>lash users please note: lash is going to be deprecated in busybox 1.7.0
693 and removed in the more distant future. Please migrate to hush.</p>
694 <p><a href="http://busybox.net/~vda/mem_usage-1.6.0.txt">Memory usage has decreased, but we can do better still</a></p>
695 <p>Other changes since previous release:
696 <ul>
697<li>NOFORK: audit small applets and mark some of them as NOFORK. Put big scary warnings in relevant places
698<li>NOFORK: factor out NOFORK/NOEXEC code from find. Use NOFORK/NOEXEC in find and xargs
699<li>NOFORK: remove potential xmalloc from NOFORK path in bb_full_fd_action
700<li>NOMMU: random fixes; compressed --help now works for NOMMU
701<li>SELinux: load_policy applet
702<li>[u]mount: extend -t option (Roy Marples &lt;uberlord at gentoo.org&gt;)
703<li>addgroup: clean up, fix adding users to existing groups and make it optional (Tito)
704<li>adduser: don't bomb out if shadow password file doesn't exist (from Tito &lt;farmatito at tiscali.it&gt;)
705<li>applet.c: do not even try to read config if run by real root; fix suid config handling
706<li>ash: fix infinite loop on exit if tty is not there anymore
707<li>ash: fix kill -l (by Mats Erik Andersson &lt;mats.andersson64 at comhem.se&gt;)
708<li>ash: implement type -p, costs less than 10 bytes (patch by Mats Erik Andersson &lt;mats.andersson64 at comhem.se&gt;)
709<li>awk: don't segfault on printf(%*s). Closes bug 1337
710<li>awk: guard against empty environment
711<li>awk: some 'lineno' vars were shorts, made them ints (code got smaller)
712<li>cat: stop using stdio.h opens
713<li>config system: clarify PREFER_APPLETS/SH_STANDALONE effects in help text
714<li>cryptpw: new applet (by Thomas Lundquist &lt;lists at zelow.no&gt;)
715<li>cttyhack: new applet
716<li>dd: NOEXEC fix; fix skip= parse error (spotted by Dirk Clemens &lt;develop at cle-mens.de&gt;)
717<li>deluser: add optional support for removing users from groups (by Tito &lt;farmatito at tiscali.it&gt;)
718<li>diff: fix SEGV (NULL deref) in diff -N
719<li>diff: fix segfault on empty dirs (Peter Korsgaard &lt;peter.korsgaard at barco.com&gt;)
720<li>dnsd: fix several buglets, make smaller; openlog(), so that applet's name is logged
721<li>dpkg: run_package_script() returns 0 if all ok and non-zero if failure. The result code was checked incorrectly in two places. (from Kim B. Heino &lt;Kim.Heino at bluegiga.com&gt;)
722<li>dpkg: use bitfields which are a bit closer to typical short/char. Code size -800 bytes
723<li>dumpleases: getopt32()-ization (from Mats Erik Andersson &lt;mats.andersson64 at comhem.se&gt;)
724<li>e2fsprogs: stop using statics in chattr. Minor code shrinkage (-130 bytes)
725<li>ether-wake: close bug 1317. Reorder fuctions to avoid forward refs while at it
726<li>ether-wake: save a few more bytes of code
727<li>find: -group, -depth (Natanael Copa &lt;natanael.copa at gmail.com&gt;)
728<li>find: add support for -delete, -path (by Natanael Copa)
729<li>find: fix -prune. Add big comment about it
730<li>find: improve usage text (Natanael Copa &lt;natanael.copa at gmail.com&gt;)
731<li>find: missed 'static' on const data; size and prune were mixed up; use index_in_str_array
732<li>find: un-DESKTOPize (Kai Schwenzfeier &lt;niteblade at gmx.net&gt;)
733<li>find_root_device: teach to deal with /dev/ subdirs (by Kirill K. Smirnov &lt;lich at math.spbu.ru&gt;)
734<li>find_root_device: use lstat - don't follow links
735<li>getopt32: fix llist_t options ordering. llist_rev is now unused
736<li>getopt: use getopt32 for option parsing - inspired by patch by Mats Erik Andersson &lt;mats.andersson64 at comhem.se&gt;
737<li>hdparm: fix multisector mode setting (from Toni Mirabete &lt;amirabete at catix.cat&gt;)
738<li>hdparm: make -T -t code smaller (-194 bytes), and output prettier
739<li>ifupdown: make it possible to use DHCP clients different from udhcp
740<li>ifupdown: reread state file before rewriting it. Fixes "ifup started another ifup" state corruption bug. Patch by Natanael Copa &lt;natanael.copa at gmail.com&gt;
741<li>ifupdown: small optimization (avoid doing useless work if we are not going to update state file)
742<li>ip: fix compilation if FEATURE_TR_CLASSES is off
743<li>ip: mv ip*_main into ip.c; use a dispatcher to save on needless duplication. Saves a minor 12b
744<li>ip: rewrite the ip applet to be less bloaty. Convert to index_in_(sub)str_array()
745<li>ip: set the scope properly. Thanks to Jean Wolter
746<li>iplink: shrink iplink; sanitize libiproute a bit (-916 bytes)
747<li>iproute: shrink a bit (-200 bytes)
748<li>kill: know much more signals; make code smaller; use common code for kill applet and ash kill builtin
749<li>klogd: remove dependency on syslogd
750<li>lash: "forking" applets are actually can be treated the same way as "non-forked". Also save a bit of space on trailing NULL array elements.
751<li>lash: fix kill buglet (didn't properly recognize ESRCH)
752<li>lash: make -c work; crush buffer overrun and free of non-malloced ptr (from Mats Erik Andersson &lt;mats.andersson64 at comhem.se&gt;)
753<li>lash: recognize and use NOFORK applets
754<li>less: fix case when regex search finds nothing; fix very obscure memory corruption bug; fix less &lt;HUGEFILE + [End] busy loop
755<li>libbb: add xsendto, xunlink, xpipe
756<li>libbb: fix segfault in reset_ino_dev_hashtable() when *hashtable was NULL
757<li>libbb: make pidfile writing configurable
758<li>libbb: make xsocket die with address family printed (if VERBOSE_RESOLUTION_ERRORS=y)
759<li>libbb: rework NOMMU helper API so that it makes more sense and easier to use
760<li>libiproute: audit callgraph, shortcut error paths into die() functions
761<li>lineedit: do not try to open NULL history file
762<li>lineedit: nuke two unused variables and code which sets them
763<li>login: remove setpgrp call (makes it work from shell prompt again); sanitize stdio descriptors (we are suid, need to be careful!)
764<li>login: shrink login and set_environment by ~100 bytes
765<li>mount: fix incorrect usage of strtok (inadvertently used NULL sometimes)
766<li>mount: fix mounting of symlinks (mount from util-linux allows that)
767<li>msh: data/bss reduction (more than 9k of it); fix "underscore bug" (a_b=1111 didn't work); fix obscure case with backticks and closed fd 1
768<li>nc: port nc 1.10 to busybox
769<li>netstat: fix for bogus state value for raw sockets
770<li>netstat: introduce -W: wide, ipv6-friendly output; shrink by ~500 bytes
771<li>nmeter: should die if stdout doesn't like him anymore
772<li>patch: do not try to delete same file twice
773<li>ping: fix wrong sign extension of packet id (bug 1373)
774<li>ps: add -o tty and -o rss support; make a bit smaller; work around libc bug: printf("%.*s\n", MAX_INT, buffer)
775<li>run_parts: rewrite
776<li>run_parts: do not check path portion of a name for "bad chars". Needed for ifupdown. Patch by Gabriel L. Somlo &lt;somlo at cmu.edu&gt;
777<li>sed: fix escaped newlines in -f
778<li>split: new applet
779<li>stat: remove superfluous bss user (flags) and manually unswitch some areas
780<li>stty: fix option parsing bug (spotted by Sascha Hauer &lt;s.hauer at pengutronix.de&gt;)
781<li>svlogd: fix 'SEGV on uninitialized data' and make it honor TERM
782<li>tail: fix SEGV on "tail -N"
783<li>ipsvd: tcpsvd,udpsvd are new applets, GPL-ed 'clones' of Dan Bernstein's tcpserver. Author: Gerrit Pape &lt;pape at smarden.org&gt;, http://smarden.sunsite.dk/ipsvd/
784<li>test: close bug 1371; plug a memory leak; code size reduction
785<li>tftp: code diet, and I think retransmits were broken
786<li>tr: fix bug where we did not reject invalid classes like '[[:alpha'. debloat while at it
787<li>udhcp: MAC_BCAST_ADDR and blank_chaddr are in fact constant, move to rodata; use pipe instead of socketpair
788<li>udhcp[cd]: stop using atexit magic fir pidfile removal; stop deleting our own pidfile if we daemonize
789<li>xargs: shrink code, ~80 bytes; simplify word list management
790<li>zcip: make it work on NOMMU (+ improve NOMMU support machinery)
791 </ul>
792 </li>
793
794 <li><b>20 May 2007 -- BusyBox 1.5.1 (stable)</b>
795 <p><a href="http://busybox.net/downloads/busybox-1.5.1.tar.bz2">BusyBox 1.5.1</a>.
796 (<a href="http://busybox.net/downloads/fixes-1.5.1/">patches</a>,
797 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
798
799 <p>This is a bugfix-only release, with fixes to hdparm, hush, ifupdown, ps
800 and sed.</p>
801 </li>
802
803 <li><b>23 March 2007 -- BusyBox 1.5.0 (unstable)</b>
804 <p><a href="http://busybox.net/downloads/busybox-1.5.0.tar.bz2">BusyBox 1.5.0</a>.
805 (<a href="http://busybox.net/downloads/fixes-1.5.0/">patches</a>,
806 <a href="http://busybox.net/fix.html">how to add a patch</a>)</p>
807
808 <p>Since this is a x.x.0 release, it probably does not deserve "stable"
809 label. Please help making 1.5.1 stable by testing 1.5.0.</p>
810 <p>Notable changes since previous release:
811 <ul>
812 <li>find: added support for -user, -not, fixed -mtime, -mmin, -perm
813 <li>[de]archivers: merge common logic into one module
814 <li>ping[6]: unified code for both
815 <li>less: regex search improved
816 <li>ash: more readable code, testsuite added
817 <li>sed: several very obscure bugs fixed
818 <li>chown: -H, -L, -P support (required by POSIX)
819 <li>tar: handle (broken) checksums a-la Sun; tar restores mode again
820 <li>grep: implement -w, "implement" -a and -I by ignoring them
821 <li>cp: more sane behavior when overwriting existing files
822 <li>init: stop doing silly things with the console (-400 bytes)
823 <li>httpd: make httpd usable for NOMMU CPUs; fix POSTDATA handling bugs
824 <li>httpd: run interpreter for configured file extensions in any dir,
825 not only in /cgi-bin/
826 <li>chrt: new applet
827 <li>SELinux: SELinux-related code and -Z option added to several applets,
828 new SELinux-specific applets: chcon, runcon.
829 <li>Build system: produces link map, uses -Wwrite-strings to catch
830 improper usage of string constants.
831 <li>Data and bss section usage audited and reduced - should help NOMMU
832 targets.
833 <li>Applets with bug fixes: gunzip, vi, syslogd, dpkg, ls, adjtimex, resize,
834 sv, printf, diff, awk, sort, dpkg, diff, tftp
835 <li>Applets with usability improvements: swapon, more, ifup/ifdown, hwclock,
836 udhcpd, start_stop_daemon, cmp
837 <li>Applets with code cleaned up: telnet, fdisk, fsck_minix, mkfs_minix,
838 syslogd, swapon, runsv, svlogd, klogd
839 </ul>
840 </li>
841
842 <li><b>18 March 2007 -- BusyBox 1.4.2 (stable)</b>
843 <p><a href="http://busybox.net/downloads/busybox-1.4.2.tar.bz2">BusyBox 1.4.2</a>.
844 </p>
845
846 <p>This release includes only trivial fixes accumulated since 1.4.1.
847 </p>
848 </li>
849
850 <li><b>25 January 2007 -- BusyBox 1.4.1 (stable)</b>
851 <p><a href="http://busybox.net/downloads/busybox-1.4.1.tar.bz2">BusyBox 1.4.1</a>.
852 (<a href="http://busybox.net/downloads/fixes-1.4.1/">patches</a>)</p>
853
854 <p>This release includes only trivial fixes accumulated since 1.4.0.
855 </p>
856 </li>
857
858 <li><b>20 January 2007 -- BusyBox 1.4.0 (stable)</b>
859 <p><a href="http://busybox.net/downloads/busybox-1.4.0.tar.bz2">BusyBox 1.4.0</a>.
860 (<a href="http://busybox.net/downloads/fixes-1.4.0/">patches</a>)</p>
861
862 <p>Since this is a x.x.0 release, it probably is a bit less "stable"
863 than usual.</p>
864 <p>Changes since previous release:
865 <ul>
866 <li>e2fsprogs are mostly removed from busybox. Some smaller parts remain,
867 the rest of it sits disabled in e2fsprogs/old_e2fsprogs/*, because
868 it's too bloated. Really. I'm afraid it's about the only way we can
869 ever get e2fsprogs cleaned up.
870 <li>less: many improvements. Now can display binary files
871 (although I expect it to have trouble with displays where 8bit chars
872 don't have 1-to-1 char/glyph relationship). Regexp search is not buggy
873 anymore. Less does not read entire input up-front. Reads input
874 as it appears (yay!). Works rather nice as man pager. I recommend it
875 for general use now.
876 <li>IPv6: generic support is in place, many networking applets are
877 upgraded to be IPv6 capable. Probably some work remains, but it is
878 already much better than what we had previously.
879 <li>arp: new applet (thanks to Eric Spakman).
880 <li>fakeidentd: non-forking standalone server part was taking ~90%
881 of the applet. Factored it out (in fact, rewrote it).
882 <li>syslogd: mostly rewritten.
883 <li>decompress_unzip, gzip: sanitized a bit.
884 <li>sed: better hadling of NULs
885 <li>httpd: stop adding our own "Content-type:" to CGI output
886 <li>chown: user.grp works again.
887 <li>minor bugfixes to: passwd, date, tftp, start_stop_daemon, tar,
888 ps, ifupdown, time, su, stty, awk, ping[6], sort,...
889 </ul>
890 </li>
891
892 <li><b>20 January 2007 -- BusyBox 1.3.2 (stable)</b>
893 <p><a href="http://busybox.net/downloads/busybox-1.3.2.tar.bz2">BusyBox 1.3.2</a>.</p>
894
895 <p>This release includes only one trivial fix accumulated since 1.3.1
896 </p>
897 </li>
898
899 <li><b>27 December 2006 -- BusyBox 1.3.1 (stable)</b>
900 <p><a href="http://busybox.net/downloads/busybox-1.3.1.tar.bz2">BusyBox 1.3.1</a>.
901 (<a href="http://busybox.net/downloads/fixes-1.3.1/">patches</a>)</p>
902
903 <p>Closing 2006 with new release. It includes only trivial fixes accumulated since 1.3.0
904 </p>
905 </li>
906
907 <li><b>14 December 2006 -- BusyBox 1.3.0 (stable)</b>
908 <p><a href="http://busybox.net/downloads/busybox-1.3.0.tar.bz2">BusyBox 1.3.0</a>.
909 (<a href="http://busybox.net/downloads/fixes-1.3.0/">patches</a>)</p>
910
911 <p>This release has CONFIG_DESKTOP option which enables features
912 needed for busybox usage on desktop machine. For example, find, chmod
913 and chown get several less frequently used options, od is significantly
914 bigger but matches GNU coreutils, etc. Intended to eventually make
915 busybox a viable alternative for "standard" utilities for slightly
916 adventurous desktop users.
917 <p>Changes since previous release:
918 <ul>
919 <li>find: taking many more of standard options
920 <li>ps: POSIX-compliant -o implemented
921 <li>cp: added -s, -l
922 <li>grep: added -r, fixed -h
923 <li>watch: make it exec child like standard one does (was totally
924 incompatible)
925 <li>tar: fix limitations which were preventing bbox tar usage
926 on big directories: long names and linknames, pax headers
927 (Linux kernel tarballs have that). Fixed a number of obscure bugs.
928 Raised max file limit (now 64Gb). Security fixes (/../ attacks).
929 <li>httpd: added -i (inetd), -f (foreground), support for
930 directory indexer CGI (example is included), bugfixes.
931 <li>telnetd: fixed/improved IPv6 support, inetd+standalone support,
932 other fixes. Useful IPv6 stuff factored out into libbb.
933 <li>runit/*: new applets adapted from http://smarden.sunsite.dk/runit/
934 (these are my personal favorite small-and-beautiful toys)
935 <li>minor bugfixes to: login, dd, mount, umount, chmod, chown, ln, udhcp,
936 fdisk, ifconfig, sort, tee, mkswap, wget, insmod.
937 </ul>
938 <p>Note that GnuPG key used to sign this release is different.
939 1.2.2.1 is also signed post-factum now. Sorry for the mess.
940 </p>
941 </li>
942
943 <li><b>29 October 2006 -- BusyBox 1.2.2.1 (fix)</b>
944 <p><a href="http://busybox.net/downloads/busybox-1.2.2.1.tar.bz2">BusyBox 1.2.2.1</a>.</p>
945
946 <p>Added compile-time warning that static linking against glibc
947 produces buggy executables.
948 </li>
949
950 <li><b>24 October 2006 -- BusyBox 1.2.2 (stable)</b>
951 <p>It's a bit overdue, but
952 <a href="http://busybox.net/downloads/busybox-1.2.2.tar.bz2">here is
953 BusyBox 1.2.2</a>.</p>
954
955 <p>This release has dozens of fixes backported from the ongoing development
956 branch. There are a couple of bugfixes to sed, two fixes to documentation
957 generation (BusyBox.html shouldn't have USE() macros in it anymore), fix
958 umount to report the right errno on failure and to umount block devices by
959 name with newer kernels, fix mount to handle symlinks properly, make mdev
960 delete device nodes when called for hotplug remove, fix a segfault
961 in traceroute, a minor portability fix to md5sum option parsing, a build
962 fix for httpd with old gccs, an options parsing tweak to hdparm, make test
963 fail gracefully when getgroups() returns -1, fix a race condition in
964 modprobe when two instances run at once (hotplug does this), make "tar xf
965 foo.tar dir/dir" extract all subdirectories, make our getty initialize the
966 terminal more like mingetty, an selinux build fix, an endianness fix in
967 ping6, fix for zcip defending addresses, clean up some global variables in
968 gzip to save memory, fix sulogin -tNNN, a help text tweak, several warning
969 fixes and build fixes, fixup dnsd a bit, and a partridge in a pear tree.</p>
970
971 <p>As <a href="http://lwn.net/Articles/202106/">Linux Weekly News noted</a>,
972 this is my (Rob's) last release of BusyBox. The new maintainer is Denis
973 Vlasenko, I'm off to do <a href="http://landley.net/code">other things</a>.
974 </p>
975 </li>
976
977 <li><b>29 September 2006 -- New license email address.</b>
978 <p>The email address gpl@busybox.net is now the recommended way to contact
979 the Software Freedom Law Center to report BusyBox license violations.</p>
980
981 <li><b>31 July 2006 -- BusyBox 1.2.1 (stable)</b>
982 <p>Since nobody seems to have objected too loudly over the weekend, I
983 might as well point you all at
984 <a href="http://busybox.net/downloads/busybox-1.2.1.tar.bz2">Busybox
985 1.2.1</a>, a bugfix-only release with no new features.</p>
986
987 <p>It has three shell fixes (two to lash: going "var=value" without
988 saying "export" should now work, plus a missing null pointer check, and
989 one to ash when redirecting output to a file that fills up.) Fix three
990 embarassing thinkos in the new dmesg command. Two build tweaks
991 (dependencies for the compressed usage messages and running make in the
992 libbb subdirectory). One fix to tar so it can extract git-generated
993 tarballs (rather than barfing on the pax extensions). And a partridge
994 in a pear... Ahem.</p>
995
996 <p>But wait, there's more! A passwd changing fix so an empty
997 gecos field doesn't trigger a false objection that the new passwd contains
998 the gecos field. Make all our setuid() and setgid() calls check the return
999 value in case somebody's using per-process resource limits that prevent
1000 a user from having too many processes (and thus prevent a process from
1001 switching away from root, in which case the process will now _die_ rather
1002 than continue with root privileges). A fix to adduser to make sure that
1003 /etc/group gets updated. And a fix to modprobe to look for modules.conf
1004 in the right place on 2.6 kernels.</p>
1005
1006 <li><b>30 June 2006 -- BusyBox 1.2.0</b>
1007 <p>The -devel branch has been stabilized and the result is
1008 <a href="http://busybox.net/downloads/busybox-1.2.0.tar.bz2">Busybox
1009 1.2.0</a>. Lots of stuff changed, I need to work up a decent changelog
1010 over the weekend.</p>
1011
1012 <p>I'm still experimenting with how long is best for the development
1013 cycle, and since we've got some largeish projects queued up I'm going to
1014 try a longer one. Expect 1.3.0 in December. (Expect 1.2.1 any time
1015 we fix enough bugs. :)</p>
1016
1017 <p>Update: Here are <a href="http://busybox.net/downloads/busybox-1.2.0.fixes.patch">the first few bug fixes</a> that will go into 1.2.1.</p>
1018
1019 <li><b>17 May 2006 -- BusyBox 1.1.3 (stable)</b>
1020 <p><a href="http://busybox.net/downloads/busybox-1.1.3.tar.bz2">BusyBox
1021 1.1.3</a> is another bugfix release. It makes passwd use salt, fixes a
1022 memory freeing bug in ls, fixes "build all sources at once" mode, makes
1023 mount -a not abort on the first failure, fixes msh so ctrl-c doesn't kill
1024 background processes, makes patch work with patch hunks that don't have a
1025 timestamp, make less's text search a lot more robust (the old one could
1026 segfault), and fixes readlink -f when built against uClibc.</p>
1027
1028 <p>Expect 1.2.0 sometime next month, which won't be a bugfix release.</p>
1029
1030 <li><b>10 April 2006 -- BusyBox 1.1.2 (stable)</b>
1031 <p>You can now download <a href="http://busybox.net/downloads/busybox-1.1.2.tar.bz2">BusyBox 1.1.2</a>, a bug fix release consisting of 11 patches
1032 backported from the development branch: Some build fixes, several fixes
1033 for mount and nfsmount, a fix for insmod on big endian systems, a fix for
1034 find -xdev, and a fix for comm. Check the file "changelog" in the tarball
1035 for more info.</p>
1036
1037 <p>The next new development release (1.2.0) is slated for June. A 1.1.3
1038 will be released before then if more bug fixes crop up. (The new plan is
1039 to have a 1.x.0 new development release every 3 months, with 1.x.y stable
1040 bugfix only releases based on that as appropriate.)</p>
1041
1042 <li><b>27 March 2006 -- Software Freedom Law Center representing BusyBox and uClibc</b>
1043 <p>One issue Erik Andersen wanted to resolve when handing off BusyBox
1044 maintainership to Rob Landley was license enforcement. BusyBox and
1045 uClibc's existing license enforcement efforts (pro-bono representation
1046 by Erik's father's law firm, and the
1047 <a href="http://www.busybox.net/shame.html">Hall of Shame</a>), haven't
1048 scaled to match the popularity of the projects. So we put our heads
1049 together and did the obvious thing: ask Pamela Jones of
1050 <a href="http://www.groklaw.net">Groklaw</a> for suggestions. She
1051 referred us to the fine folks at softwarefreedom.org.</p>
1052
1053 <p>As a result, we're pleased to announce that the
1054 <a href="http://www.softwarefreedom.org">Software Freedom Law Center</a>
1055 has agreed to represent BusyBox and uClibc. We join a number of other
1056 free and open source software projects (such as
1057 <a href="http://lwn.net/Articles/141806/">X.org</a>,
1058 <a href="http://lwn.net/Articles/135413/">Wine</a>, and
1059 <a href="http://plone.org/foundation/newsitems/software-freedom-law-center-support/">Plone</a>
1060 in being represented by a fairly cool bunch of lawyers, which is not a
1061 phrase you get to use every day.</p>
1062
1063 <li><b>22 March 2006 -- BusyBox 1.1.1</b>
1064 <p>The new maintainer is Rob Landley, and the new release is <a href="http://busybox.net/downloads/busybox-1.1.1.tar.bz2">BusyBox 1.1.1</a>. Expect a "what's new" document in a few days. (Also, Erik and I have have another announcement pending...)</p>
1065 <p>Update: Rather than put out an endless stream of 1.1.1.x releases,
1066 the various small fixes have been collected together into a
1067 <a href="http://busybox.net/downloads/busybox-1.1.1.fixes.patch">patch</a>,
1068 and new fixes will be appended to that as needed. Expect 1.1.2 around
1069 June.</p>
1070 </li>
1071 <li><b>11 January 2006 -- 1.1.0 is out</b>
1072 <p>The new stable release is
1073 <a href="http://www.busybox.net/downloads/busybox-1.1.0.tar.bz2">BusyBox
1074 1.1.0</a>. It has a number of improvements, including several new applets.
1075 (It also has <a href="http://www.busybox.net/lists/busybox/2006-January/017733.html">a few rough spots</a>,
1076 but we're trying out a "release early, release often" strategy to see how
1077 that works. Expect 1.1.1 sometime in March.)</p>
1078
1079 <li><b>31 October 2005 -- 1.1.0-pre1</b>
1080 <p>The development branch of busybox is stable enough for wider testing, so
1081 you can now
1082 <a href="http://www.busybox.net/downloads/busybox-1.1.0-pre1.tar.bz2">download</a>,
1083 the first prerelease of 1.1.0. This prerelease includes a lot of
1084 <a href="http://www.busybox.net/downloads/BusyBox.html">new
1085 functionality</a>: new applets, new features, and extensive rewrites of
1086 several existing applets. This prerelease should be noticeably more
1087 <a href="http://www.opengroup.org/onlinepubs/009695399/">standards
1088 compliant</a> than earlier versions of busybox, although we're
1089 still working out the <a href="https://bugs.busybox.net">bugs</a>.</p>
1090
1091 <li><b>16 August 2005 -- 1.01 is out</b>
1092
1093 <p>A new stable release (<a href="http://www.busybox.net/downloads/busybox-1.01.tar.bz2">BusyBox
1094 1.01</a>) is now available for download, containing over a hundred
1095 <a href="http://www.busybox.net/lists/busybox/2005-August/015424.html">small
1096 fixes</a> that have cropped up since the 1.00 release.</p>
1097
1098 <li><b>13 January 2005 -- Bug and Patch Tracking</b><p>
1099
1100 Bug reports sometimes get lost when posted to the mailing list. The
1101 developers of BusyBox are busy people, and have only so much they can keep
1102 in their brains at a time. In my case, I'm lucky if I can remember my own
1103 name, much less a bug report posted last week... To prevent your bug report
1104 from getting lost, if you find a bug in BusyBox, please use the
1105 <a href="https://bugs.busybox.net/">shiny new Bug and Patch Tracking System</a>
1106 to post all the gory details.
1107
1108 <p>
1109
1110 The same applies to patches... Regardless of whether your patch
1111 is a bug fix or adds spiffy new features, please post your patch
1112 to the Bug and Patch Tracking System to make certain it is
1113 properly considered.
1114
1115
1116 <p>
1117 <li><b>13 October 2004 -- BusyBox 1.00 released</b><p>
1118
1119 When you take a careful look at nearly every embedded Linux device or
1120 software distribution shipping today, you will find a copy of BusyBox.
1121 With countless routers, set top boxes, wireless access points, PDAs, and
1122 who knows what else, the future for Linux and BusyBox on embedded devices
1123 is looking very bright.
1124
1125 <p>
1126
1127 It is therefore with great satisfaction that I declare each and every
1128 device already shipping with BusyBox is now officially out of date.
1129 The highly anticipated release of BusyBox 1.00 has arrived!
1130
1131 <p>
1132
1133 Over three years in development, BusyBox 1.00 represents a tremendous
1134 improvement over the old 0.60.x stable series. Now featuring a Linux
1135 KernelConf based configuration system (as used by the Linux kernel),
1136 Linux 2.6 kernel support, many many new applets, and the development
1137 work and testing of thousands of people from around the world.
1138
1139 <p>
1140
1141 If you are already using BusyBox, you are strongly encouraged to upgrade to
1142 BusyBox 1.00. If you are considering developing an embedded Linux device
1143 or software distribution, you may wish to investigate if using BusyBox is
1144 right for your application. If you need help getting started using
1145 BusyBox, if you wish to donate to help cover expenses, or if you find a bug
1146 and need help reporting it, you are invited to visit the <a
1147 href="FAQ.html">BusyBox FAQ</a>.
1148
1149 <p>
1150
1151 As usual you can <a href="downloads">download busybox here</a>.
1152
1153 <p>Have Fun!
1154
1155 <p>
1156 <li><b>Old News</b><p>
1157 <a href="/oldnews.html">Click here to read older news</a>
1158
1159
1160 <li><b>16 August 2004 -- BusyBox 1.0.0-rc3 released</b><p>
1161
1162 Here goes release candidate 3...
1163 <p>
1164 The <a href="downloads/Changelog">changelog</a> has all the details.
1165 And as usual you can <a href="downloads">download busybox here</a>.
1166
1167 <p>Have Fun!
1168
1169 <p>
1170 <li><b>26 July 2004 -- BusyBox 1.0.0-rc2 released</b><p>
1171
1172 Here goes release candidate 2...
1173 <p>
1174 The <a href="downloads/Changelog">changelog</a> has all the details.
1175 And as usual you can <a href="downloads">download busybox here</a>.
1176
1177 <p>Have Fun!
1178
1179 <p>
1180 <li><b>20 July 2004 -- BusyBox 1.0.0-rc1 released</b><p>
1181
1182 Here goes release candidate 1... This fixes all (most?) of the problems
1183 that have turned up since -pre10. In particular, loading and unloading of
1184 kernel modules with 2.6.x kernels should be working much better.
1185 <p>
1186
1187 I <b>really</b> want to get BusyBox 1.0.0 released soon and I see no real
1188 reason why the 1.0.0 release shouldn't happen with things pretty much as
1189 is. BusyBox is in good shape at the moment, and it works nicely for
1190 everything that I'm doing with it. And from the reports I've been getting,
1191 it works nicely for what most everyone else is doing with it as well.
1192 There will eventually be a 1.0.1 anyway, so we might as well get on with
1193 it. No, BusyBox is not perfect. No piece of software ever is. And while
1194 there is still plenty that can be done to improve things, most of that work
1195 is waiting till we can get a solid 1.0.0 release out the door....
1196 <p>
1197
1198 Please do not bother to send in patches adding cool new features at this
1199 time. Only bug-fix patches will be accepted. If you have submitted a
1200 bug-fixing patch to the busybox mailing list and no one has emailed you
1201 explaining why your patch was rejected, it is safe to say that your patch
1202 has been lost or forgotten. That happens sometimes. Please re-submit your
1203 bug-fixing patch to the BusyBox mailing list, and be sure to put "[PATCH]"
1204 at the beginning of the email subject line!
1205
1206 <p>
1207 The <a href="downloads/Changelog">changelog</a> has all the details.
1208 And as usual you can <a href="downloads">download busybox here</a>.
1209
1210 <p>Have Fun!
1211
1212 <p>
1213 On a less happy note, My 92 year old grandmother (my dad's mom) passed away
1214 yesterday (June 19th). The funeral will be Thursday in a little town about
1215 2 hours south of my home. I've checked and there is absolutely no way I
1216 could be back in time for the funeral if I attend <a
1217 href="http://www.linuxsymposium.org/2004/">OLS</a> and give my presentation
1218 as scheduled.
1219 <p>
1220 As such, it is with great reluctance and sadness that I have come
1221 to the conclusion I will have to make my appologies and skip OLS
1222 this year.
1223 <p>
1224
1225
1226 <p>
1227 <li><b>13 April 2004 -- BusyBox 1.0.0-pre10 released</b><p>
1228
1229 Ok, I lied. It turns out that -pre9 will not be the final BusyBox
1230 pre-release. With any luck however -pre10 will be, since I <b>really</b>
1231 want to get BusyBox 1.0.0 released very soon. As usual, please do not
1232 bother to send in patches adding cool new features at this time. Only
1233 bug-fix patches will be accepted. It would also be <b>very</b> helpful if
1234 people could continue to review the BusyBox documentation and submit
1235 improvements.
1236
1237 <p>
1238 The <a href="downloads/Changelog">changelog</a> has all the details.
1239 And as usual you can <a href="downloads">download busybox here</a>.
1240
1241 <p>Have Fun!
1242 <p>
1243
1244
1245 <p>
1246 <li><b>6 April 2004 -- BusyBox 1.0.0-pre9 released</b><p>
1247
1248 Here goes the final BusyBox pre-release... This is your last chance for
1249 bug fixes. With luck this will be released as BusyBox 1.0.0 later this
1250 week. Please do not bother to send in patches adding cool new features at
1251 this time. Only bug-fix patches will be accepted. It would also be
1252 <b>very</b> helpful if people could help review the BusyBox documentation
1253 and submit improvements. I've spent a lot of time updating the
1254 documentation to make it better match reality, but I could really use some
1255 assistance in checking that the features supported by the various applets
1256 match the features listed in the documentation.
1257
1258 <p>
1259 I had hoped to get this released a month ago, but
1260 <a href="http://codepoet.org/gallery/baby_peter/img_1796">
1261 another release on 1 March 2004</a> has kept me busy...
1262
1263 <p>
1264 The <a href="downloads/Changelog">changelog</a> has all the details.
1265 And as usual you can <a href="downloads">download busybox here</a>.
1266
1267 <p>Have Fun!
1268 <p>
1269
1270
1271 <p>
1272 <li><b>23 February 2004 -- BusyBox 1.0.0-pre8 released</b><p>
1273
1274 Here goes yet another BusyBox pre-release... Please do not bother to send
1275 in patches supplying new features at this time. Only bug-fix patches will
1276 be accepted. If you have a cool new feature you would like to see
1277 supported, or if you have an amazing new applet you would like to submit,
1278 please wait and submit such things later. We really want to get a release
1279 out we can all be proud of. We are still aiming to finish off the -pre
1280 series in February and move on to the final 1.0.0 release... So if you
1281 spot any bugs, now would be an excellent time to send in a fix to the
1282 busybox mailing list. It would also be <b>very</b> helpful if people could
1283 help review the BusyBox documentation and submit improvements. It would be
1284 especially helpful if people could check that the features supported by the
1285 various applets match the features listed in the documentation.
1286
1287 <p>
1288
1289 The <a href="downloads/Changelog">changelog</a> has all the details.
1290 And as usual you can <a href="downloads">download busybox here</a>.
1291
1292 <p>Have Fun!
1293 <p>
1294
1295
1296 <li><b>4 February 2004 -- BusyBox 1.0.0-pre7 released</b><p>
1297
1298 There was a bug in -pre6 that broke argument parsing for a
1299 number of applets, since a variable was not being zeroed out
1300 properly. This release is primarily intended to fix that one
1301 problem. In addition, this release fixes several other
1302 problems, including a rewrite by mjn3 of the code for parsing
1303 the busybox.conf file used for suid handling, some shell updates
1304 from vodz, and a scattering of other small fixes. We are still
1305 aiming to finish off the -pre series in February and move on to
1306 the final 1.0.0 release... If you see any problems, of have
1307 suggestions to make, as always, please feel free to email the
1308 busybox mailing list.
1309
1310 <p>
1311
1312 The <a href="downloads/Changelog">changelog</a> has all
1313 the details. And as usual you can
1314 <a href="downloads">download busybox here</a>.
1315
1316 <p>Have Fun!
1317 <p>
1318
1319
1320 <p>
1321 <li><b>30 January 2004 -- BusyBox 1.0.0-pre6 released</b><p>
1322
1323 Here goes the next pre-release for the new BusyBox stable
1324 series. This release adds a number of size optimizations,
1325 updates udhcp, fixes up 2.6 modutils support, updates ash
1326 and the shell command line editing, and the usual pile of
1327 bug fixes both large and small. Things appear to be
1328 settling down now, so with a bit of luck and some testing
1329 perhaps we can finish off the -pre series in February and
1330 move on to the final 1.0.0 release... If you see any
1331 problems, of have suggestions to make, as always, please
1332 feel free to email the busybox mailing list.
1333
1334 <p>
1335
1336 People who rely on the <a href="downloads/snapshots/">daily BusyBox snapshots</a>
1337 should be aware that snapshots of the old busybox 0.60.x
1338 series are no longer available. Daily snapshots are now
1339 only available for the BusyBox 1.0.0 series and now use
1340 the naming scheme "busybox-&lt;date&gt;.tar.bz2". Please
1341 adjust any build scripts using the old naming scheme accordingly.
1342
1343 <p>
1344
1345 The <a href="downloads/Changelog">changelog</a> has all
1346 the details. And as usual you can
1347 <a href="downloads">download busybox here</a>.
1348
1349 <p>Have Fun!
1350 <p>
1351
1352
1353 <p>
1354 <li><b>23 December 2003 -- BusyBox 1.0.0-pre5 released</b><p>
1355
1356 Here goes the next pre-release for the new BusyBox stable
1357 series. The most obvious thing in this release is a fix for
1358 a terribly stupid bug in mount that prevented it from working
1359 properly unless you specified the filesystem type. This
1360 release also fixes a few compile problems, updates udhcp,
1361 fixes a silly bug in fdisk, fixes ifup/ifdown to behave like
1362 the Debian version, updates devfsd, updates the 2.6.x
1363 modutils support, add a new 'rx' applet, removes the obsolete
1364 'loadacm' applet, fixes a few tar bugs, fixes a sed bug, and
1365 a few other odd fixes.
1366
1367 <p>
1368
1369 If you see any problems, of have suggestions to make, as
1370 always, please feel free to send an email to the busybox
1371 mailing list.
1372
1373 <p>
1374
1375 The <a href="downloads/Changelog">changelog</a> has all
1376 the details. And as usual you can
1377 <a href="downloads">download busybox here</a>.
1378
1379 <p>Have Fun!
1380 <p>
1381
1382
1383
1384 <li><b>10 December 2003 -- BusyBox 1.0.0-pre4 released</b><p>
1385
1386 Here goes the fourth pre-release for the new BusyBox stable
1387 series. This release includes major rework to sed, lots of
1388 rework on tar, a new tiny implementation of bunzip2, a new
1389 devfsd applet, support for 2.6.x kernel modules, updates to
1390 the ash shell, sha1sum and md5sum have been merged into a
1391 common applet, the dpkg applets has been cleaned up, and tons
1392 of random bugs have been fixed. Thanks everyone for all the
1393 testing, bug reports, and patches! Once again, a big
1394 thank-you goes to Glenn McGrath (bug1) for stepping in and
1395 helping get patches merged!
1396
1397 <p>
1398
1399 And of course, if you are reading this, you might have noticed
1400 the busybox website has been completely reworked. Hopefully
1401 things are now somewhat easier to navigate... If you see any
1402 problems, of have suggestions to make, as always, please feel
1403 free to send an email to the busybox mailing list.
1404
1405 <p>
1406
1407 The <a href="downloads/Changelog">changelog</a> has all
1408 the details. And as usual you can
1409 <a href="downloads">download busybox here</a>.
1410
1411 <p>Have Fun!
1412
1413
1414
1415 <p>
1416 <li><b>12 Sept 2003 -- BusyBox 1.0.0-pre3 released</b><p>
1417
1418 Here goes the third pre-release for the new BusyBox stable
1419 series. The last prerelease has held up quite well under
1420 testing, but a number of problems have turned up as the number
1421 of people using it has increased. Thanks everyone for all
1422 the testing, bug reports, and patches!
1423
1424 <p>
1425
1426 If you have submitted a patch or a bug report to the busybox
1427 mailing list and no one has emailed you explaining why your
1428 patch was rejected, it is safe to say that your patch has
1429 somehow gotten lost or forgotten. That happens sometimes.
1430 Please re-submit your patch or bug report to the BusyBox
1431 mailing list!
1432
1433 <p>
1434
1435 The point of the "-preX" versions is to get a larger group of
1436 people and vendors testing, so any problems that turn up can be
1437 fixed prior to the final 1.0.0 release. The main feature
1438 (besides additional testing) that is still still on the TODO
1439 list before the final BusyBox 1.0.0 release is sorting out the
1440 modutils issues. For the new 2.6.x kernels, we already have
1441 patches adding insmod and rmmod support and those need to be
1442 integrated. For 2.4.x kernels, for which busybox only supports
1443 a limited number of architectures, we may want to invest a bit
1444 more work before we cut 1.0.0. Or we may just leave 2.4.x
1445 module loading alone.
1446
1447 <p>
1448
1449 I had hoped this release would be out a month ago. And of
1450 course, it wasn't since Erik became busy getting a release of
1451 <a href="http://www.uclibc.org/">uClibc</a>
1452 out the door. Many thanks to Glenn McGrath (bug1) for
1453 stepping in and helping get a bunch of patches merged! I am
1454 not even going to state a date for releasing BusyBox 1.0.0
1455 -pre4 (or the final 1.0.0). We're aiming for late September...
1456 But if this release proves as to be exceptionally stable (or
1457 exceptionally unstable!), the next release may be very soon
1458 indeed.
1459
1460 <p>
1461
1462 The <a href="downloads/Changelog">changelog</a> has all
1463 the details. And as usual you can
1464 <a href="downloads">download busybox here</a>.
1465
1466 <p>Have Fun!
1467
1468
1469 <p>
1470 <li><b>30 July 2003 -- BusyBox 1.0.0-pre2 released</b><p>
1471
1472 Here goes another pre release for the new BusyBox stable
1473 series. The last prerelease (pre1) was given quite a lot of
1474 testing (thanks everyone!) which has helped turn up a number of
1475 bugs, and these problems have now been fixed.
1476
1477 <p>
1478
1479 Highlights of -pre2 include updating the 'ash' shell to sync up
1480 with the Debian 'dash' shell, a new 'hdparm' applet was added,
1481 init again supports pivot_root, The 'reboot' 'halt' and
1482 'poweroff' applets can now be used without using busybox init.
1483 an ifconfig buffer overflow was fixed, losetup now allows
1484 read-write loop devices, uClinux daemon support was added, the
1485 'watchdog', 'fdisk', and 'kill' applets were rewritten, there were
1486 tons of doc updates, and there were many other bugs fixed.
1487 <p>
1488
1489 If you have submitted a patch and it is not included in this
1490 release and Erik has not emailed you explaining why your patch
1491 was rejected, it is safe to say that he has lost your patch.
1492 That happens sometimes. Please re-submit your patch to the
1493 BusyBox mailing list.
1494 <p>
1495
1496 The point of the "-preX" versions is to get a larger group of
1497 people and vendors testing, so any problems that turn up can be
1498 fixed prior to the final 1.0.0 release. The main feature that
1499 is still still on the TODO list before the final BusyBox 1.0.0
1500 release is adding module support for the new 2.6.x kernels. If
1501 necessary, a -pre3 BusyBox release will happen on August 6th.
1502 Hopefully (i.e. unless some horrible catastrophic problem
1503 turns up) the final BusyBox 1.0.0 release will be ready by
1504 then...
1505 <p>
1506
1507 The <a href="downloads/Changelog">changelog</a> has all
1508 the details. As usual you can <a href="downloads">download busybox here</a>.
1509
1510 <p>Have Fun!
1511 <p>
1512
1513 <p>
1514 <li><b>15 July 2003 -- BusyBox 1.0.0-pre1 released</b><p>
1515
1516 The busybox development series has been under construction for
1517 nearly two years now. Which is just entirely too long... So
1518 it is with great pleasure that I announce the imminent release
1519 of a new stable series. Due to the huge number of changes
1520 since the last stable release (and the usual mindless version
1521 number inflation) I am branding this new stable series verison
1522 1.0.x...
1523 <p>
1524
1525 The point of "-preX" versions is to get a larger group of
1526 people and vendors testing, so any problems that turn up can be
1527 fixed prior to the magic 1.0.0 release (which should happen
1528 later this month)... I plan to release BusyBox 1.0.0-pre2 next
1529 Monday (July 21st), and, if necessary, -pre3 on July 28th.
1530 Hopefully (i.e. unless some horrible catastrophic problem turns
1531 up) the final BusyBox 1.0.0 release should be ready by the end
1532 of July.
1533 <p>
1534
1535 If you have submitted patches, and they are not in this release
1536 and I have not emailed you explaining why your patch was
1537 rejected, it is safe to say that I have lost your patch. That
1538 happens sometimes. Please do <b>NOT</b> send all your patches,
1539 support questions, etc, directly to Erik. I get hundreds of
1540 emails every day (which is why I end up losing patches
1541 sometimes in the flood)... The busybox mailing list is the
1542 right place to send your patches, support questions, etc.
1543 <p>
1544
1545 I would like to especially thank Vladimir Oleynik (vodz), Glenn
1546 McGrath (bug1), Robert Griebl (sandman), and Manuel Novoa III
1547 (mjn3) for their significant efforts and contributions that
1548 have made this release possible.
1549 <p>
1550
1551 As usual you can <a href="downloads">download busybox here</a>.
1552 You don't really need to bother with the
1553 <a href="downloads/Changelog">changelog</a>, as the changes
1554 vs the stable version are way too extensive to easily enumerate.
1555 But you can take a look if you really want too.
1556
1557 <p>Have Fun!
1558 <p>
1559
1560
1561
1562 <p>
1563 <li><b>26 October 2002 -- BusyBox 0.60.5 released</b><p>
1564
1565 I am very pleased to announce that the BusyBox 0.60.5 (stable)
1566 is now available for download. This is a bugfix release for
1567 the stable series to address all the problems that have turned
1568 up since the last release. Unfortunately, the previous release
1569 had a few nasty bugs (i.e. init could deadlock, gunzip -c tried
1570 to delete source files, cp -a wouldn't copy symlinks, and init
1571 was not always providing controlling ttys when it should have).
1572 I know I said that the previous release would be the end of the
1573 0.60.x series. Well, it turns out I'm a liar. But this time I
1574 mean it (just like last time ;-). This will be the last
1575 release for the 0.60.x series -- all further development work
1576 will be done for the development busybox tree. Expect the development
1577 version to have its first real release very very soon now...
1578
1579 <p>
1580 The <a href="downloads/Changelog.full">changelog</a> has all
1581 the details. As usual you can <a href="downloads">download busybox here</a>.
1582 <p>Have Fun!
1583 <p>
1584
1585 <p>
1586 <li><b>18 September 2002 -- BusyBox 0.60.4 released</b><p>
1587
1588 I am very pleased to announce that the BusyBox 0.60.4
1589 (stable) is now available for download. This is primarily
1590 a bugfix release for the stable series to address all
1591 the problems that have turned up since the last
1592 release. This will be the last release for the 0.60.x series.
1593 I mean it this time -- all further development work will be done
1594 on the development busybox tree, which is quite solid now and
1595 should soon be getting its first real release.
1596
1597 <p>
1598 The <a href="downloads/Changelog.full">changelog</a> has all
1599 the details. As usual you can <a href="downloads">download busybox here</a>.
1600 <p>Have Fun!
1601 <p>
1602
1603
1604 <p>
1605 <li><b>27 April 2002 -- BusyBox 0.60.3 released</b><p>
1606
1607 I am very pleased to announce that the BusyBox 0.60.3 (stable) is
1608 now available for download. This is primarily a bugfix release
1609 for the stable series. A number of problems have turned up since
1610 the last release, and this should address most of those problems.
1611 This should be the last release for the 0.60.x series. The
1612 development busybox tree has been progressing nicely, and will
1613 hopefully be ready to become the next stable release.
1614
1615 <p>
1616 The <a href="downloads/Changelog">changelog</a> has all
1617 the details. As usual you can <a href="downloads">download busybox here</a>.
1618 <p>Have Fun!
1619 <p>
1620
1621
1622 <p>
1623 <li><b>6 March 2002 -- busybox.net now has mirrors!</b><p>
1624
1625 Busybox.net is now much more available, thanks to
1626 the fine folks at <a href="http://i-netinnovations.com/">http://i-netinnovations.com/</a>
1627 who are providing hosting for busybox.net and
1628 uclibc.org. In addition, we now have two mirrors:
1629 <a href="http://busybox.linuxmagic.com/">http://busybox.linuxmagic.com/</a>
1630 in Canada and
1631 <a href="http://busybox.csservers.de/">http://busybox.csservers.de/</a>
1632 in Germany. I hope this makes things much more
1633 accessible for everyone!
1634
1635
1636<li>
1637<b>3 January 2002 -- Welcome to busybox.net!</b>
1638
1639<p>Thanks to the generosity of a number of busybox
1640users, we have been able to purchase busybox.net
1641(which is where you are probably reading this).
1642Right now, busybox.net and uclibc.org are both
1643living on my home system (at the end of my DSL
1644line). I apologize for the abrupt move off of
1645busybox.lineo.com. Unfortunately, I no longer have
1646the access needed to keep that system updated (for
1647example, you might notice the daily snapshots there
1648stopped some time ago).</p>
1649
1650<p>Busybox.net is currently hosted on my home
1651server, at the end of a DSL line. Unfortunately,
1652the load on them is quite heavy. To address this,
1653I'm trying to make arrangements to get busybox.net
1654co-located directly at an ISP. To assist in the
1655co-location effort, <a href=
1656"http://www.codepoet.org/~markw">Mark Whitley</a>
1657(author of busybox sed, cut, and grep) has donated
1658his <a href=
1659"http://www.netwinder.org/">NetWinder</a> computer
1660for hosting busybox.net and uclibc.org. Once this
1661system is co-located, the current speed problems
1662should be completely eliminated. Hopefully, too,
1663some of you will volunteer to set up some mirror
1664sites, to help to distribute the load a bit.</p>
1665
1666<p><!--
1667 <center>
1668 Click here to help support busybox.net!
1669 <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
1670 <input type="hidden" name="cmd" value="_xclick">
1671 <input type="hidden" name="business" value="andersen@codepoet.org">
1672 <input type="hidden" name="item_name" value="Support Busybox">
1673 <input type="hidden" name="image_url" value="https://codepoet-consulting.com/images/busybox2.jpg">
1674 <input type="hidden" name="no_shipping" value="1">
1675 <input type="image" src="images/donate.png" border="0" name="submit" alt="Make donation using PayPal">
1676 </form>
1677 </center>
1678 -->
1679 Since some people expressed concern over BusyBox
1680donations, let me assure you that no one is getting
1681rich here. All BusyBox and uClibc donations will be
1682spent paying for bandwidth and needed hardware
1683upgrades. For example, Mark's NetWinder currently
1684has just 64Meg of memory. As demonstrated when
1685google spidered the site the other day, 64 Megs in
1686not enough, so I'm going to be ordering 256Megs of
1687ram and a larger hard drive for the box today. So
1688far, donations received have been sufficient to
1689cover almost all expenses. In the future, we may
1690have co-location fees to worry about, but for now
1691we are ok. A <b>HUGE thank-you</b> goes out to
1692everyone that has contributed!<br>
1693 -Erik</p>
1694</li>
1695
1696<li>
1697<b>20 November 2001 -- BusyBox 0.60.2 released</b>
1698
1699<p>We am very pleased to announce that the BusyBox
17000.60.2 (stable) is now released to the world. This
1701one is primarily a bugfix release for the stable
1702series, and it should take care of most everyone's
1703needs till we can get the nice new stuff we have
1704been working on in CVS ready to release (with the
1705wonderful new buildsystem). The biggest change in
1706this release (beyond bugfixes) is the fact that msh
1707(the minix shell) has been re-worked by Vladimir N.
1708Oleynik (vodz) and so it no longer crashes when
1709told to do complex things with backticks.</p>
1710
1711<p>This release has been tested on x86, ARM, and
1712powerpc using glibc 2.2.4, libc5, and uClibc, so it
1713should work with just about any Linux system you
1714throw it at. See the <a href=
1715"downloads/Changelog">changelog</a> for <small>most
1716of</small> the details. The last release was
1717<em>very</em> solid for people, and this one should
1718be even better.</p>
1719
1720<p>As usual BusyBox 0.60.2 can be downloaded from
1721<a href=
1722"downloads">http://www.busybox.net/downloads</a>.</p>
1723
1724<p>Have Fun.<br>
1725 -Erik</p>
1726</li>
1727
1728<li> <b>18 November 2001 -- Help us buy busybox.net!</b>
1729
1730<!-- Begin PayPal Logo -->
1731<center>
1732Click here to help buy busybox.net!
1733<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
1734<input type="hidden" name="cmd" value="_xclick">
1735<input type="hidden" name="business" value="andersen@codepoet.org">
1736<input type="hidden" name="item_name" value="Support Busybox">
1737<input type="hidden" name="image_url" value="https://busybox.net/images/busybox2.jpg">
1738<input type="hidden" name="no_shipping" value="1">
1739<input type="image" src="images/donate.png" name="submit" alt="Make donation using PayPal">
1740</form>
1741</center>
1742<!-- End PayPal Logo -->
1743
1744I've contacted the current owner of busybox.net and he is willing
1745to sell the domain name -- for $250. He also owns busybox.org but
1746will not part with it... I will then need to pay the registry fee
1747for a couple of years and start paying for bandwidth, so this will
1748initially cost about $300. I would like to host busybox.net on my
1749home machine (codepoet.org) so I have full control over the system,
1750but to do that would require that I increase the level of bandwidth
1751I am paying for. Did you know that so far this month, there
1752have been over 1.4 Gigabytes of busybox ftp downloads? I don't
1753even <em>know</em> how much CVS bandwidth it requires. For the
1754time being, Lineo has continued to graciously provide this
1755bandwidth, despite the fact that I no longer work for them. If I
1756start running this all on my home machine, paying for the needed bandwidth
1757will start costing some money.
1758<p>
1759
1760I was going to pay it all myself, but my wife didn't like that
1761idea at all (big surprise). It turns out &lt;insert argument
1762where she wins and I don't&gt; she has better ideas
1763about what we should spend our money on that don't involve
1764busybox. She suggested I should ask for contributions on the
1765mailing list and web page. So...
1766<p>
1767
1768I am hoping that if everyone could contribute a bit, we could pick
1769up the busybox.net domain name and cover the bandwidth costs. I
1770know that busybox is being used by a lot of companies as well as
1771individuals -- hopefully people and companies that are willing to
1772contribute back a bit. So if everyone could please help out, that
1773would be wonderful!
1774<p>
1775
1776
1777<li> <b>23 August 2001 -- BusyBox 0.60.1 released</b>
1778<br>
1779
1780 This is a relatively minor bug fixing release that fixes
1781 up the bugs that have shown up in the stable release in
1782 the last few weeks. Fortunately, nothing <em>too</em>
1783 serious has shown up. This release only fixes bugs -- no
1784 new features, no new applets. So without further ado,
1785 here it is. Come and get it.
1786 <p>
1787 The
1788 <a href="downloads/Changelog">changelog</a> has all
1789 the details. As usual BusyBox 0.60.1 can be downloaded from
1790 <a href="downloads">http://busybox.net/downloads</a>.
1791 <p>Have Fun!
1792 <p>
1793
1794
1795<li> <b>2 August 2001 -- BusyBox 0.60.0 released</b>
1796<br>
1797 I am very pleased to announce the immediate availability of
1798 BusyBox 0.60.0. I have personally tested this release with libc5, glibc,
1799 and <a href="http://uclibc.org/">uClibc</a> on
1800 x86, ARM, and powerpc using linux 2.2 and 2.4, and I know a number
1801 of people using it on everything from ia64 to m68k with great success.
1802 Everything seems to be working very nicely now, so getting a nice
1803 stable bug-free(tm) release out seems to be in order. This releases fixes
1804 a memory leak in syslogd, a number of bugs in the ash and msh shells, and
1805 cleans up a number of things.
1806
1807 <p>
1808
1809 Those wanting an easy way to test the 0.60.0 release with uClibc can
1810 use <a href="http://user-mode-linux.sourceforge.net/">User-Mode Linux</a>
1811 to give it a try by downloading and compiling
1812 <a href="ftp://busybox.net/buildroot.tar.gz">buildroot.tar.gz</a>.
1813 You don't have to be root or reboot your machine to run test this way.
1814 Preconfigured User-Mode Linux kernel source is also on busybox.net.
1815 <p>
1816 Another cool thing is the nifty <a href="downloads/tutorial/index.html">
1817 BusyBox Tutorial</a> contributed by K Computing. This requires
1818 a ShockWave plugin (or standalone viewer), so you may want to grab the
1819 the GPLed shockwave viewer from <a href="http://www.swift-tools.com/Flash/flash-0.4.10.tgz">here</a>
1820 to view the tutorial.
1821 <p>
1822
1823 Finally, In case you didn't notice anything odd about the
1824 version number of this release, let me point out that this release
1825 is <em>not</em> 0.53, because I bumped the version number up a
1826 bit. This reflects the fact that this release is intended to form
1827 a new stable BusyBox release series. If you need to rely on a
1828 stable version of BusyBox, you should plan on using the stable
1829 0.60.x series. If bugs show up then I will release 0.60.1, then
1830 0.60.2, etc... This is also intended to deal with the fact that
1831 the BusyBox build system will be getting a major overhaul for the
1832 next release and I don't want that to break products that people
1833 are shipping. To avoid that, the new build system will be
1834 released as part of a new BusyBox development series that will
1835 have some not-yet-decided-on odd version number. Once things
1836 stabilize and the new build system is working for everyone, then
1837 I will release that as a new stable release series.
1838
1839 <p>
1840 The
1841 <a href="downloads/Changelog">changelog</a> has all
1842 the details. As usual BusyBox 0.60.0 can be downloaded from
1843 <a href="downloads">http://busybox.net/downloads</a>.
1844 <p>Have Fun!
1845 <p>
1846
1847
1848<li> <b>7 July 2001 -- BusyBox 0.52 released</b>
1849<br>
1850
1851 I am very pleased to announce the immediate availability of
1852 BusyBox 0.52 (the "new-and-improved rock-solid release"). This
1853 release is the result of <em>many</em> hours of work and has tons
1854 of bugfixes, optimizations, and cleanups. This release adds
1855 several new applets, including several new shells (such as hush, msh,
1856 and ash).
1857
1858 <p>
1859 The
1860 <a href="downloads/Changelog">changelog</a> covers
1861 some of the more obvious details, but there are many many things that
1862 are not mentioned, but have been improved in subtle ways. As usual,
1863 BusyBox 0.52 can be downloaded from
1864 <a href="downloads">http://busybox.net/downloads</a>.
1865 <p>Have Fun!
1866 <p>
1867
1868
1869<li> <b>10 April 2001 - Graph of Busybox Growth </b>
1870<br>
1871The illustrious Larry Doolittle has made a PostScript chart of the growth
1872of the Busybox tarball size over time. It is available for downloading /
1873viewing <a href="busybox-growth.ps"> right here</a>.
1874
1875<p> (Note that while the number of applets in Busybox has increased, you
1876can still configure Busybox to be as small as you want by selectively
1877turning off whichever applets you don't need.)
1878<p>
1879
1880
1881<li> <b>10 April 2001 -- BusyBox 0.51 released</b>
1882<br>
1883
1884 BusyBox 0.51 (the "rock-solid release") is now out there. This
1885 release adds only 2 new applets: env and vi. The vi applet,
1886 contributed by Sterling Huxley, is very functional, and is only
1887 22k. This release fixes 3 critical bugs in the 0.50 release.
1888 There were 2 potential segfaults in lash (the busybox shell) in
1889 the 0.50 release which are now fixed. Another critical bug in
1890 0.50 which is now fixed: syslogd from 0.50 could potentially
1891 deadlock the init process and thereby break your entire system.
1892 <p>
1893
1894 There are a number of improvements in this release as well. For
1895 one thing, the wget applet is greatly improved. Dmitry Zakharov
1896 added FTP support, and Laurence Anderson make wget fully RFC
1897 compliant for HTTP 1.1. The mechanism for including utility
1898 functions in previous releases was clumsy and error prone. Now
1899 all utility functions are part of a new libbb library, which makes
1900 maintaining utility functions much simpler. And BusyBox now
1901 compiles on itanium systems (thanks to the Debian itanium porters
1902 for letting me use their system!).
1903 <p>
1904 You can read the
1905 <a href="downloads/Changelog">changelog</a> for
1906 complete details. BusyBox 0.51 can be downloaded from
1907 <a href="downloads">http://busybox.net/downloads</a>.
1908 <p>Have Fun!
1909 <p>
1910
1911<li> <b>Busybox Boot-Floppy Image</b>
1912
1913<p>Because you asked for it, we have made available a <a href=
1914"downloads/busybox.floppy.img"> Busybox boot floppy
1915image</a>. Here's how you use it:
1916
1917<ol>
1918
1919 <li> <a href="downloads/busybox.floppy.img">
1920 Download the image</a>
1921
1922 <li> dd it onto a floppy like so: <tt> dd if=busybox.floppy.img
1923 of=/dev/fd0 ; sync </tt>
1924
1925 <li> Pop it in a machine and boot up.
1926
1927</ol>
1928
1929<p> If you want to look at the contents of the initrd image, do this:
1930
1931<pre>
1932 mount ./busybox.floppy.img /mnt -o loop -t msdos
1933 cp /mnt/initrd.gz /tmp
1934 umount /mnt
1935 gunzip /tmp/initrd.gz
1936 mount /tmp/initrd /mnt -o loop -t minix
1937</pre>
1938
1939
1940<li> <b>15 March 2001 -- BusyBox 0.50 released</b>
1941<br>
1942
1943 This release adds several new applets including ifconfig, route, pivot_root, stty,
1944 and tftp, and also fixes tons of bugs. Tab completion in the
1945 shell is now working very well, and the shell's environment variable
1946 expansion was fixed. Tons of other things were fixed or made
1947 smaller. For a fairly complete overview, see the
1948 <a href="downloads/Changelog">changelog</a>.
1949 <p>
1950 lash (the busybox shell) is still with us, fixed up a bit so it
1951 now behaves itself quite nicely. It really is quite usable as
1952 long as you don't expect it to provide Bourne shell grammer.
1953 Standard things like pipes, redirects, command line editing, and
1954 environment variable expansion work great. But we have found that
1955 this shell, while very usable, does not provide an extensible
1956 framework for adding in full Bourne shell behavior. So the first order of
1957 business as we begin working on the next BusyBox release will be to merge in the new shell
1958 currently in progress at
1959 <a href="http://doolittle.faludi.com/~larry/parser.html">Larry Doolittle's website</a>.
1960 <p>
1961
1962
1963<li> <b>27 January 2001 -- BusyBox 0.49 released</b>
1964<br>
1965
1966 Several new applets, lots of bug fixes, cleanups, and many smaller
1967 things made nicer. Several cleanups and improvements to the shell.
1968 For a list of the most interesting changes
1969 you might want to look at the <a href="downloads/Changelog">changelog</a>.
1970 <p>
1971 Special thanks go out to Matt Kraai and Larry Doolittle for all their
1972 work on this release, and for keeping on top of things while I've been
1973 out of town.
1974 <p>
1975 <em>Special Note</em><br>
1976
1977 BusyBox 0.49 was supposed to have replaced lash, the BusyBox
1978 shell, with a new shell that understands full Bourne shell/Posix shell grammer.
1979 Well, that simply didn't happen in time for this release. A new
1980 shell that will eventually replace lash is already under
1981 construction. This new shell is being developed by Larry
1982 Doolittle, and could use all of our help. Please see the work in
1983 progress on <a href="http://doolittle.faludi.com/~larry/parser.html">Larry's website</a>
1984 and help out if you can. This shell will be included in the next
1985 release of BusyBox.
1986 <p>
1987
1988<li> <b>13 December 2000 -- BusyBox 0.48 released</b>
1989<br>
1990
1991 This release fixes lots and lots of bugs. This has had some very
1992 rigorous testing, and looks very, very clean. The usual tar
1993 update of course: tar no longer breaks hardlinks, tar -xzf is
1994 optionally supported, and the LRP folks will be pleased to know
1995 that 'tar -X' and 'tar --exclude' are both now in. Applets are
1996 now looked up using a binary search making lash (the busybox
1997 shell) much faster. For the new debian-installer (for Debian
1998 woody) a .udeb can now be generated.
1999 <p>
2000 The curious can get a list of some of the more interesting changes by reading
2001 the <a href="downloads/Changelog">changelog</a>.
2002 <p>
2003 Many thanks go out to the many many people that have contributed to
2004 this release, especially Matt Kraai, Larry Doolittle, and Kent Robotti.
2005 <p>
2006<p> <li> <b>26 September 2000 -- BusyBox 0.47 released</b>
2007<br>
2008
2009 This release fixes lots of bugs (including an ugly bug in 0.46
2010 syslogd that could fork-bomb your system). Added several new
2011 apps: rdate, wget, getopt, dos2unix, unix2dos, reset, unrpm,
2012 renice, xargs, and expr. syslogd now supports network logging.
2013 There are the usual tar updates. Most apps now use getopt for
2014 more correct option parsing.
2015 See the <a href="downloads/Changelog">changelog</a>
2016 for complete details.
2017
2018
2019<p> <li> <b>11 July 2000 -- BusyBox 0.46 released</b>
2020<br>
2021
2022 This release fixes several bugs (including a ugly bug in tar,
2023 and fixes for NFSv3 mount support). Added a dumpkmap to allow
2024 people to dump a binary keymaps for use with 'loadkmap', and a
2025 completely reworked 'grep' and 'sed' which should behave better.
2026 BusyBox shell can now also be used as a login shell.
2027 See the <a href="downloads/Changelog">changelog</a>
2028 for complete details.
2029
2030
2031<p> <li> <b>21 June 2000 -- BusyBox 0.45 released</b>
2032<br>
2033
2034 This release has been slow in coming, but is very solid at this
2035 point. BusyBox now supports libc5 as well as GNU libc. This
2036 release provides the following new apps: cut, tr, insmod, ar,
2037 mktemp, setkeycodes, md5sum, uuencode, uudecode, which, and
2038 telnet. There are bug fixes for just about every app as well (see
2039 the <a href="downloads/Changelog">changelog</a> for
2040 details).
2041 <p>
2042 Also, some exciting infrastructure news! Busybox now has its own
2043 <a href="lists/busybox/">mailing list</a>,
2044 publically browsable
2045 <a href="http://sources.busybox.net/index.py/trunk/busybox/">CVS tree</a>,
2046 anonymous
2047 <a href="cvs_anon.html">CVS access</a>, and
2048 for those that are actively contributing there is even
2049 <a href="cvs_write.html">CVS write access</a>.
2050 I think this will be a huge help to the ongoing development of BusyBox.
2051 <p>
2052 Also, for the curious, there is no 0.44 release. Somehow 0.44 got announced
2053 a few weeks ago prior to its actually being released. To avoid any confusion
2054 we are just skipping 0.44.
2055 <p>
2056 Many thanks go out to the many people that have contributed to this release
2057 of BusyBox (esp. Pavel Roskin)!
2058
2059
2060<p> <li> <b>19 April 2000 -- syslogd bugfix</b>
2061<br>
2062Turns out that there was still a bug in busybox syslogd.
2063For example, with the following test app:
2064<pre>
2065#include &lt;syslog.h&gt;
2066
2067int do_log(char* msg, int delay)
2068{
2069 openlog("testlog", LOG_PID, LOG_DAEMON);
2070 while(1) {
2071 syslog(LOG_ERR, "%s: testing one, two, three\n", msg);
2072 sleep(delay);
2073 }
2074 closelog();
2075 return(0);
2076};
2077
2078int main(void)
2079{
2080 if (fork()==0)
2081 do_log("A", 2);
2082 do_log("B", 3);
2083}
2084</pre>
2085it should be logging stuff from both "A" and "B". As released in 0.43 only stuff
2086from "A" would have been logged. This means that if init tries to log something
2087while say ppp has the syslog open, init would block (which is bad, bad, bad).
2088<p>
2089Karl M. Hegbloom has created a fix for the problem.
2090Thanks Karl!
2091
2092
2093<p> <li> <b>18 April 2000 -- BusyBox 0.43 released (finally!)</b>
2094<br>
2095I have finally gotten everything into a state where I feel pretty
2096good about things. This is definitely the most stable, solid release
2097so far. A lot of bugs have been fixed, and the following new apps
2098have been added: sh, basename, dirname, killall, uptime,
2099freeramdisk, tr, echo, test, and usleep. Tar has been completely
2100rewritten from scratch. Bss size has also been greatly reduced.
2101More details are available in the
2102<a href="downloads/Changelog">changelog</a>.
2103Oh, and as a special bonus, I wrote some fairly comprehensive
2104<em>documentation</em>, complete with examples and full usage information.
2105
2106<p>
2107Many thanks go out to the fine people that have helped by submitting patches
2108and bug reports; particularly instrumental in helping for this release were
2109Karl Hegbloom, Pavel Roskin, Friedrich Vedder, Emanuele Caratti,
2110Bob Tinsley, Nicolas Pitre, Avery Pennarun, Arne Bernin, John Beppu, and Jim Gleason.
2111There were others so if I somehow forgot to mention you, I'm very sorry.
2112<p>
2113
2114You can grab BusyBox 0.43 tarballs <a href="downloads">here</a>.
2115
2116<p> <li> <b>9 April 2000 -- BusyBox 0.43 pre release</b>
2117<br>
2118Unfortunately, I have not yet finished all the things I want to
2119do for BusyBox 0.43, so I am posting this pre-release for people
2120to poke at. This contains my complete rewrite of tar, which now weighs in at
21215k (7k with all options turned on) and works for reading and writing
2122tarballs (which it does correctly for everything I have been able to throw
2123at it). Tar also (optionally) supports the "--exclude" option (mainly because
2124the Linux Router Project folks asked for it). This also has a pre-release
2125of the micro shell I have been writing. This pre-release should be stable
2126enough for production use -- it just isn't a release since I have some structural
2127changes I still want to make.
2128<p>
2129The pre-release can be found <a href="downloads">here</a>.
2130Please let me know ASAP if you find <em>any</em> bugs.
2131
2132<p> <li> <b>28 March 2000 -- Andersen Baby Boy release</b>
2133<br>
2134I am pleased to announce that on Tuesday March 28th at 5:48pm, weighing in at 7
2135lbs. 12 oz, Micah Erik Andersen was born at LDS Hospital here in Salt Lake City.
2136He was born in the emergency room less then 5 minutes after we arrived -- and
2137it was such a relief that we even made it to the hospital at all. Despite the
2138fact that I was driving at an amazingly unlawful speed and honking at everybody
2139and thinking decidedly unkind thoughts about the people in our way, my wife
2140(inconsiderate of my feelings and complete lack of medical training) was lying
2141down in the back seat saying things like "I think I need to start pushing now"
2142(which she then proceeded to do despite my best encouraging statements to the
2143contrary).
2144<p>
2145Anyway, I'm glad to note that despite the much-faster-than-we-were-expecting
2146labor, both Shaunalei and our new baby boy are doing wonderfully.
2147<p>
2148So now that I am done with my excuse for the slow release cycle...
2149Progress on the next release of BusyBox has been slow but steady. I expect
2150to have a release sometime during the first week of April. This release will
2151include a number of important changes, including the addition of a shell, a
2152re-write of tar (to accommodate the Linux Router Project), and syslogd can now
2153accept multiple concurrent connections, fixing lots of unexpected blocking
2154problems.
2155
2156
2157<p> <li> <b>11 February 2000 -- BusyBox 0.42 released</b>
2158<br>
2159
2160 This is the most solid BusyBox release so far. Many, many
2161 bugs have been fixed. See the
2162 <a href="downloads/Changelog">changelog</a> for details.
2163
2164 Of particular interest, init will now cleanly unmount
2165 filesystems on reboot, cp and mv have been rewritten and
2166 behave much better, and mount and umount no longer leak
2167 loop devices. Many thanks go out to Randolph Chung,
2168 Karl M. Hegbloom, Taketoshi Sano, and Pavel Roskin for
2169 their hard work on this release of BusyBox. Please pound
2170 on it and let me know if you find any bugs.
2171
2172<p> <li> <b>19 January 2000 -- BusyBox 0.41 released</b>
2173<br>
2174
2175 This release includes bugfixes to cp, mv, logger, true, false,
2176 mkdir, syslogd, and init. New apps include wc, hostid,
2177 logname, tty, whoami, and yes. New features include loop device
2178 support in mount and umount, and better TERM handling by init.
2179 The changelog can be found <a href="downloads/Changelog">here</a>.
2180
2181<p> <li> <b>7 January 2000 -- BusyBox 0.40 released</b>
2182<br>
2183
2184 This release includes bugfixes to init (now includes inittab support),
2185 syslogd, head, logger, du, grep, cp, mv, sed, dmesg, ls, kill, gunzip, and mknod.
2186 New apps include sort, uniq, lsmod, rmmod, fbset, and loadacm.
2187 In particular, this release fixes an important bug in tar which
2188 in some cases produced serious security problems.
2189 As always, the changelog can be found <a href="downloads/Changelog">here</a>.
2190
2191<p> <li> <b>11 December 1999 -- BusyBox Website</b>
2192<br>
2193 I have received permission from Bruce Perens (the original author of BusyBox)
2194 to set up this site as the new primary website for BusyBox. This website
2195 will always contain pointers to the latest and greatest, and will also
2196 contain the latest documentation on how to use BusyBox, what it can do,
2197 what arguments its apps support, etc.
2198
2199<p> <li> <b>10 December 1999 -- BusyBox 0.39 released</b>
2200<br>
2201 This release includes fixes to init, reboot, halt, kill, and ls, and contains
2202 the new apps ping, hostname, mkfifo, free, tail, du, tee, and head. A full
2203 changelog can be found <a href="downloads/Changelog">here</a>.
2204<p> <li> <b>5 December 1999 -- BusyBox 0.38 released</b>
2205<br>
2206 This release includes fixes to tar, cat, ls, dd, rm, umount, find, df,
2207 and make install, and includes new apps syslogd/klogd and logger.
2208
2209
2210</ul>
2211
2212
2213<!--#include file="footer.html" -->
2214
diff --git a/docs/busybox.net/products.html b/docs/busybox.net/products.html
deleted file mode 100644
index 7bb07f71d..000000000
--- a/docs/busybox.net/products.html
+++ /dev/null
@@ -1,165 +0,0 @@
1<!--#include file="header.html" -->
2
3
4<h3>Products/Projects Using BusyBox</h3>
5
6Do you use BusyBox? I'd love to know about it and
7I'd be happy to link to you.
8
9<p>
10I know of the following projects that use BusyBox --
11listed in the order I happen to add them to the web page:
12
13<ul>
14
15<li><a href="http://buildroot.uclibc.org/">buildroot</a><br>A configurable
16means for building your own busybox/uClibc based system systems, maintained
17by the uClibc developers.
18
19<li><a href="http://openwrt.org">OpenWrt</a> a Linux distribution for embedded
20devices, based on buildroot.
21
22<li><a href="http://www.pengutronix.de/software/ptxdist_en.html">PTXdist</a>
23 <br>another configurable means for building your own busybox based systems.
24
25<li><a href=
26"http://cvs.debian.org/boot-floppies/">
27Debian installer (boot floppies) project</a>
28
29<li><a href="http://redhat.com/">Red Hat installer</a>
30
31<li><a href=
32"http://distro.ibiblio.org/pub/Linux/distributions/slackware/slackware-current/source/rootdisks/">
33Slackware Installer</a>
34
35<li><a href="http://www.gentoo.org/">Gentoo Linux install/boot CDs</a>
36<li><a href="http://www.mandriva.com/">The Mandriva installer</a>
37
38<li><a href="http://Leaf.SourceForge.net">Linux Embedded Appliance Firewall</a>
39 <br>The sucessor of the Linux Router Project, supporting all sorts
40 of embedded Linux gateways, routers, wireless routers, and firewalls.
41
42<li><a href=
43"http://www.toms.net/rb/">tomsrtbt</a>
44
45<li><a href="http://www.stormix.com/">Stormix Installer</a>
46
47<li><a href="http://www.emacinc.com/linux2_sbc.htm">EMAC Linux 2.0 SBC</a>
48
49<li><a href="http://www.trinux.org/">Trinux</a>
50
51<li><a href="http://oddas.sourceforge.net/">ODDAS project</a>
52
53<li><a href="http://byld.sourceforge.net/">Build Your Linux Disk</a>
54
55<li><a href=
56"http://ibiblio.org/pub/Linux/system/recovery">Zdisk</a>
57
58<li><a href="http://www.adtran.com">AdTran -
59VPN/firewall VPN Linux Distribution</a>
60
61<li><a href="http://mkcdrec.ota.be/">mkCDrec - make CD-ROM recovery</a>
62
63<li><a href="http://recycle.lbl.gov/~ldoolitt/bse/">Linux on nanoEngine</a>
64
65<li><a href="http://www.zelow.no/floppyfw/">Floppyfw</a>
66
67<li><a href="http://www.ltsp.org/">Linux Terminal Server Project</a>
68
69<li><a href="http://www.devil-linux.org/">Devil-Linux</a>
70
71<li><a href="http://dutnux.sourceforge.net/">DutNux</a>
72
73<li><a href="http://www.microwerks.net/~hugo/mindi/">Mindi</a>
74
75<li><a href="http://www.minimalinux.org/ttylinux/">ttylinux</a>
76
77<li><a href="http://www.coyotelinux.com/">Coyote Linux</a>
78
79<li><a href="http://www.partimage.org/">Partition Image</a>
80
81<li><a href="http://www.fli4l.de/">fli4l the on(e)-disk-router</a>
82
83<li><a href="http://tinfoilhat.cultists.net/">Tinfoil Hat Linux</a>
84
85<li><a href="http://sourceforge.net/projects/gp32linux/">gp32linux</a>
86<li><a href="http://familiar.handhelds.org/">Familiar Linux</a><br>A linux distribution for handheld computers
87<li><a href="http://rescuecd.sourceforge.net/">Timo's Rescue CD Set</a>
88<li><a href="http://sf.net/projects/netstation/">Netstation</a>
89<li><a href="http://www.fiwix.org/">GNU/Fiwix Operating System</a>
90<li><a href="http://www.softcraft.com/">Generations Linux</a>
91<li><a href="http://systemimager.org/relatedprojects/">SystemImager / System Installation Suite</a>
92<li><a href="http://www.bablokb.de/gendist/">GENDIST distribution generator</a>
93<li><a href="http://diet-pc.sourceforge.net/">DIET-PC embedded Linux thin client distribution</a>
94<li><a href="http://byzgl.sourceforge.net/">BYZantine Gnu/Linux</a>
95<li><a href="http://dban.sourceforge.net/">Darik's Boot and Nuke</a>
96<li><a href="http://www.timesys.com/">TimeSys real-time Linux</a>
97<li><a href="http://movix.sf.net/">MoviX</a><br>Boots from CD and automatically plays every video file on the CD
98<li><a href="http://katamaran.sourceforge.net">katamaran</a><br>Linux, X11, xfce windowmanager, based on BusyBox
99<li><a href="http://www.sourceforge.net/projects/simplygnustep">Prometheus SimplyGNUstep</a>
100<li><a href="http://www.renyi.hu/~ekho/lowlife/">lowlife</a><br>A documentation project on how to make your own uClibc-based systems and floppy.
101<li><a href="http://metadistros.hispalinux.es/">Metadistros</a><br>a project to allow you easily make Live-CD distributions.
102<li><a href="http://salvare.sourceforge.net/">Salvare</a><br>More Linux than tomsrtbt but less than Knoppix, aims to provide a useful workstation as well as a rescue disk.
103<li><a href="http://www.stresslinux.org/">stresslinux</a><br>minimal linux distribution running from a bootable cdrom or via PXE.
104<li><a href="http://thinstation.sourceforge.net/">thinstation</a><br>convert standard PCs into full-featured diskless thinclients.
105<li><a href="http://www.uhulinux.hu/">UHU-Linux Hungary</a>
106<li><a href="http://deep-water.berlios.de/">Deep-Water Linux</a>
107<li><a href="http://www.freesco.org/">Freesco router</a>
108<li><a href="http://Sentry.SourceForge.net/">Sentry Firewall CD</a>
109
110</ul>
111
112<p>
113And here are products that use BusyBox --
114
115<ul>
116
117<li><a href="http://www.dream-multimedia-tv.de/">Dreambox (Linux based PVR)</a>
118<li><a href="http://www.elpa.it/eng/rd129gb.html">RD129 embedded board from ELPA</a>
119<li>EMTEC MovieCube R700 uses Busybox 1.1.3.
120<li><a href="http://tuxscreen.net">Tuxscreen Linux Phone</a>
121<li><a href="http://www.kerbango.com/">The Kerbango Internet Radio</a>
122<li><a href="http://www.linuxmagic.com/vpn/">LinuxMagic VPN Firewall</a>
123<li><a href="http://www.isilver-inc.com/">I-Silver Linux appliance servers</a>
124<li><a href="http://zaurus.sourceforge.net/">Sharp Zaurus PDA</a>
125<li><a href="http://www.cyclades.com/">Cyclades-TS and other Cyclades products</a>
126<li><a href="http://www.linksys.com/products/product.asp?prid=508">Linksys WRT54G - Wireless-G Broadband Router</a>
127<li><a href="http://www.dell.com/us/en/biz/topics/sbtopic_005_truemobile.htm">Dell TrueMobile 1184</a>
128<li><a href="http://actiontec.com/products/modems/dual_pcmodem/dpm_overview.html">Actiontec Dual PC Modem</a>
129<li><a href="http://www.kiss-technology.com/">Kiss DP Series DVD players</a>
130<li><a href="http://www.netgear.com/products/prod_details.asp?prodID=170">NetGear WG602 wireless router</a>
131 <br>with sources <a href="http://www.netgear.com/support/support_details.asp?dnldID=453">here</a>
132<li><a href="http://www.trendware.com/products/TEW-411BRP.htm">TRENDnet TEW-411BRP 802.11g Wireless AP/Router/Switch</a>
133 <br>Source for busybox and udhcp <a href="http://www.trendware.com/asp/download/fileinfo.asp?file_id=277&amp;B1=Search">here</a> though no kernel source is provided.
134<li><a href="http://www.buffalo-technology.com/webcontent/products/wireless/wbr-g54.htm">Buffalo WBR-G54 wireless router</a>
135 <li><a href="http://www.asus.com/products/communication/wireless/wl-300g/overview.htm">ASUS WL-300g Wireless LAN Access Point</a>
136 <br>with source<a href="http://www.asus.com.tw/support/download/item.aspx?ModelName=WL-300G">here</a>
137 <li><a href="http://catalog.belkin.com/IWCatProductPage.process?Merchant_Id=&amp;Section_Id=201522&amp;pcount=&amp;Product_Id=136493">Belkin 54g Wireless DSL/Cable Gateway Router</a>
138 <br>with source<a href="http://web.belkin.com/support/gpl.asp">here</a>
139 <li><a href="http://www.acronis.com/products/partitionexpert/">Acronis PartitionExpert 2003</a>
140 <br>includes a heavily modified BusyBox v0.60.5 with built in
141 cardmgr, device detection, gpm, lspci, etc. Also includes udhcp,
142 uClibc 0.9.26, a heavily patched up linux kernel, etc. Source
143 can only be obtained <a href="http://www.acronis.com/files/gpl/linux.tar.bz2">here</a>
144
145<li><a href="http://www.usr.com/">U.S. Robotics Sureconnect 4-port ADSL router</a><br>
146 with source <a href="http://www.usr.com/support/s-gpl-code.asp">here</a>
147<li><a href="http://www.actiontec.com/products/broadband/54mbps_wireless_gateway_1p/index.html">
148 ActionTec GT701-WG Wireless Gateway/DSL Modem</a>
149 with source <a href="http://opensource.actiontec.com/">here</a>
150<li><a href="http://smartlinux.sourceforge.net/">S.M.A.R.T. Linux</a>
151<li><a href="http://www.dlink.com/">DLink - Model GSL-G604T, DSL-300T, and possibly other models</a>
152 with source <a href="ftp://ftp.dlink.co.uk/dsl_routers_modems/">here,</a>
153 with source <a href="ftp://ftp.dlink.de/dsl-products/">and here,</a>
154 and quite possibly other places as well. You may need to dig down a bit
155 to find the source, but it does seem to be there.
156<li><a href="http://www.siemens-mobile.de/cds/frontdoor/0,2241,de_de_0_42931_rArNrNrNrN,00.html">Siemens SE515 DSL router</a>
157 with source <a href="http://now-portal.c-lab.de/projects/gigaset/">here, I think...</a>
158 with some details <a href="http://heinz.hippenstiel.org/familie/hp/hobby/gigaset_se515dsl.html">here.</a>
159<li><a href="http://freeterm.spb.ru/frwt/">Free Remote Windows Terminal</a>
160
161<li><a href="http://www.zyxel.com/">ZyXEL Routers</a>
162
163</ul>
164
165<!--#include file="footer.html" -->
diff --git a/docs/busybox.net/screenshot.html b/docs/busybox.net/screenshot.html
deleted file mode 100644
index c5ef18bc7..000000000
--- a/docs/busybox.net/screenshot.html
+++ /dev/null
@@ -1,75 +0,0 @@
1<!--#include file="header.html" -->
2
3
4<!-- Begin Screenshot -->
5
6<h3> Busybox Screenshot! </h3>
7
8
9Everybody loves to look at screenshots, so here is a live action screenshot of BusyBox.
10
11<pre style="background-color: black; color: lightgreen; padding: 5px;
12font-family: monospace; font-size: smaller;" width="100">
13
14$ busybox
15BusyBox v1.10.1 (2008-04-24 11:30:07 CEST) multi-call binary
16Copyright (C) 1998-2007 Erik Andersen, Rob Landley, Denys Vlasenko
17and others. Licensed under GPLv2.
18See source distribution for full notice.
19
20Usage: busybox [function] [arguments]...
21 or: function [arguments]...
22
23 BusyBox is a multi-call binary that combines many common Unix
24 utilities into a single executable. Most people will create a
25 link to busybox for each function they wish to use and BusyBox
26 will act like whatever it was invoked as!
27
28Currently defined functions:
29 [, [[, addgroup, adduser, adjtimex, ar, arp, arping, ash,
30 awk, basename, bbconfig, brctl, bunzip2, bzcat, bzip2,
31 cal, cat, catv, chat, chattr, chcon, chgrp, chmod, chown,
32 chpasswd, chpst, chroot, chrt, chvt, cksum, clear, cmp,
33 comm, cp, cpio, crond, crontab, cryptpw, cttyhack, cut,
34 date, dc, dd, deallocvt, delgroup, deluser, devfsd, df,
35 dhcprelay, diff, dirname, dmesg, dnsd, dos2unix, dpkg,
36 dpkg-deb, du, dumpkmap, dumpleases, echo, ed, egrep, eject,
37 env, envdir, envuidgid, ether-wake, expand, expr, fakeidentd,
38 false, fbset, fdflush, fdformat, fdisk, fetchmail, fgrep,
39 find, findfs, fold, free, freeramdisk, fsck, fsck.minix,
40 ftpget, ftpput, fuser, getenforce, getopt, getsebool,
41 getty, grep, gunzip, gzip, halt, hd, hdparm, head, hexdump,
42 hostid, hostname, httpd, hush, hwclock, id, ifconfig,
43 ifdown, ifenslave, ifup, inetd, init, insmod, install,
44 ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule,
45 iptunnel, kbd_mode, kill, killall, killall5, klogd, lash,
46 last, length, less, linux32, linux64, linuxrc, ln, load_policy,
47 loadfont, loadkmap, logger, login, logname, logread, losetup,
48 lpd, lpq, lpr, ls, lsattr, lsmod, lzmacat, makedevs, matchpathcon,
49 md5sum, mdev, mesg, microcom, mkdir, mkfifo, mkfs.minix,
50 mknod, mkswap, mktemp, modprobe, more, mount, mountpoint,
51 msh, mt, mv, nameif, nc, netstat, nice, nmeter, nohup,
52 nslookup, od, openvt, passwd, patch, pgrep, pidof, ping,
53 ping6, pipe_progress, pivot_root, pkill, poweroff, printenv,
54 printf, ps, pscan, pwd, raidautorun, rdate, readahead,
55 readlink, readprofile, realpath, reboot, renice, reset,
56 resize, restorecon, rm, rmdir, rmmod, route, rpm, rpm2cpio,
57 rtcwake, run-parts, runcon, runlevel, runsv, runsvdir,
58 rx, script, sed, selinuxenabled, sendmail, seq, sestatus,
59 setarch, setconsole, setenforce, setfiles, setkeycodes,
60 setlogcons, setsebool, setsid, setuidgid, sha1sum, slattach,
61 sleep, softlimit, sort, split, start-stop-daemon, stat,
62 strings, stty, su, sulogin, sum, sv, svlogd, swapoff,
63 swapon, switch_root, sync, sysctl, syslogd, tac, tail,
64 tar, taskset, tcpsvd, tee, telnet, telnetd, test, tftp,
65 tftpd, time, top, touch, tr, traceroute, true, tty, ttysize,
66 udhcpc, udhcpd, udpsvd, umount, uname, uncompress, unexpand,
67 uniq, unix2dos, unlzma, unzip, uptime, usleep, uudecode,
68 uuencode, vconfig, vi, vlock, watch, watchdog, wc, wget,
69 which, who, whoami, xargs, yes, zcat, zcip
70
71$ <span style="text-decoration:blink;">_</span>
72
73</pre>
74
75<!--#include file="footer.html" -->
diff --git a/docs/busybox.net/shame.html b/docs/busybox.net/shame.html
deleted file mode 100644
index d9da44b69..000000000
--- a/docs/busybox.net/shame.html
+++ /dev/null
@@ -1,82 +0,0 @@
1<!--#include file="header.html" -->
2
3
4<h3>Hall of Shame!!!</h3>
5
6<p>This page is no longer updated, these days we forward this sort of
7thing to the <a href="http://www.softwarefreedom.org">Software Freedom Law
8Center</a> instead.</p>
9
10<p>The following products and/or projects appear to use BusyBox, but do not
11appear to release source code as required by the <a
12href="/license.html">BusyBox license</a>. This is a violation of the law!
13The distributors of these products are invited to contact <a href=
14"mailto:andersen@codepoet.org">Erik Andersen</a> if they have any confusion
15as to what is needed to bring their products into compliance, or if they have
16already brought their product into compliance and wish to be removed from the
17Hall of Shame.
18
19<p>
20
21Here are the details of <a href="/license.html">exactly how to comply
22with the BusyBox license</a>, so there should be no question as to
23exactly what is expected.
24Complying with the Busybox license is easy and completely free, so the
25companies listed below should be ashamed of themselves. Furthermore, each
26product listed here is subject to being legally ordered to cease and desist
27distribution for violation of copyright law, and the distributor of each
28product is subject to being sued for statutory copyright infringement damages
29of up to $150,000 per work plus legal fees. Nobody wants to be sued, and <a
30href="mailto:andersen@codepoet.org">Erik</a> certainly would prefer to spend
31his time doing better things than sue people. But he will sue if forced to
32do so to maintain compliance.
33
34<p>
35
36Do everyone a favor and don't break the law -- if you use busybox, comply with
37the busybox license by releasing the source code with your product.
38
39<p>
40
41<ul>
42
43 <li><a href="http://www.trittontechnologies.com/products.html">Tritton Technologies NAS120</a>
44 <br>see <a href="http://www.ussg.iu.edu/hypermail/linux/kernel/0404.0/1611.html">here for details</a>
45 <li><a href="http://www.macsense.com/product/homepod/">Macsense HomePod</a>
46 <br>with details
47 <a href="http://developer.gloolabs.com/modules.php?op=modload&amp;name=Forums&amp;file=viewtopic&amp;topic=123&amp;forum=7">here</a>
48 <li><a href="http://www.cpx.com/products.asp?c=Wireless+Products">Compex Wireless Products</a>
49 <br>appears to be running v0.60.5 with Linux version 2.4.20-uc0 on ColdFire,
50 but no source code is mentioned or offered.
51 <li><a href="http://www.inventel.com/en/product/datasheet/10/">Inventel DW 200 wireless/ADSL router</a>
52 <li><a href="http://www.sweex.com/product.asp">Sweex DSL router</a>
53 <br>appears to be running BusyBox v1.00-pre2 and udhcpd, but no source
54 code is mentioned or offered.
55 <li><a href="http://www.trendware.com/products/TEW-410APB.htm">TRENDnet TEW-410APB</a>
56 </li><li><a href="http://www.hauppauge.com/Pages/products/data_mediamvp.html">Hauppauge Media MVP</a>
57 <br>Hauppauge contacted me on 16 Dec 2003, and claims to be working on resolving this problem.
58 </li><li><a href="http://www.hitex.com/download/adescom/data/">TriCore</a>
59 </li><li><a href="http://www.allnet.de/">ALLNET 0186 wireless router</a>
60 </li><li><a href="http://www.dmmtv.com/">Dreambox DM7000S DVB Satellite Receiver</a>
61 <br> Dream Multimedia contacted me on 22 Dec 2003 and is working on resolving this problem.
62 <br> Source _may_ be here: http://cvs.tuxbox.org/cgi-bin/viewcvs.cgi/tuxbox/cdk/
63 </li><li><a href="http://testing.lkml.org/slashdot.php?mid=331690">Sigma Designs EM8500 based DVD players</a>
64 <br>Source for the Sigma Designs reference platform is found here<br>
65 <a href="http://www.uclinux.org/pub/uClinux/ports/arm/EM8500/uClinux-2.4-sigma.tar.gz">uClinux-2.4-sigma.tar.gz</a>, so while Sigma Designs itself appears to be in compliance, as far as I can tell,
66 no vendors of Sigma Designs EM8500 based devices actually comply with the GPL....
67 </li><li><a href="http://testing.lkml.org/slashdot.php?mid=433790">Liteon LVD2001 DVD player using the Sigma Designs EM8500</a>
68 </li><li><a href="http://www.rimax.net/">Rimax DVD players using the Sigma Designs EM8500</a>
69 </li><li><a href="http://www.vinc.us/">Bravo DVD players using the Sigma Designs EM8500</a>
70 </li><li><a href="http://www.hb-direct.com/">H&amp;B DX3110 Divx player based on Sigma Designs EM8500</a>
71 </li><li><a href="http://www.recospa.it/mdpro1/index.php">United *DVX4066 mpeg4 capable DVD players</a>
72 </li><li><a href="http://www.a-link.com/RR64AP.html">Avaks alink Roadrunner 64</a>
73 <br> Partial source available, based on source distributed under NDA from <a href="http://www.lsilogic.com/products/dsl_platform_solutions/hb_linuxr2_2.html"> LSILogic</a>. Why the NDA LSILogic, what are you hiding ?
74 <br>To verify the Avaks infrigment see my slashdot <a href="http://slashdot.org/~bug1/journal/">journal</a>.
75 <br>The ZipIt wireless IM device appears to be using Busybox-1.00-pre1 in the ramdisk, however no source has been made available.
76 </li><li>Undoubtedly there are others... Please report them so we can shame them (or if necessary sue them) into compliance.
77
78</ul>
79
80
81<!--#include file="footer.html" -->
82
diff --git a/docs/busybox.net/sponsors.html b/docs/busybox.net/sponsors.html
deleted file mode 100644
index e52adfc8e..000000000
--- a/docs/busybox.net/sponsors.html
+++ /dev/null
@@ -1,56 +0,0 @@
1<!--#include file="header.html" -->
2
3<h3>Sponsors</h3>
4
5<p>Please visit our sponsors and thank them for their support! They have
6provided money for equipment and bandwidth. Next time you need help with a
7project, consider these fine companies!</p>
8
9
10<ul>
11 <li><a href="http://osuosl.org/">OSU OSL</a><br>
12 OSU OSL kindly provides hosting for BusyBox and uClibc.
13 </li>
14
15 <li><a href="http://www.codepoet-consulting.com/">Codepoet Consulting</a><br>
16 Custom Linux, embedded Linux, BusyBox, and uClibc development.
17 </li>
18
19 <li><a href="http://www.laptopcomputers.org/">Laptop Computers</a> contributes
20 financially.
21 </li>
22
23 <li>AOE media, a <a href="http://www.aoemedia.com/typo3-development.html">
24 TYPO3 development agency</a> contributes financially.
25 </li>
26
27 <li><a href="http://www.analog.com/en/">Analog Devices, Inc.</a> provided
28 a <a href="http://docs.blackfin.uclinux.org/doku.php?id=bf537_quick_start">
29 Blackfin development board</a> free of charge.
30 <a href="http://www.analog.com/blackfin">Blackfin</a>
31 is a NOMMU processor, and its availability for testing is invaluable.
32 If you are an embedded device developer,
33 please note that Analog Devices has entire Linux distribution available
34 for download for this board. Visit
35 <a href="http://blackfin.uclinux.org/">http://blackfin.uclinux.org/</a>
36 for more information.
37 </li>
38
39 <li><a href="http://www.timesys.com/">TimeSys</a><br>
40 Embedded Linux development, cross-compilers, real-time, KGDB, tsrpm and cygwin.
41 </li>
42
43 <li><a href="http://www.penguru.net/">Penguru Consulting</a><br>
44 Custom development for embedded Linux systems and multimedia platforms.
45 </li>
46
47 <li><a href="http://opensource.se/">opensource.se</a><br>
48 Embedded open source consulting in Europe.
49 </li>
50
51</ul>
52
53<p>If you wish to be a sponsor, or if you have already contributed and would
54like your name added here, email <a href="mailto:vda.linux@gmail.com">Denys</a>.</p>
55
56<!--#include file="footer.html" -->
diff --git a/docs/busybox.net/subversion.html b/docs/busybox.net/subversion.html
deleted file mode 100644
index 2c4517a35..000000000
--- a/docs/busybox.net/subversion.html
+++ /dev/null
@@ -1,51 +0,0 @@
1<!--#include file="header.html" -->
2
3<h3>Accessing Source</h3>
4
5
6
7<h3>Patches</h3>
8
9<p>You can <a href="downloads/">download</a> fixes for particular releases
10of busybox, e.g. downloads/fixes-<em>major</em>-<em>minor</em>-<em>patch</em>/
11
12<h3>Anonymous Subversion Access</h3>
13
14We allow anonymous (read-only) Subversion (svn) access to everyone. To
15grab a copy of the latest version of BusyBox using anonymous svn access:
16
17<pre>
18svn co svn://busybox.net/trunk/busybox</pre>
19
20<p>
21The <em>stable branches</em> can be obtained with
22<pre>
23svn co svn://busybox.net/branches/busybox_1_NN_stable
24</pre>
25
26<p>
27
28If you are not already familiar with using Subversion, I recommend you visit <a
29href="http://subversion.tigris.org/">the Subversion website</a>. You might
30also want to read online or buy a copy of <a
31href="http://svnbook.red-bean.com/">the Subversion Book</a>. If you are
32already comfortable with using CVS, you may want to skip ahead to the <a
33href="http://svnbook.red-bean.com/en/1.1/apa.html">Subversion for CVS Users</a>
34part of the Subversion Book.
35
36<p>
37
38Once you've checked out a copy of the source tree, you can update your source
39tree at any time so it is in sync with the latest and greatest by entering your
40BusyBox directory and running the command:
41
42<pre>
43svn update</pre>
44
45Because you've only been granted anonymous access to the tree, you won't be
46able to commit any changes. Changes can be submitted for inclusion by posting
47them to the BusyBox mailing list. For those that are actively contributing
48<a href="developer.html">Subversion commit access</a> can be made available.
49
50<!--#include file="footer.html" -->
51
diff --git a/docs/busybox.net/svnindex.css b/docs/busybox.net/svnindex.css
deleted file mode 100644
index b1ca24a05..000000000
--- a/docs/busybox.net/svnindex.css
+++ /dev/null
@@ -1,92 +0,0 @@
1/* A sample style sheet for displaying the Subversion directory listing
2 that is generated by mod_dav_svn and "svnindex.xsl". */
3
4body{
5 margin: 0;
6 padding: 0;
7}
8
9a {
10 color: navy;
11}
12
13.header {
14 padding-top: 5px;
15 text-align: center;
16}
17
18.footer {
19 margin-top: 8em;
20 padding: 0.5em 1em 0.5em;
21 border: 1px solid;
22 border-width: 1px 0;
23 clear: both;
24 border-color: rgb(30%,30%,50%) navy rgb(75%,80%,85%) navy;
25 background: rgb(88%,90%,92%);
26 font-size: 80%;
27}
28
29.svn {
30 margin: 3em;
31}
32
33.rev {
34 margin-right: 3px;
35 padding-left: 3px;
36 text-align: left;
37 font-size: 120%;
38}
39
40.dir a {
41 text-decoration: none;
42 color: black;
43}
44
45.file a {
46 text-decoration: none;
47 color: black;
48}
49
50.path {
51 margin: 3px;
52 padding: 3px;
53 background: #FFCC66;
54 font-size: 120%;
55}
56
57.updir {
58 margin: 3px;
59 padding: 3px;
60 margin-left: 3em;
61 background: #FFEEAA;
62}
63
64.file {
65 margin: 3px;
66 padding: 3px;
67 margin-left: 3em;
68 background: rgb(95%,95%,95%);
69}
70
71.file:hover {
72 margin: 3px;
73 padding: 3px;
74 margin-left: 3em;
75 background: rgb(100%,100%,90%);
76/* border: 1px black solid; */
77}
78
79.dir {
80 margin: 3px;
81 padding: 3px;
82 margin-left: 3em;
83 background: rgb(90%,90%,90%);
84}
85
86.dir:hover {
87 margin: 3px;
88 padding: 3px;
89 margin-left: 3em;
90 background: rgb(100%,100%,80%);
91/* border: 1px black solid; */
92}
diff --git a/docs/busybox.net/svnindex.xsl b/docs/busybox.net/svnindex.xsl
deleted file mode 100644
index 2d3297c4c..000000000
--- a/docs/busybox.net/svnindex.xsl
+++ /dev/null
@@ -1,108 +0,0 @@
1<?xml version="1.0"?>
2
3<!-- A sample XML transformation style sheet for displaying the Subversion
4 directory listing that is generated by mod_dav_svn when the "SVNIndexXSLT"
5 directive is used. -->
6<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
7
8 <xsl:output method="html"/>
9
10 <xsl:template match="*"/>
11
12 <xsl:template match="svn">
13 <html>
14 <head>
15 <title>
16 <xsl:if test="string-length(index/@name) != 0">
17 <xsl:value-of select="index/@name"/>
18 <xsl:text>: </xsl:text>
19 </xsl:if>
20 <xsl:value-of select="index/@path"/>
21 </title>
22 <link rel="stylesheet" type="text/css" href="/svnindex.css"/>
23 </head>
24 <body>
25 <div class="header" style="font-family: lucida, helvetica; font-size: 248%">
26 <xsl:text>BUSYBOX</xsl:text>
27 </div>
28 <div class="header">
29 <a href="http://www.busybox.net"><img src="/images/busybox1.png" border="0" /></a>
30 </div>
31 <div class="svn">
32 <xsl:apply-templates/>
33 </div>
34 <div class="footer">
35 <xsl:text>Powered by </xsl:text>
36 <xsl:element name="a">
37 <xsl:attribute name="href">
38 <xsl:value-of select="@href"/>
39 </xsl:attribute>
40 <xsl:text>Subversion</xsl:text>
41 </xsl:element>
42 <xsl:text> </xsl:text>
43 <xsl:value-of select="@version"/>
44 </div>
45 </body>
46 </html>
47 </xsl:template>
48
49 <xsl:template match="index">
50 <div class="rev">
51 <xsl:value-of select="@name"/>
52 <xsl:if test="@base">
53 <xsl:if test="@name">
54 <xsl:text>:&#xA0; </xsl:text>
55 </xsl:if>
56 <xsl:value-of select="@base" />
57 </xsl:if>
58 <xsl:if test="@rev">
59 <xsl:if test="@base | @name">
60 <xsl:text> &#x2014; </xsl:text>
61 </xsl:if>
62 <xsl:text>Revision </xsl:text>
63 <xsl:value-of select="@rev"/>
64 </xsl:if>
65 </div>
66 <div class="path">
67 <xsl:value-of select="@path"/>
68 </div>
69 <xsl:apply-templates select="updir"/>
70 <xsl:apply-templates select="dir"/>
71 <xsl:apply-templates select="file"/>
72 </xsl:template>
73
74 <xsl:template match="updir">
75 <div class="updir">
76 <xsl:text>[</xsl:text>
77 <xsl:element name="a">
78 <xsl:attribute name="href">..</xsl:attribute>
79 <xsl:text>Parent Directory</xsl:text>
80 </xsl:element>
81 <xsl:text>]</xsl:text>
82 </div>
83 </xsl:template>
84
85 <xsl:template match="dir">
86 <div class="dir">
87 <xsl:element name="a">
88 <xsl:attribute name="href">
89 <xsl:value-of select="@href"/>
90 </xsl:attribute>
91 <xsl:value-of select="@name"/>
92 <xsl:text>/</xsl:text>
93 </xsl:element>
94 </div>
95 </xsl:template>
96
97 <xsl:template match="file">
98 <div class="file">
99 <xsl:element name="a">
100 <xsl:attribute name="href">
101 <xsl:value-of select="@href"/>
102 </xsl:attribute>
103 <xsl:value-of select="@name"/>
104 </xsl:element>
105 </div>
106 </xsl:template>
107
108</xsl:stylesheet>
diff --git a/docs/busybox.net/tinyutils.html b/docs/busybox.net/tinyutils.html
deleted file mode 100644
index 18313460c..000000000
--- a/docs/busybox.net/tinyutils.html
+++ /dev/null
@@ -1,86 +0,0 @@
1<!--#include file="header.html" -->
2
3
4<h3>External Tiny Utilities</h3>
5
6This is a list of tiny utilities whose functionality is not provided by
7busybox. If you have additional suggestions, please send an e-mail to our
8dev mailing list.
9
10<br><br>
11
12<table>
13<tr>
14 <th>Feature</th>
15 <th>Utilities</th>
16</tr>
17
18<tr>
19 <td>SSH</td>
20 <td><a href="http://matt.ucc.asn.au/dropbear/">Dropbear</a> has both an ssh server and an ssh client that together come in around 100k. It has no external
21dependencies (I.E. it does not depend on OpenSSL, using a built-in copy of
22LibTomCrypt instead). It's actively maintained, with a quiet but responsive
23mailing list.</td>
24</tr>
25
26<tr>
27 <td>SMTP</td>
28 <td><a href="ftp://ftp.debian.org/debian/pool/main/s/ssmtp/">ssmtp</a> is an extremely simple Mail Transfer Agent.</td>
29</tr>
30
31<tr>
32 <td>ntp</td>
33 <td><a href="http://doolittle.icarus.com/ntpclient/">ntpclient</a> is a
34tiny ntp client. BusyBox has rdate to set the date from a remote server, but
35if you want a daemon to repeatedly adjust the clock over time, try that.</td>
36</table>
37
38<p>In a gui environment, you'll probably want a web browser.
39<a href="http://www.konqueror.org/embedded/">Konqueror Embedded</a> requires QT
40(or QT Embedded), but not KDE. The <a href="http://www.dillo.org/">Dillo</a>
41requires GTK+, but not Gnome. Or you can try the <a href="http://links.twibright.com/">graphical
42version of links</a>.</p>
43
44<h3>SCRIPTING LANGUAGES</h3>
45<p>Although busybox has built-in support for shell scripts, plenty of other
46small scripting languages are available on the net. A few examples:</p>
47<table>
48<tr>
49<th>language</th>
50<th>description</th>
51</tr>
52<tr>
53<td> <a href="http://www.foo.be/docs/tpj/issues/vol5_3/tpj0503-0003.html">microperl</a> </td>
54<td> A small standalone perl interpreter that can be built from the perl source
55s via "make -f Makefile.micro". If you really feel the need for perl on an embe
56dded system, this is where to start.
57</tr>
58<tr>
59
60<td><a href="http://www.lua.org/pil/">Lua</a></td>
61<td>If you just want a small embedded scripting language to write <em>new</em>
62code in, this Brazilian import is lightweight, fairly popular, and has
63a complete book about it online.</td>
64</tr>
65
66<tr>
67<td><a href="http://www.star.le.ac.uk/%7Etjg/rc/">rc</a></td>
68<td>The PLAN9 shell. Not compatible with conventional bourne shell syntax,
69but fairly lightweight and small.</td>
70</tr>
71
72</tr>
73<tr>
74<td><a href="http://www.forth.org/">forth</a></td>
75<td>A well known language for fast and small programs, decades old but still
76in use for everything from OpenBIOS to computer controlled engine timing.</td>
77</tr>
78</table>
79
80<p>For more information, you probably want to look at
81<a href="http://buildroot.uclibc.org/">buildroot</a> and
82<a href="http://gentoo-wiki.com/TinyGentoo">TinyGentoo</a>, which
83build and use tiny utilities for all sorts of things.</p>
84
85<!--#include file="footer.html" -->
86