diff options
Diffstat (limited to 'docs/busybox.net')
37 files changed, 3781 insertions, 0 deletions
diff --git a/docs/busybox.net/FAQ.html b/docs/busybox.net/FAQ.html new file mode 100644 index 0000000..c751f75 --- /dev/null +++ b/docs/busybox.net/FAQ.html @@ -0,0 +1,1108 @@ +<!--#include file="header.html" --> + +<h3>Frequently Asked Questions</h3> + +This is a collection of some of the more frequently asked questions +about BusyBox. Some of the questions even have answers. If you +have additions to this FAQ document, we would love to add them, + +<h2>General questions</h2> +<ol> +<li><a href="#getting_started">How can I get started using BusyBox?</a></li> +<li><a href="#configure">How do I configure busybox?</a></li> +<li><a href="#build_system">How do I build a BusyBox-based system?</a></li> +<li><a href="#kernel">Which Linux kernel versions are supported?</a></li> +<li><a href="#arch">Which architectures does BusyBox run on?</a></li> +<li><a href="#libc">Which C libraries are supported?</a></li> +<li><a href="#commercial">Can I include BusyBox as part of the software on my device?</a></li> +<li><a href="#external">Where can I find other small utilities since busybox does not include the features I want?</a></li></li> +<li><a href="#demanding">I demand that you to add <favorite feature> right now! How come you don't answer all my questions on the mailing list instantly? I demand that you help me with all of my problems <em>Right Now</em>!</a></li> +<li><a href="#helpme">I need help with BusyBox! What should I do?</a></li> +<li><a href="#contracts">I need you to add <favorite feature>! Are the BusyBox developers willing to be paid in order to fix bugs or add in <favorite feature>? Are you willing to provide support contracts?</a></li> +</ol> + +<h2>Troubleshooting</h2> +<ol> +<li><a href="#bugs">I think I found a bug in BusyBox! What should I do?!</a></li> +<li><a href="#backporting">I'm using an ancient version from the dawn of time and something's broken. Can you backport fixes for free?</a></li> +<li><a href="#init">Busybox init isn't working!</a></li> +<li><a href="#sed">I can't configure busybox on my system.</a></li> +<li><a href="#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> +</ol> + +<h2>Programming questions</h2> +<ol> + <li><a href="#goals">What are the goals of busybox?</a></li> + <li><a href="#design">What is the design of busybox?</a></li> + <li><a href="#source">How is the source code organized?</a></li> + <ul> + <li><a href="#source_applets">The applet directories.</a></li> + <li><a href="#source_libbb">The busybox shared library (libbb)</a></li> + </ul> + <li><a href="#optimize">I want to make busybox even smaller, how do I go about it?</a></li> + <li><a href="#adding">Adding an applet to busybox</a></li> + <li><a href="#standards">What standards does busybox adhere to?</a></li> + <li><a href="#portability">Portability.</a></li> + <li><a href="#tips">Tips and tricks.</a></li> + <ul> + <li><a href="#tips_encrypted_passwords">Encrypted Passwords</a></li> + <li><a href="#tips_vfork">Fork and vfork</a></li> + <li><a href="#tips_short_read">Short reads and writes</a></li> + <li><a href="#tips_memory">Memory used by relocatable code, PIC, and static linking.</a></li> + <li><a href="#tips_kernel_headers">Including Linux kernel headers.</a></li> + </ul> + <li><a href="#who">Who are the BusyBox developers?</a></li> +</ul> + + +</ol> + +<h1>General questions</h1> + +<hr /> +<p> +<h2><a name="getting_started">How can I get started using BusyBox?</a></h2> +<p> If you just want to try out busybox without installing it, download the + tarball, extract it, run "make defconfig", and then run "make". +</p> +<p> + This will create a busybox binary with almost all features enabled. To try + out a busybox applet, type "./busybox [appletname] [options]", for + example "./busybox ls -l" or "./busybox cat LICENSE". Type "./busybox" + to see a command list, and "busybox appletname --help" to see a brief + usage message for a given applet. +</p> +<p> + BusyBox uses the name it was invoked under to determine which applet is + being invoked. (Try "mv busybox ls" and then "./ls -l".) Installing + busybox consists of creating symlinks (or hardlinks) to the busybox + binary for each applet in busybox, and making sure these links are in + the shell's command $PATH. The special applet name "busybox" (or with + any optional suffix, such as "busybox-static") uses the first argument + to determine which applet to run, as shown above. +</p> +<p> + BusyBox also has a feature called the + <a name="standalone_shell">"standalone shell"</a>, where the busybox + shell runs any built-in applets before checking the command path. This + feature is also enabled by "make allyesconfig", and to try it out run + the command line "PATH= ./busybox ash". This will blank your command path + and run busybox as your command shell, so the only commands it can find + (without an explicit path such as /bin/ls) are the built-in busybox ones. + This is another good way to see what's built into busybox. + Note that the standalone shell requires CONFIG_BUSYBOX_EXEC_PATH + to be set appropriately, depending on whether or not /proc/self/exe is + available or not. If you do not have /proc, then point that config option + to the location of your busybox binary, usually /bin/busybox. + (So if you set it to /proc/self/exe, and happen to be able to chroot into + your rootfs, you must mount /proc beforehand.) +</p> +<p> + A typical indication that you set CONFIG_BUSYBOX_EXEC_PATH to proc but + forgot to mount proc is: +<pre> +$ /bin/echo $PATH +/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 +$ echo $PATH +/bin/sh: echo: not found +</pre> +<hr /> +<p> +<h2><a name="configure">How do I configure busybox?</a></h2> +<p> Busybox is configured similarly to the linux kernel. Create a default + configuration and then run "make menuconfig" to modify it. The end + result is a .config file that tells the busybox build process what features + to include. So instead of "./configure; make; make install" the equivalent + busybox build would be "make defconfig; make; make install". +</p> + +<p> Busybox configured with all features enabled is a little under a megabyte + dynamically linked on x86. To create a smaller busybox, configure it with + fewer features. Individual busybox applets cost anywhere from a few + hundred bytes to tens of kilobytes. Disable unneeded applets to save, + space, using menuconfig. +</p> + +<p>The most important busybox configurators are:</p> + +<ul> +<li><p>make <b>defconfig</b> - Create the maximum "sane" configuration. This +enables almost all features, minus things like debugging options and features +that require changes to the rest of the system to work (such as selinux or +devfs device names). Use this if you want to start from a full-featured +busybox and remove features until it's small enough.</p></li> +<li><p>make <b>allnoconfig</b> - Disable everything. This creates a tiny version +of busybox that doesn't do anything. Start here if you know exactly what +you want and would like to select only those features.</p></li> +<li><p>make <b>menuconfig</b> - Interactively modify a .config file through a +multi-level menu interface. Use this after one of the previous two.</p></li> +</ul> + +<p>Some other configuration options are:</p> +<ul> +<li><p>make <b>oldconfig</b> - Update an old .config file for a newer version +of busybox.</p></li> +<li><p>make <b>allyesconfig</b> - Select absolutely everything. This creates +a statically linked version of busybox full of debug code, with dependencies on +selinux, using devfs names... This makes sure everything compiles. Whether +or not the result would do anything useful is an open question.</p></li> +<li><p>make <b>allbareconfig</b> - Select all applets but disable all sub-features +within each applet. More build coverage testing.</p></li> +<li><p>make <b>randconfig</b> - Create a random configuration for test purposes.</p></li> +</ul> + +<p> Menuconfig modifies your .config file through an interactive menu where you can enable or disable + busybox features, and get help about each feature. + + + +<p> + To build a smaller busybox binary, run "make menuconfig" and disable the + features you don't need. (Or run "make allnoconfig" and then use + menuconfig to add just the features you need. Don't forget to recompile + with "make" once you've finished configuring.) +</p> +<hr/> +<p/> +<h2><a name="build_system">How do I build a BusyBox-based system?</a></h2> +<p> + BusyBox is a package that replaces a dozen standard packages, but it is + not by itself a complete bootable system. Building an entire Linux + distribution from source is a bit beyond the scope of this FAQ, but it + understandably keeps cropping up on the mailing list, so here are some + pointers. +</p> +<p> + Start by learning how to strip a working system down to the bare essentials + needed to run one or two commands, so you know what it is you actually + need. An excellent practical place to do + this is the <a href="http://www.tldp.org/HOWTO/Bootdisk-HOWTO/">Linux + BootDisk Howto</a>, or for a more theoretical approach try + <a href="http://www.tldp.org/HOWTO/From-PowerUp-To-Bash-Prompt-HOWTO.html">From + PowerUp to Bash Prompt</a>. +</p> +<p> + To learn how to build a working Linux system entirely from source code, + the place to go is the <a href="http://www.linuxfromscratch.org">Linux + From Scratch</a> project. They have an entire book of step-by-step + instructions you can + <a href="http://www.linuxfromscratch.org/lfs/view/stable/">read online</a> + or + <a href="http://www.linuxfromscratch.org/lfs/downloads/stable/">download</a>. + Be sure to check out the other sections of their main page, including + Beyond Linux From Scratch, Hardened Linux From Scratch, their Hints + directory, and their LiveCD project. (They also have mailing lists which + are better sources of answers to Linux-system building questions than + the busybox list.) +</p> +<p> + If you want an automated yet customizable system builder which produces + a BusyBox and uClibc based system, try + <a href="http://buildroot.uclibc.org">buildroot</a>, which is + another project by the maintainer of the uClibc (Erik Andersen). + Download the tarball, extract it, unset CC, make. + For more instructions, see the website. +</p> + +<hr /> +<p> +<h2><a name="kernel">Which Linux kernel versions are supported?</a></h2> +<p> + Full functionality requires Linux 2.4.x or better. (Earlier versions may + still work, but are no longer regularly tested.) A large fraction of the + code should run on just about anything. While the current code is fairly + Linux specific, it should be fairly easy to port the majority of the code + to support, say, FreeBSD or Solaris, or Mac OS X, or even Windows (if you + are into that sort of thing). +</p> +<hr /> +<p> +<h2><a name="arch">Which architectures does BusyBox run on?</a></h2> +<p> + BusyBox in general will build on any architecture supported by gcc. + Kernel module loading for 2.4 Linux kernels is currently + limited to ARM, CRIS, H8/300, x86, ia64, x86_64, m68k, MIPS, PowerPC, + S390, SH3/4/5, Sparc, v850e, and x86_64 for 2.4.x kernels. +</p> +<p> + With 2.6.x kernels, module loading support should work on all architectures. +</p> +<hr /> +<p> +<h2><a name="libc">Which C libraries are supported?</a></h2> +<p> + On Linux, BusyBox releases are tested against uClibc (0.9.27 or later) and + glibc (2.2 or later). Both should provide full functionality with busybox, + and if you find a bug we want to hear about it. +</p> +<p> + Linux-libc5 is no longer maintained (and has no known advantages over + uClibc), dietlibc is known to have numerous unfixed bugs, and klibc is + missing too many features to build BusyBox. If you require a small C + library for Linux, the busybox developers recommend uClibc. +</p> +<p> + Some BusyBox applets have been built and run under a combination + of newlib and libgloss (see + <a href="http://www.busybox.net/lists/busybox/2005-March/013759.html">this thread</a>). + This is still experimental, but may be supported in a future release. +</p> + +<hr /> +<p> +<h2><a name="commercial">Can I include BusyBox as part of the software on my device?</a></h2> +<p> + +<p> + Yes. As long as you <a href="http://busybox.net/license.html">fully comply + with the generous terms of the GPL BusyBox license</a> you can ship BusyBox + as part of the software on your device. +</p> + +<hr /> +<p> +<h2><a name="external">where can i find other small utilities since busybox + does not include the features i want?</a></h2> +<p> + we maintain such a <a href="tinyutils.html">list</a> on this site! +</p> + +<hr /> +<p> +<h2><a name="demanding">I demand that you to add <favorite feature> right now! How come you don't answer all my questions on the mailing list instantly? I demand that you help me with all of my problems <em>Right Now</em>!</a></h2> +<p> + + You have not paid us a single cent and yet you still have the product of + many years of our work. We are not your slaves! We work on BusyBox + because we find it useful and interesting. If you go off flaming us, we + will ignore you. + + +<hr /> +<p> +<h2><a name="helpme">I need help with BusyBox! What should I do?</a></h2> +<p> + + If you find that you need help with BusyBox, you can ask for help on the + BusyBox mailing list at busybox@busybox.net.</p> + +<p> In addition to the mailing list, Erik Andersen (andersee), Manuel Nova + (mjn3), Rob Landley (landley), Mike Frysinger (SpanKY), Bernhard Fischer + (blindvt), and other long-time BusyBox developers are known to hang out + on the uClibc IRC channel: #uclibc on irc.freenode.net. There is a + <a href="http://ibot.Rikers.org/%23uclibc/">web archive of + daily logs of the #uclibc IRC channel</a> going back to 2002. +</p> + +<p> + <b>Please do not send private email to Rob, Erik, Manuel, or the other + BusyBox contributors asking for private help unless you are planning on + paying for consulting services.</b> +</p> + +<p> + When we answer questions on the BusyBox mailing list, it helps everyone + since people with similar problems in the future will be able to get help + by searching the mailing list archives. Private help is reserved as a paid + service. If you need to use private communication, or if you are serious + about getting timely assistance with BusyBox, you should seriously consider + paying for consulting services. +</p> + +<hr /> +<p> +<h2><a name="contracts">I need you to add <favorite feature>! Are the BusyBox developers willing to be paid in order to fix bugs or add in <favorite feature>? Are you willing to provide support contracts?</a></h2> +</p> + +<p> + Yes we are. The easy way to sponsor a new feature is to post an offer on + the mailing list to see who's interested. You can also email the project's + maintainer and ask them to recommend someone. +</p> + +<p> If you prefer to deal with an organization rather than an individual, Rob + Landley (the current BusyBox maintainer) works for + <a http://www.timesys.com>TimeSys</a>, and Eric Andersen (the previous + busybox maintainer and current uClibc maintainer) owns + <a href="http://codepoet-consulting.com/">CodePoet Consulting</a>. Both + companies offer support contracts and handle new development, and there + are plenty of other companies that do the same. +</p> + + + + +<h1>Troubleshooting</h1> + +<hr /> +<p></p> +<h2><a name="bugs">I think I found a bug in BusyBox! What should I do?</a></h2> +<p></p> + +<p> + If you simply need help with using or configuring BusyBox, please submit a + detailed description of your problem to the BusyBox mailing list at <a + href="mailto:busybox@busybox.net"> busybox@busybox.net</a>. + Please do not send email to individual developers asking + for private help unless you are planning on paying for consulting services. + When we answer questions on the BusyBox mailing list, it helps everyone, + while private answers help only you... +</p> + +<p> + Bug reports and new feature patches sometimes get lost when posted to the + mailing list, because the developers of BusyBox are busy people and have + only so much they can keep in their brains at a time. You can post a + polite reminder after 2-3 days without offending anybody. If that doesn't + result in a solution, please use the + <a href="http://bugs.busybox.net/">BusyBox Bug + and Patch Tracking System</a> to submit a detailed explanation and we'll + get to it as soon as we can. +</p> + +<p> + Note that bugs entered into the bug system without being mentioned on the + mailing list first may languish there for months before anyone even notices + them. We generally go through the bug system when preparing for new + development releases, to see what fell through the cracks while we were + off writing new features. (It's a fast/unreliable vs slow/reliable thing. + Saves retransits, but the latency sucks.) +</p> + +<hr /> +<p></p> +<h2><a name="backporting">I'm using an ancient version from the dawn of time and something's broken. Can you backport fixes for free?</h2> + +<p>Variants of this one get asked a lot.</p> + +<p>The purpose of the BusyBox mailing list is to develop and improve BusyBox, +and we're happy to respond to our users' needs. But if you're coming to the +list for free tech support we're going to ask you to upgrade to a current +version before we try to diagnose your problem.</p> + +<p>If you're building BusyBox 0.50 with uClibc 0.9.19 and gcc 0.9.26 there's a +fairly large chance that whatever problem you're seeing has already been fixed. +To get that fix, all you have to do is upgrade to a newer version. If you +don't at least _try_ that, you're wasting our time.</p> + +<p>The volunteers are happy to fix any bugs you point out in the current +versions because doing so helps everybody and makes the project better. We +want to make the current version work for you. But diagnosing, debugging, and +backporting fixes to old versions isn't something we do for free, because it +doesn't help anybody but you. The cost of volunteer tech support is using a +reasonably current version of the project.</p> + +<p>If you don't want to upgrade, you have the complete source code and thus +the ability to fix it yourself, or hire a consultant to do it for you. If you +got your version from a vendor who still supports the older version, they can +help you. But there are limits as to what the volunteers will feel obliged to +do for you.</p> + +<p>As a rule of thumb, volunteers will generally answer polite questions about +a given version for about three years after its release before it's so old +we don't remember the answer off the top of our head. And if you want us to +put any _effort_ into tracking it down, we want you to put in a little effort +of your own by confirming it's still a problem with the current version. It's +also hard for us to fix a problem of yours if we can't reproduce it because +we don't have any systems running an environment that old.</p> + +<p>A consultant will happily set up a special environment just to reproduce +your problem, and you can always ask on the list if any of the developers +have consulting rates.</p> + +<hr /> +<p> +<h2><a name="init">Busybox init isn't working!</a></h2> +<p> + Init is the first program that runs, so it might be that no programs are + working on your new system because of a problem with your cross-compiler, + kernel, console settings, shared libraries, root filesystem... To rule all + that out, first build a statically linked version of the following "hello + world" program with your cross compiler toolchain: +</p> +<pre> +#include <stdio.h> + +int main(int argc, char *argv) +{ + printf("Hello world!\n"); + sleep(999999999); +} +</pre> + +<p> + Now try to boot your device with an "init=" argument pointing to your + hello world program. Did you see the hello world message? Until you + do, don't bother messing with busybox init. +</p> + +<p> + Once you've got it working statically linked, try getting it to work + dynamically linked. Then read the FAQ entry <a href="#build_system">How + do I build a BusyBox-based system?</a>, and the + <a href="/downloads/BusyBox.html#item_init">documentation for BusyBox + init</a>. +</p> + +<hr /> +<p> +<h2><a name="sed">I can't configure busybox on my system.</a></h2> +<p> + Configuring Busybox depends on a recent version of sed. Older + distributions (Red Hat 7.2, Debian 3.0) may not come with a + usable version. Luckily BusyBox can use its own sed to configure itself, + although this leads to a bit of a chicken and egg problem. + You can work around this by hand-configuring busybox to build with just + sed, then putting that sed in your path to configure the rest of busybox + with, like so: +</p> + +<pre> + tar xvjf sources/busybox-x.x.x.tar.bz2 + cd busybox-x.x.x + make allnoconfig + make include/bb_config.h + echo "CONFIG_SED=y" >> .config + echo "#undef ENABLE_SED" >> include/bb_config.h + echo "#define ENABLE_SED 1" >> include/bb_config.h + make + mv busybox sed + export PATH=`pwd`:"$PATH" +</pre> + +<p>Then you can run "make defconfig" or "make menuconfig" normally.</p> + +<hr /> +<p> +<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> +<p> + + Job control will be turned off since your shell can not obtain a controlling + terminal. This typically happens when you run your shell on /dev/console. + The kernel will not provide a controlling terminal on the /dev/console + device. Your should run your shell on a normal tty such as tty1 or ttyS0 + and everything will work perfectly. If you <em>REALLY</em> want your shell + to run on /dev/console, then you can hack your kernel (if you are into that + sortof thing) by changing drivers/char/tty_io.c to change the lines where + it sets "noctty = 1;" to instead set it to "0". I recommend you instead + run your shell on a real console... +</p> + +<h1>Development</h1> + +<h2><b><a name="goals">What are the goals of busybox?</a></b></h2> + +<p>Busybox aims to be the smallest and simplest correct implementation of the +standard Linux command line tools. First and foremost, this means the +smallest executable size we can manage. We also want to have the simplest +and cleanest implementation we can manage, be <a href="#standards">standards +compliant</a>, minimize run-time memory usage (heap and stack), run fast, and +take over the world.</p> + +<h2><b><a name="design">What is the design of busybox?</a></b></h2> + +<p>Busybox is like a swiss army knife: one thing with many functions. +The busybox executable can act like many different programs depending on +the name used to invoke it. Normal practice is to create a bunch of symlinks +pointing to the busybox binary, each of which triggers a different busybox +function. (See <a href="FAQ.html#getting_started">getting started</a> in the +FAQ for more information on usage, and <a href="BusyBox.html">the +busybox documentation</a> for a list of symlink names and what they do.) + +<p>The "one binary to rule them all" approach is primarily for size reasons: a +single multi-purpose executable is smaller then many small files could be. +This way busybox only has one set of ELF headers, it can easily share code +between different apps even when statically linked, it has better packing +efficiency by avoding gaps between files or compression dictionary resets, +and so on.</p> + +<p>Work is underway on new options such as "make standalone" to build separate +binaries for each applet, and a "libbb.so" to make the busybox common code +available as a shared library. Neither is ready yet at the time of this +writing.</p> + +<a name="source"></a> + +<h2><a name="source_applets"><b>The applet directories</b></a></h2> + +<p>The directory "applets" contains the busybox startup code (applets.c and +busybox.c), and several subdirectories containing the code for the individual +applets.</p> + +<p>Busybox execution starts with the main() function in applets/busybox.c, +which sets the global variable applet_name to argv[0] and calls +run_applet_by_name() in applets/applets.c. That uses the applets[] array +(defined in include/busybox.h and filled out in include/applets.h) to +transfer control to the appropriate APPLET_main() function (such as +cat_main() or sed_main()). The individual applet takes it from there.</p> + +<p>This is why calling busybox under a different name triggers different +functionality: main() looks up argv[0] in applets[] to get a function pointer +to APPLET_main().</p> + +<p>Busybox applets may also be invoked through the multiplexor applet +"busybox" (see busybox_main() in applets/busybox.c), and through the +standalone shell (grep for STANDALONE_SHELL in applets/shell/*.c). +See <a href="FAQ.html#getting_started">getting started</a> in the +FAQ for more information on these alternate usage mechanisms, which are +just different ways to reach the relevant APPLET_main() function.</p> + +<p>The applet subdirectories (archival, console-tools, coreutils, +debianutils, e2fsprogs, editors, findutils, init, loginutils, miscutils, +modutils, networking, procps, shell, sysklogd, and util-linux) correspond +to the configuration sub-menus in menuconfig. Each subdirectory contains the +code to implement the applets in that sub-menu, as well as a Config.in +file defining that configuration sub-menu (with dependencies and help text +for each applet), and the makefile segment (Makefile.in) for that +subdirectory.</p> + +<p>The run-time --help is stored in usage_messages[], which is initialized at +the start of applets/applets.c and gets its help text from usage.h. During the +build this help text is also used to generate the BusyBox documentation (in +html, txt, and man page formats) in the docs directory. See +<a href="#adding">adding an applet to busybox</a> for more +information.</p> + +<h2><a name="source_libbb"><b>libbb</b></a></h2> + +<p>Most non-setup code shared between busybox applets lives in the libbb +directory. It's a mess that evolved over the years without much auditing +or cleanup. For anybody looking for a great project to break into busybox +development with, documenting libbb would be both incredibly useful and good +experience.</p> + +<p>Common themes in libbb include allocation functions that test +for failure and abort the program with an error message so the caller doesn't +have to test the return value (xmalloc(), xstrdup(), etc), wrapped versions +of open(), close(), read(), and write() that test for their own failures +and/or retry automatically, linked list management functions (llist.c), +command line argument parsing (getopt32.c), and a whole lot more.</p> + +<hr /> +<p> +<h2><a name="optimize">I want to make busybox even smaller, how do I go about it?</a></h2> +<p> + To conserve bytes it's good to know where they're being used, and the + size of the final executable isn't always a reliable indicator of + the size of the components (since various structures are rounded up, + so a small change may not even be visible by itself, but many small + savings add up). +</p> + +<p> The busybox Makefile builds two versions of busybox, one of which + (busybox_unstripped) has extra information that various analysis tools + can use. (This has nothing to do with CONFIG_DEBUG, leave that off + when trying to optimize for size.) +</p> + +<p> The <b>"make bloatcheck"</b> option uses Matt Mackall's bloat-o-meter + script to compare two versions of busybox (busybox_unstripped vs + busybox_old), and report which symbols changed size and by how much. + To use it, first build a base version with <b>"make baseline"</b>. + (This creates busybox_old, which should have the original sizes for + comparison purposes.) Then build the new version with your changes + and run "make bloatcheck" to see the size differences from the old + version. +</p> +<p> + The first line of output has totals: how many symbols were added or + removed, how many symbols grew or shrank, the number of bytes added + and number of bytes removed by these changes, and finally the total + number of bytes difference between the two files. The remaining + lines show each individual symbol, the old and new sizes, and the + increase or decrease in size (which results are sorted by). +</p> +<p> + The <b>"make sizes"</b> option produces raw symbol size information for + busybox_unstripped. This is the output from the "nm --size-sort" + command (see "man nm" for more information), and is the information + bloat-o-meter parses to produce the comparison report above. For + defconfig, this is a good way to find the largest symbols in the tree + (which is a good place to start when trying to shrink the code). To + take a closer look at individual applets, configure busybox with just + one applet (run "make allnoconfig" and then switch on a single applet + with menuconfig), and then use "make sizes" to see the size of that + applet's components. +</p> +<p> + The "showasm" command (in the scripts directory) produces an assembly + dump of a function, providing a closer look at what changed. Try + "scripts/showasm busybox_unstripped" to list available symbols, and + "scripts/showasm busybox_unstripped symbolname" to see the assembly + for a sepecific symbol. +</p> +<hr /> + + + +<h2><a name="adding"><b>Adding an applet to busybox</b></a></h2> + +<p>To add a new applet to busybox, first pick a name for the applet and +a corresponding CONFIG_NAME. Then do this:</p> + +<ul> +<li>Figure out where in the busybox source tree your applet best fits, +and put your source code there. Be sure to use APPLET_main() instead +of main(), where APPLET is the name of your applet.</li> + +<li>Add your applet to the relevant Config.in file (which file you add +it to determines where it shows up in "make menuconfig"). This uses +the same general format as the linux kernel's configuration system.</li> + +<li>Add your applet to the relevant Makefile.in file (in the same +directory as the Config.in you chose), using the existing entries as a +template and the same CONFIG symbol as you used for Config.in. (Don't +forget "needlibm" or "needcrypt" if your applet needs libm or +libcrypt.)</li> + +<li>Add your applet to "include/applets.h", using one of the existing +entries as a template. (Note: this is in alphabetical order. Applets +are found via binary search, and if you add an applet out of order it +won't work.)</li> + +<li>Add your applet's runtime help text to "include/usage.h". You need +at least appname_trivial_usage (the minimal help text, always included +in the busybox binary when this applet is enabled) and appname_full_usage +(extra help text included in the busybox binary with +CONFIG_FEATURE_VERBOSE_USAGE is enabled), or it won't compile. +The other two help entry types (appname_example_usage and +appname_notes_usage) are optional. They don't take up space in the binary, +but instead show up in the generated documentation (BusyBox.html, +BusyBox.txt, and the man page BusyBox.1).</li> + +<li>Run menuconfig, switch your applet on, compile, test, and fix the +bugs. Be sure to try both "allyesconfig" and "allnoconfig" (and +"allbareconfig" if relevant).</li> + +</ul> + +<h2><a name="standards">What standards does busybox adhere to?</a></h2> + +<p>The standard we're paying attention to is the "Shell and Utilities" +portion of the <a href="http://www.opengroup.org/onlinepubs/009695399/">Open +Group Base Standards</a> (also known as the Single Unix Specification version +3 or SUSv3). Note that paying attention isn't necessarily the same thing as +following it.</p> + +<p>SUSv3 doesn't even mention things like init, mount, tar, or losetup, nor +commonly used options like echo's '-e' and '-n', or sed's '-i'. Busybox is +driven by what real users actually need, not the fact the standard believes +we should implement ed or sccs. For size reasons, we're unlikely to include +much internationalization support beyond UTF-8, and on top of all that, our +configuration menu lets developers chop out features to produce smaller but +very non-standard utilities.</p> + +<p>Also, Busybox is aimed primarily at Linux. Unix standards are interesting +because Linux tries to adhere to them, but portability to dozens of platforms +is only interesting in terms of offering a restricted feature set that works +everywhere, not growing dozens of platform-specific extensions. Busybox +should be portable to all hardware platforms Linux supports, and any other +similar operating systems that are easy to do and won't require much +maintenance.</p> + +<p>In practice, standards compliance tends to be a clean-up step once an +applet is otherwise finished. When polishing and testing a busybox applet, +we ensure we have at least the option of full standards compliance, or else +document where we (intentionally) fall short.</p> + +<h2><a name="portability">Portability.</a></h2> + +<p>Busybox is a Linux project, but that doesn't mean we don't have to worry +about portability. First of all, there are different hardware platforms, +different C library implementations, different versions of the kernel and +build toolchain... The file "include/platform.h" exists to centralize and +encapsulate various platform-specific things in one place, so most busybox +code doesn't have to care where it's running.</p> + +<p>To start with, Linux runs on dozens of hardware platforms. We try to test +each release on x86, x86-64, arm, power pc, and mips. (Since qemu can handle +all of these, this isn't that hard.) This means we have to care about a number +of portability issues like endianness, word size, and alignment, all of which +belong in platform.h. That header handles conditional #includes and gives +us macros we can use in the rest of our code. At some point in the future +we might grow a platform.c, possibly even a platform subdirectory. As long +as the applets themselves don't have to care.</p> + +<p>On a related note, we made the "default signedness of char varies" problem +go away by feeding the compiler -funsigned-char. This gives us consistent +behavior on all platforms, and defaults to 8-bit clean text processing (which +gets us halfway to UTF-8 support). NOMMU support is less easily separated +(see the tips section later in this document), but we're working on it.</p> + +<p>Another type of portability is build environments: we unapologetically use +a number of gcc and glibc extensions (as does the Linux kernel), but these have +been picked up by packages like uClibc, TCC, and Intel's C Compiler. As for +gcc, we take advantage of newer compiler optimizations to get the smallest +possible size, but we also regression test against an older build environment +using the Red Hat 9 image at "http://busybox.net/downloads/qemu". This has a +2.4 kernel, gcc 3.2, make 3.79.1, and glibc 2.3, and is the oldest +build/deployment environment we still put any effort into maintaining. (If +anyone takes an interest in older kernels you're welcome to submit patches, +but the effort would probably be better spent +<a href="http://www.selenic.com/linux-tiny/">trimming +down the 2.6 kernel</a>.) Older gcc versions than that are uninteresting since +we now use c99 features, although +<a href="http://fabrice.bellard.free.fr/tcc/">tcc</a> might be worth a +look.</p> + +<p>We also test busybox against the current release of uClibc. Older versions +of uClibc aren't very interesting (they were buggy, and uClibc wasn't really +usable as a general-purpose C library before version 0.9.26 anyway).</p> + +<p>Other unix implementations are mostly uninteresting, since Linux binaries +have become the new standard for portable Unix programs. Specifically, +the ubiquity of Linux was cited as the main reason the Intel Binary +Compatability Standard 2 died, by the standards group organized to name a +successor to ibcs2: <a href="http://www.telly.org/86open/">the 86open +project</a>. That project disbanded in 1999 with the endorsement of an +existing standard: Linux ELF binaries. Since then, the major players at the +time (such as <a +href=http://www-03.ibm.com/servers/aix/products/aixos/linux/index.html>AIX</a>, <a +href=http://www.sun.com/software/solaris/ds/linux_interop.jsp#3>Solaris</a>, and +<a href=http://www.onlamp.com/pub/a/bsd/2000/03/17/linuxapps.html>FreeBSD</a>) +have all either grown Linux support or folded.</p> + +<p>The major exceptions are newcomer MacOS X, some embedded environments +(such as newlib+libgloss) which provide a posix environment but not a full +Linux environment, and environments like Cygwin that provide only partial Linux +emulation. Also, some embedded Linux systems run a Linux kernel but amputate +things like the /proc directory to save space.</p> + +<p>Supporting these systems is largely a question of providing a clean subset +of BusyBox's functionality -- whichever applets can easily be made to +work in that environment. Annotating the configuration system to +indicate which applets require which prerequisites (such as procfs) is +also welcome. Other efforts to support these systems (swapping #include +files to build in different environments, adding adapter code to platform.h, +adding more extensive special-case supporting infrastructure such as mount's +legacy mtab support) are handled on a case-by-case basis. Support that can be +cleanly hidden in platform.h is reasonably attractive, and failing that +support that can be cleanly separated into a separate conditionally compiled +file is at least worth a look. Special-case code in the body of an applet is +something we're trying to avoid.</p> + +<h2><a name="tips" />Programming tips and tricks.</a></h2> + +<p>Various things busybox uses that aren't particularly well documented +elsewhere.</p> + +<h2><a name="tips_encrypted_passwords">Encrypted Passwords</a></h2> + +<p>Password fields in /etc/passwd and /etc/shadow are in a special format. +If the first character isn't '$', then it's an old DES style password. If +the first character is '$' then the password is actually three fields +separated by '$' characters:</p> +<pre> + <b>$type$salt$encrypted_password</b> +</pre> + +<p>The "type" indicates which encryption algorithm to use: 1 for MD5 and 2 for SHA1.</p> + +<p>The "salt" is a bunch of ramdom characters (generally 8) the encryption +algorithm uses to perturb the password in a known and reproducible way (such +as by appending the random data to the unencrypted password, or combining +them with exclusive or). Salt is randomly generated when setting a password, +and then the same salt value is re-used when checking the password. (Salt is +thus stored unencrypted.)</p> + +<p>The advantage of using salt is that the same cleartext password encrypted +with a different salt value produces a different encrypted value. +If each encrypted password uses a different salt value, an attacker is forced +to do the cryptographic math all over again for each password they want to +check. Without salt, they could simply produce a big dictionary of commonly +used passwords ahead of time, and look up each password in a stolen password +file to see if it's a known value. (Even if there are billions of possible +passwords in the dictionary, checking each one is just a binary search against +a file only a few gigabytes long.) With salt they can't even tell if two +different users share the same password without guessing what that password +is and decrypting it. They also can't precompute the attack dictionary for +a specific password until they know what the salt value is.</p> + +<p>The third field is the encrypted password (plus the salt). For md5 this +is 22 bytes.</p> + +<p>The busybox function to handle all this is pw_encrypt(clear, salt) in +"libbb/pw_encrypt.c". The first argument is the clear text password to be +encrypted, and the second is a string in "$type$salt$password" format, from +which the "type" and "salt" fields will be extracted to produce an encrypted +value. (Only the first two fields are needed, the third $ is equivalent to +the end of the string.) The return value is an encrypted password in +/etc/passwd format, with all three $ separated fields. It's stored in +a static buffer, 128 bytes long.</p> + +<p>So when checking an existing password, if pw_encrypt(text, +old_encrypted_password) returns a string that compares identical to +old_encrypted_password, you've got the right password. When setting a new +password, generate a random 8 character salt string, put it in the right +format with sprintf(buffer, "$%c$%s", type, salt), and feed buffer as the +second argument to pw_encrypt(text,buffer).</p> + +<h2><a name="tips_vfork">Fork and vfork</a></h2> + +<p>On systems that haven't got a Memory Management Unit, fork() is unreasonably +expensive to implement (and sometimes even impossible), so a less capable +function called vfork() is used instead. (Using vfork() on a system with an +MMU is like pounding a nail with a wrench. Not the best tool for the job, but +it works.)</p> + +<p>Busybox hides the difference between fork() and vfork() in +libbb/bb_fork_exec.c. If you ever want to fork and exec, use bb_fork_exec() +(which returns a pid and takes the same arguments as execve(), although in +this case envp can be NULL) and don't worry about it. This description is +here in case you want to know why that does what it does.</p> + +<p>Implementing fork() depends on having a Memory Management Unit. With an +MMU then you can simply set up a second set of page tables and share the +physical memory via copy-on-write. So a fork() followed quickly by exec() +only copies a few pages of the parent's memory, just the ones it changes +before freeing them.</p> + +<p>With a very primitive MMU (using a base pointer plus length instead of page +tables, which can provide virtual addresses and protect processes from each +other, but no copy on write) you can still implement fork. But it's +unreasonably expensive, because you have to copy all the parent process' +memory into the new process (which could easily be several megabytes per fork). +And you have to do this even though that memory gets freed again as soon as the +exec happens. (This is not just slow and a waste of space but causes memory +usage spikes that can easily cause the system to run out of memory.)</p> + +<p>Without even a primitive MMU, you have no virtual addresses. Every process +can reach out and touch any other process' memory, because all pointers are to +physical addresses with no protection. Even if you copy a process' memory to +new physical addresses, all of its pointers point to the old objects in the +old process. (Searching through the new copy's memory for pointers and +redirect them to the new locations is not an easy problem.)</p> + +<p>So with a primitive or missing MMU, fork() is just not a good idea.</p> + +<p>In theory, vfork() is just a fork() that writeably shares the heap and stack +rather than copying it (so what one process writes the other one sees). In +practice, vfork() has to suspend the parent process until the child does exec, +at which point the parent wakes up and resumes by returning from the call to +vfork(). All modern kernel/libc combinations implement vfork() to put the +parent to sleep until the child does its exec. There's just no other way to +make it work: the parent has to know the child has done its exec() or exit() +before it's safe to return from the function it's in, so it has to block +until that happens. In fact without suspending the parent there's no way to +even store separate copies of the return value (the pid) from the vfork() call +itself: both assignments write into the same memory location.</p> + +<p>One way to understand (and in fact implement) vfork() is this: imagine +the parent does a setjmp and then continues on (pretending to be the child) +until the exec() comes around, then the _exec_ does the actual fork, and the +parent does a longjmp back to the original vfork call and continues on from +there. (It thus becomes obvious why the child can't return, or modify +local variables it doesn't want the parent to see changed when it resumes.) + +<p>Note a common mistake: the need for vfork doesn't mean you can't have two +processes running at the same time. It means you can't have two processes +sharing the same memory without stomping all over each other. As soon as +the child calls exec(), the parent resumes.</p> + +<p>If the child's attempt to call exec() fails, the child should call _exit() +rather than a normal exit(). This avoids any atexit() code that might confuse +the parent. (The parent should never call _exit(), only a vforked child that +failed to exec.)</p> + +<p>(Now in theory, a nommu system could just copy the _stack_ when it forks +(which presumably is much shorter than the heap), and leave the heap shared. +Even with no MMU at all +In practice, you've just wound up in a multi-threaded situation and you can't +do a malloc() or free() on your heap without freeing the other process' memory +(and if you don't have the proper locking for being threaded, corrupting the +heap if both of you try to do it at the same time and wind up stomping on +each other while traversing the free memory lists). The thing about vfork is +that it's a big red flag warning "there be dragons here" rather than +something subtle and thus even more dangerous.)</p> + +<h2><a name="tips_sort_read">Short reads and writes</a></h2> + +<p>Busybox has special functions, bb_full_read() and bb_full_write(), to +check that all the data we asked for got read or written. Is this a real +world consideration? Try the following:</p> + +<pre>while true; do echo hello; sleep 1; done | tee out.txt</pre> + +<p>If tee is implemented with bb_full_read(), tee doesn't display output +in real time but blocks until its entire input buffer (generally a couple +kilobytes) is read, then displays it all at once. In that case, we _want_ +the short read, for user interface reasons. (Note that read() should never +return 0 unless it has hit the end of input, and an attempt to write 0 +bytes should be ignored by the OS.)</p> + +<p>As for short writes, play around with two processes piping data to each +other on the command line (cat bigfile | gzip > out.gz) and suspend and +resume a few times (ctrl-z to suspend, "fg" to resume). The writer can +experience short writes, which are especially dangerous because if you don't +notice them you'll discard data. They can also happen when a system is under +load and a fast process is piping to a slower one. (Such as an xterm waiting +on x11 when the scheduler decides X is being a CPU hog with all that +text console scrolling...)</p> + +<p>So will data always be read from the far end of a pipe at the +same chunk sizes it was written in? Nope. Don't rely on that. For one +counterexample, see <a href="http://www.faqs.org/rfcs/rfc896.html">rfc 896 +for Nagle's algorithm</a>, which waits a fraction of a second or so before +sending out small amounts of data through a TCP/IP connection in case more +data comes in that can be merged into the same packet. (In case you were +wondering why action games that use TCP/IP set TCP_NODELAY to lower the latency +on their their sockets, now you know.)</p> + +<h2><a name="tips_memory">Memory used by relocatable code, PIC, and static linking.</a></h2> + +<p>The downside of standard dynamic linking is that it results in self-modifying +code. Although each executable's pages are mmaped() into a process' address +space from the executable file and are thus naturally shared between processes +out of the page cache, the library loader (ld-linux.so.2 or ld-uClibc.so.0) +writes to these pages to supply addresses for relocatable symbols. This +dirties the pages, triggering copy-on-write allocation of new memory for each +processes' dirtied pages.</p> + +<p>One solution to this is Position Independent Code (PIC), a way of linking +a file so all the relocations are grouped together. This dirties fewer +pages (often just a single page) for each process' relocations. The down +side is this results in larger executables, which take up more space on disk +(and a correspondingly larger space in memory). But when many copies of the +same program are running, PIC dynamic linking trades a larger disk footprint +for a smaller memory footprint, by sharing more pages.</p> + +<p>A third solution is static linking. A statically linked program has no +relocations, and thus the entire executable is shared between all running +instances. This tends to have a significantly larger disk footprint, but +on a system with only one or two executables, shared libraries aren't much +of a win anyway.</p> + +<p>You can tell the glibc linker to display debugging information about its +relocations with the environment variable "LD_DEBUG". Try +"LD_DEBUG=help /bin/true" for a list of commands. Learning to interpret +"LD_DEBUG=statistics cat /proc/self/statm" could be interesting.</p> + +<p>For more on this topic, here's Rich Felker:</p> +<blockquote> +<p>Dynamic linking (without fixed load addresses) fundamentally requires +at least one dirty page per dso that uses symbols. Making calls (but +never taking the address explicitly) to functions within the same dso +does not require a dirty page by itself, but will with ELF unless you +use -Bsymbolic or hidden symbols when linking.</p> + +<p>ELF uses significant additional stack space for the kernel to pass all +the ELF data structures to the newly created process image. These are +located above the argument list and environment. This normally adds 1 +dirty page to the process size.</p> + +<p>The ELF dynamic linker has its own data segment, adding one or more +dirty pages. I believe it also performs relocations on itself.</p> + +<p>The ELF dynamic linker makes significant dynamic allocations to manage +the global symbol table and the loaded dso's. This data is never +freed. It will be needed again if libdl is used, so unconditionally +freeing it is not possible, but normal programs do not use libdl. Of +course with glibc all programs use libdl (due to nsswitch) so the +issue was never addressed.</p> + +<p>ELF also has the issue that segments are not page-aligned on disk. +This saves up to 4k on disk, but at the expense of using an additional +dirty page in most cases, due to a large portion of the first data +page being filled with a duplicate copy of the last text page.</p> + +<p>The above is just a partial list of the tiny memory penalties of ELF +dynamic linking, which eventually add up to quite a bit. The smallest +I've been able to get a process down to is 8 dirty pages, and the +above factors seem to mostly account for it (but some were difficult +to measure).</p> +</blockquote> + +<h2><a name="tips_kernel_headers"></a>Including kernel headers</h2> + +<p>The "linux" or "asm" directories of /usr/include contain Linux kernel +headers, so that the C library can talk directly to the Linux kernel. In +a perfect world, applications shouldn't include these headers directly, but +we don't live in a perfect world.</p> + +<p>For example, Busybox's losetup code wants linux/loop.c because nothing else +#defines the structures to call the kernel's loopback device setup ioctls. +Attempts to cut and paste the information into a local busybox header file +proved incredibly painful, because portions of the loop_info structure vary by +architecture, namely the type __kernel_dev_t has different sizes on alpha, +arm, x86, and so on. Meaning we either #include <linux/posix_types.h> or +we hardwire #ifdefs to check what platform we're building on and define this +type appropriately for every single hardware architecture supported by +Linux, which is simply unworkable.</p> + +<p>This is aside from the fact that the relevant type defined in +posix_types.h was renamed to __kernel_old_dev_t during the 2.5 series, so +to cut and paste the structure into our header we have to #include +<linux/version.h> to figure out which name to use. (What we actually do is +check if we're building on 2.6, and if so just use the new 64 bit structure +instead to avoid the rename entirely.) But we still need the version +check, since 2.4 didn't have the 64 bit structure.</p> + +<p>The BusyBox developers spent <u>two years</u> trying to figure +out a clean way to do all this. There isn't one. The losetup in the +util-linux package from kernel.org isn't doing it cleanly either, they just +hide the ugliness by nesting #include files. Their mount/loop.h +#includes "my_dev_t.h", which #includes <linux/posix_types.h> and +<linux/version.h> just like we do. There simply is no alternative.</p> + +<p>Just because directly #including kernel headers is sometimes +unavoidable doesn't me we should include them when there's a better +way to do it. However, block copying information out of the kernel headers +is not a better way.</p> + +<h2><a name="who">Who are the BusyBox developers?</a></h2> + +<p>The following login accounts currently exist on busybox.net. (I.E. these +people can commit <a href="http://busybox.net/downloads/patches">patches</a> +into subversion for the BusyBox, uClibc, and buildroot projects.)</p> + +<pre> +aldot :Bernhard Fischer +andersen :Erik Andersen - uClibc and BuildRoot maintainer. +bug1 :Glenn McGrath +davidm :David McCullough +gkajmowi :Garrett Kajmowicz - uClibc++ maintainer +jbglaw :Jan-Benedict Glaw +jocke :Joakim Tjernlund +landley :Rob Landley - BusyBox maintainer +lethal :Paul Mundt +mjn3 :Manuel Novoa III +osuadmin :osuadmin +pgf :Paul Fox +pkj :Peter Kjellerstedt +prpplague :David Anders +psm :Peter S. Mazinger +russ :Russ Dill +sandman :Robert Griebl +sjhill :Steven J. Hill +solar :Ned Ludd +timr :Tim Riker +tobiasa :Tobias Anderberg +vapier :Mike Frysinger +</pre> + +<p>The following accounts used to exist on busybox.net, but don't anymore so +I can't ask /etc/passwd for their names. Rob Wentworth <robwen@gmail.com> +asked Google and recovered the names:</p> + +<pre> +aaronl :Aaron Lehmann +beppu :John Beppu +dwhedon :David Whedon +erik :Erik Andersen +gfeldman :Gennady Feldman +jimg :Jim Gleason +kraai :Matt Kraai +markw :Mark Whitley +miles :Miles Bader +proski :Pavel Roskin +rjune :Richard June +tausq :Randolph Chung +vodz :Vladimir N. Oleynik +</pre> + + +<br> +<br> +<br> + +<!--#include file="footer.html" --> diff --git a/docs/busybox.net/about.html b/docs/busybox.net/about.html new file mode 100644 index 0000000..5272ee6 --- /dev/null +++ b/docs/busybox.net/about.html @@ -0,0 +1,23 @@ +<!--#include file="header.html" --> + +<h3>BusyBox: The Swiss Army Knife of Embedded Linux</h3> + +<p>BusyBox combines tiny versions of many common UNIX utilities into a single +small executable. It provides replacements for most of the utilities you +usually find in GNU fileutils, shellutils, etc. The utilities in BusyBox +generally have fewer options than their full-featured GNU cousins; however, +the options that are included provide the expected functionality and behave +very much like their GNU counterparts. BusyBox provides a fairly complete +environment for any small or embedded system.</p> + +<p>BusyBox has been written with size-optimization and limited resources in +mind. It is also extremely modular so you can easily include or exclude +commands (or features) at compile time. This makes it easy to customize +your embedded systems. To create a working system, just add some device +nodes in /dev, a few configuration files in /etc, and a Linux kernel.</p> + +<p>BusyBox is maintained by <a href="http://www.landley.net/">Rob Landley</a>, +and licensed under the <a href="/license.html">GNU GENERAL PUBLIC LICENSE</a> +version 2 or later.</p> + +<!--#include file="footer.html" --> diff --git a/docs/busybox.net/busybox-growth.ps b/docs/busybox.net/busybox-growth.ps new file mode 100644 index 0000000..2379def --- /dev/null +++ b/docs/busybox.net/busybox-growth.ps @@ -0,0 +1,404 @@ +%!PS-Adobe-2.0 +%%Title: busybox-growth.ps +%%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 +%%CreationDate: Tue Apr 10 14:03:36 2001 +%%DocumentFonts: (atend) +%%BoundingBox: 50 40 554 770 +%%Orientation: Landscape +%%Pages: (atend) +%%EndComments +/gnudict 120 dict def +gnudict begin +/Color true def +/Solid true def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/vshift -46 def +/dl {10 mul} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow { currentpoint stroke M + 0 vshift R show } def +/Rshow { currentpoint stroke M + dup stringwidth pop neg vshift R show } def +/Cshow { currentpoint stroke M + dup stringwidth pop -2 div vshift R show } def +/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def +/DL { Color {setrgbcolor Solid {pop []} if 0 setdash } + {pop pop pop Solid {pop []} if 0 setdash} ifelse } def +/BL { stroke gnulinewidth 2 mul setlinewidth } def +/AL { stroke gnulinewidth 2 div setlinewidth } def +/UL { gnulinewidth mul /userlinewidth exch def } def +/PL { stroke userlinewidth setlinewidth } def +/LTb { BL [] 0 0 0 DL } def +/LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def +/LT0 { PL [] 1 0 0 DL } def +/LT1 { PL [4 dl 2 dl] 0 1 0 DL } def +/LT2 { PL [2 dl 3 dl] 0 0 1 DL } def +/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def +/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def +/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def +/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def +/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def +/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 +/Pnt { stroke [] 0 setdash + gsave 1 setlinecap M 0 0 V stroke grestore } def +/Dia { stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt } def +/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt } def +/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke } def +/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt } def +/Star { 2 copy Pls Crs } def +/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill } def +/TriUF { stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill } def +/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt } def +/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF { stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill } def +/Pent { stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt } def +/PentF { stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore } def +/Circle { stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt } def +/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def +/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def +/C1 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath } bind def +/C2 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath } bind def +/C3 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath } bind def +/C4 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath } bind def +/C5 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc } bind def +/C6 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath } bind def +/C7 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath } bind def +/C8 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath } bind def +/C9 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath } bind def +/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath } bind def +/C11 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath } bind def +/C12 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath } bind def +/C13 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath } bind def +/C14 { BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc } bind def +/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath } bind def +/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath } bind def +/Square { dup Rec } bind def +/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def +/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def +/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def +/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def +/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def +/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def +/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def +/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def +/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill + Bsquare } bind def +/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def +/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def +/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare } bind def +/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare } bind def +/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def +/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare } bind def +/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def +/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def +/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def +/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def +/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def +/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def +/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def +/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def +/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def +/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def +/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def +/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def +/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def +/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def +/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def +/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def +/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def +/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def +/DiaE { stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke } def +/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke } def +/TriUE { stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke } def +/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke } def +/PentE { stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore } def +/CircE { stroke [] 0 setdash + hpt 0 360 arc stroke } def +/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def +/DiaW { stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke } def +/BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke } def +/TriUW { stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke } def +/TriDW { stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke } def +/PentW { stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore } def +/CircW { stroke [] 0 setdash + hpt 0 360 arc Opaque stroke } def +/BoxFill { gsave Rec 1 setgray fill grestore } def +end +%%EndProlog +%%Page: 1 1 +gnudict begin +gsave +50 50 translate +0.100 0.100 scale +90 rotate +0 -5040 translate +0 setgray +newpath +(Helvetica) findfont 140 scalefont setfont +1.000 UL +LTb +560 420 M +63 0 V +6409 0 R +-63 0 V +476 420 M +(0) Rshow +560 1056 M +63 0 V +6409 0 R +-63 0 V +-6493 0 R +(100) Rshow +560 1692 M +63 0 V +6409 0 R +-63 0 V +-6493 0 R +(200) Rshow +560 2328 M +63 0 V +6409 0 R +-63 0 V +-6493 0 R +(300) Rshow +560 2964 M +63 0 V +6409 0 R +-63 0 V +-6493 0 R +(400) Rshow +560 3600 M +63 0 V +6409 0 R +-63 0 V +-6493 0 R +(500) Rshow +560 4236 M +63 0 V +6409 0 R +-63 0 V +-6493 0 R +(600) Rshow +560 4872 M +63 0 V +6409 0 R +-63 0 V +-6493 0 R +(700) Rshow +1531 420 M +0 63 V +0 4389 R +0 -63 V +0 -4529 R +(400) Cshow +2825 420 M +0 63 V +0 4389 R +0 -63 V +0 -4529 R +(600) Cshow +4120 420 M +0 63 V +0 4389 R +0 -63 V +0 -4529 R +(800) Cshow +5414 420 M +0 63 V +0 4389 R +0 -63 V +0 -4529 R +(1000) Cshow +6708 420 M +0 63 V +0 4389 R +0 -63 V +0 -4529 R +(1200) Cshow +1.000 UL +LTb +560 420 M +6472 0 V +0 4452 V +-6472 0 V +560 420 L +0 2646 M +currentpoint gsave translate 90 rotate 0 0 M +(tar.gz size \(Kb\)) Cshow +grestore +3796 140 M +(time \(days since Jan 1, 1998\)) Cshow +1.000 UL +LT0 +696 420 M +0 593 V +1255 0 V +0 15 V +214 0 V +0 6 V +958 0 V +0 1 V +-84 0 V +0 37 V +168 0 V +0 262 V +13 0 V +0 56 V +91 0 V +0 33 V +6 0 V +0 1 V +19 0 V +0 11 V +20 0 V +0 13 V +32 0 V +0 104 V +52 0 V +0 27 V +65 0 V +0 15 V +39 0 V +0 126 V +174 0 V +0 103 V +52 0 V +0 49 V +175 0 V +0 56 V +433 0 V +0 661 V +415 0 V +0 857 V +123 0 V +0 -291 V +498 0 V +0 208 V +505 0 V +0 66 V +291 0 V +0 115 V +311 0 V +0 449 V +162 0 V +0 309 V +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica +%%Pages: 1 diff --git a/docs/busybox.net/copyright.txt b/docs/busybox.net/copyright.txt new file mode 100644 index 0000000..3974756 --- /dev/null +++ b/docs/busybox.net/copyright.txt @@ -0,0 +1,30 @@ + +The code and graphics on this website (and it's mirror sites, if any) are +Copyright (c) 1999-2004 by Erik Andersen. All rights reserved. +Copyright (c) 2005-2006 Rob Landley. + +Documents on this Web site including their graphical elements, design, and +layout are protected by trade dress and other laws and MAY BE COPIED OR +IMITATED IN WHOLE OR IN PART. THIS WEBSITE IS LICENSED FREE OF CHARGE, THERE +IS NO WARRANTY FOR THE WEBSITE TO THE EXTENT PERMITTED BY APPLICABLE LAW. +SHOULD THIS WEBSITE PROVE DEFECTIVE, YOU MAY ASSUME THAT SOMEONE MIGHT GET +AROUND TO SERVICING, REPAIRING OR CORRECTING IT SOMETIME WHEN THEY HAVE NOTHING +BETTER TO DO. REGARDLESS, YOU GET TO KEEP BOTH PIECES. + +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY +COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THIS +WEBSITE AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR +INABILITY TO USE THIS WEBSITE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR +LOSS OF HAIR, LOSS OF LIFE, LOSS OF MEMORY, LOSS OF YOUR CARKEYS, MISPLACEMENT +OF YOUR PAYCHECK, OR COMMANDER DATA BEING RENDERED UNABLE TO ASSIST THE +STARFLEET OFFICERS ABORD THE STARSHIP ENTERPRISE TO RECALIBRATE THE MAIN +DEFLECTOR ARRAY, LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE +WEBSITE TO OPERATE WITH YOUR WEBBROWSER), EVEN IF SUCH HOLDER OR OTHER PARTY +HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +You have been warned. + +You can contact the webmaster at <rob@landley.net> if you have some sort +of problem with this. + diff --git a/docs/busybox.net/developer.html b/docs/busybox.net/developer.html new file mode 100644 index 0000000..cdb68b7 --- /dev/null +++ b/docs/busybox.net/developer.html @@ -0,0 +1,69 @@ +<!--#include file="header.html" --> + +<h3>Morris Dancing</h3> + +<p>Subversion commit access requires an account on Morris. The server +behind busybox.net and uclibc.org. If you want to be able to commit things to +Subversion, first contribute some stuff to show you are serious, can handle +some responsibility, and that your patches don't generally need a lot of +cleanup. Then, very nicely ask one of us (<a href="mailto:rob@landley.net">Rob +Landley</a> for BusyBox, or <a href="mailto:andersen@codepoet.org">Erik +Andersen</a> for uClibc) for an account.</p> + +<p>If you're approved for an account, you'll need to send an email from your +preferred contact email address with the username you'd like to use when +committing changes to SVN, and attach a public ssh key to access your account +with.</p> + +<p>If you don't currently have an ssh version 2 DSA key at least 1024 bits +long (the default), you can generate a key using the +command <b>ssh-keygen -t dsa</b> and hitting enter at the prompts. This +will create the files <b>~/.ssh/id_dsa</b> and <b>~/.ssh/id_dsa.pub</b> +You must then send the content of 'id_dsa.pub' to me so I can set up your +account. (The content of 'id_dsa' should of course be kept secret, anyone +who has that can access any account that's installed your public key in +its <b>.ssh/authorized_keys</b> file.)</p> + +<p>Note that if you would prefer to keep your communications with us +private, you can encrypt your email using +<a href="http://landley.net/pubkey.gpg">Rob's public key</a> or +<a href="http://www.codepoet.org/andersen/erik/gpg.asc">Erik's public +key</a>.</p> + +<p>Once you are setup with an account, you will need to use your account to +checkout a copy of BusyBox from Subversion:</p> + +<p><b>svn checkout svn+ssh://username@busybox.net/svn/trunk/busybox</b></p> +<p>or</p> +<p><b>svn checkout svn+ssh://username@uclibc.org/svn/trunk/uclibc</b></p> + +<p>You must change <em>username</em> to your own username, or omit +it if it's the same as your local username.</p> + +<p>You can then enter the newly checked out project directory, make changes, +check your changes, diff your changes, revert your changes, and and commit your +changes using commands such as:</p> + +<b><pre> +svn diff +svn status +svn revert +EDITOR=vi svn commit +svn log -v -r PREV:HEAD +svn help +</pre></b> + +<p>For additional detail on how to use Subversion, please visit the +<a href="http://subversion.tigris.org/">the Subversion website</a>. +You might also want to read online or buy a copy of <a +href="http://svnbook.red-bean.com/">the Subversion Book</a>...</p> + +<p>A morris account also gives you a personal web page +(http://busybox.net/~username comes from ~/public_html on morris), and of +course a shell prompt you can ssh into (as a regular user, root access is +reserved for Erik and Rob). But keep in mind an account on Morris is a +priviledge, not a requirement. Most contributors to busybox and uClibc +haven't got one, and accounts are handed out to make the project maintainers' +lives easier, not because "you deserve it".</p> + +<!--#include file="footer.html" --> diff --git a/docs/busybox.net/download.html b/docs/busybox.net/download.html new file mode 100644 index 0000000..f8746dd --- /dev/null +++ b/docs/busybox.net/download.html @@ -0,0 +1,29 @@ +<!--#include file="header.html" --> + + + +<h3>Download</h3> + +Source for the latest release can always be +downloaded from <a href="downloads">http://www.busybox.net/downloads</a>. + +<p> +You can also obtain <a href= "downloads/snapshots/">Daily Snapshots</a> of +the latest development source tree for those wishing to follow BusyBox development, +but cannot or do not wish to use Subversion (svn). + +<ul> + <li> Click here to <a href="/cgi-bin/viewcvs.cgi/trunk/busybox/">browse the source tree</a>. + </li> + + <li>Anonymous <a href="subversion.html">Subversion access</a> is available. + </li> + + <li>For those that are actively contributing obtaining + <a href="developer.html">Subversion read/write access</a> is also possible. + </li> + +</ul> + +<!--#include file="footer.html" --> + diff --git a/docs/busybox.net/footer.html b/docs/busybox.net/footer.html new file mode 100644 index 0000000..5f2335a --- /dev/null +++ b/docs/busybox.net/footer.html @@ -0,0 +1,47 @@ +<!-- Footer --> + + + </td> + </tr> + </table> + +<hr /> + + + <table width="100%"> + <tr> + <td width="60%"> + <font face="arial, helvetica, sans-serif" size="-1"> + <a href="/copyright.txt">Copyright © 1999-2005 Erik Andersen</a> + <br> + Mail all comments, insults, suggestions and bribes to + <br> + Denis Vlasenko <a href="mailto:vda.linux@googlemail.com">vda.linux@googlemail.com</a><br> + </font> + </td> + + <td> + <a href="http://www.vim.org/"><img border=0 width=88 height=31 + src="images/written.in.vi.png" + alt="This site created with the vi editor"></a> + </td> + + <td> + <a href="http://osuosl.org/"><img border=0 width=114 height=63 + src="images/osuosl.png" + alt="This site is kindly hosted by OSL"></a> + </td> +<!-- + <td> + <a href="http://validator.w3.org/check?uri=referer"><img + border="0" height="31" width="88" + src="images/valid-html401.png" + alt="Valid HTML"></a> + </td> +--> + </TR> + </table> + + </body> +</html> + diff --git a/docs/busybox.net/header.html b/docs/busybox.net/header.html new file mode 100644 index 0000000..081f18c --- /dev/null +++ b/docs/busybox.net/header.html @@ -0,0 +1,96 @@ +<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'> + +<html> + <head> + <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'> + <title>BusyBox</title> + <style type="text/css"> + body { + background-color: #DEE2DE; + color: #000000; + } + :link { color: #660000 } + :visited { color: #660000 } + :active { color: #660000 } + td.c2 {font-family: arial, helvetica, sans-serif; font-size: 80%} + td.c1 {font-family: lucida, helvetica; font-size: 248%} + </style> + </head> + + <body> + <basefont face="lucida, helvetica, arial" size="3"> + + + + +<table border="0" cellpadding="0" cellspacing="0"> + + +<tr> +<td> + <div class="c3"> + <table border="0" cellspacing="1" cellpadding="2"> + <tr> + <td class="c1">BUSYBOX</td> + </tr> + </table> + </div> + + <a href="/"><IMG SRC="images/busybox1.png" alt="BusyBox" border="0"></a><BR> +</td> +</tr> + +<tr> + +<td valign="TOP"> + <b>About</b> + <ul> + <li><a href="about.html">About BusyBox</a></li> + <li><a href="screenshot.html">Screenshot</a></li> + <li><a href="news.html">Announcements</a></li> + <li><a href="downloads/news">BusyBox Weekly News</a></li> + </ul> + <b>Documentation</b> + <ul> + <li><a href="FAQ.html">FAQ</a></li> + <li><a href="downloads/BusyBox.html">Command Help</a></li> + <li><a href="downloads/README">README</a></li> + </ul> + <b>Get BusyBox</b> + <ul> + <li><a href="download.html">Download Source</a></li> + <li><a href="license.html">License</a></li> + <li><a href="products.html">Products</a></li> + </ul> + <b>Development</b> + <ul> + <li><a href="/cgi-bin/viewcvs.cgi/trunk/busybox/">Browse Source</a></li> + <li><a href="subversion.html">Source Control</a></li> + <li><a href="/downloads/patches/recent.html">Recent Changes</a></li> + <li><a href="lists.html">Mailing Lists</a></li> + <li><a href="http://bugs.busybox.net/">Bug Tracking</a></li> + </ul> + <p><b>Links</b> + <ul> + <li><a href="links.html">Related Sites</a></li> + <li><a href="tinyutils.html">Tiny Utilities</a></li> + <li><a href="sponsors.html">Sponsors</a></li> + </ul> + <p><b>Developer Pages</b> + <ul> + <li><a href="http://busybox.net/~landley">Rob</a></li> + <li><a href="http://busybox.net/~aldot">Bernhard</a></li> + <li><a href="http://busybox.net/~vda">Denis</a></li> + </ul> + +<!-- + <a href="http://validator.w3.org/check/referer"><img + src="/images/vh40.gif" height=31 width=88 + align=left border=0 alt="Valid HTML 4.0!"></a> +--> + +</td> + + +<td Valign="TOP"> + diff --git a/docs/busybox.net/images/back.png b/docs/busybox.net/images/back.png Binary files differnew file mode 100644 index 0000000..7992386 --- /dev/null +++ b/docs/busybox.net/images/back.png diff --git a/docs/busybox.net/images/busybox.jpeg b/docs/busybox.net/images/busybox.jpeg Binary files differnew file mode 100644 index 0000000..37edc96 --- /dev/null +++ b/docs/busybox.net/images/busybox.jpeg diff --git a/docs/busybox.net/images/busybox.png b/docs/busybox.net/images/busybox.png Binary files differnew file mode 100644 index 0000000..b1eb92f --- /dev/null +++ b/docs/busybox.net/images/busybox.png diff --git a/docs/busybox.net/images/busybox1.png b/docs/busybox.net/images/busybox1.png Binary files differnew file mode 100644 index 0000000..4d3126a --- /dev/null +++ b/docs/busybox.net/images/busybox1.png diff --git a/docs/busybox.net/images/busybox2.jpg b/docs/busybox.net/images/busybox2.jpg Binary files differnew file mode 100644 index 0000000..abf8f06 --- /dev/null +++ b/docs/busybox.net/images/busybox2.jpg diff --git a/docs/busybox.net/images/busybox3.jpg b/docs/busybox.net/images/busybox3.jpg Binary files differnew file mode 100644 index 0000000..0fab84c --- /dev/null +++ b/docs/busybox.net/images/busybox3.jpg diff --git a/docs/busybox.net/images/dir.png b/docs/busybox.net/images/dir.png Binary files differnew file mode 100644 index 0000000..1d633ce --- /dev/null +++ b/docs/busybox.net/images/dir.png diff --git a/docs/busybox.net/images/donate.png b/docs/busybox.net/images/donate.png Binary files differnew file mode 100644 index 0000000..b55621b --- /dev/null +++ b/docs/busybox.net/images/donate.png diff --git a/docs/busybox.net/images/fm.mini.png b/docs/busybox.net/images/fm.mini.png Binary files differnew file mode 100644 index 0000000..c0883cd --- /dev/null +++ b/docs/busybox.net/images/fm.mini.png diff --git a/docs/busybox.net/images/gfx_by_gimp.png b/docs/busybox.net/images/gfx_by_gimp.png Binary files differnew file mode 100644 index 0000000..d583140 --- /dev/null +++ b/docs/busybox.net/images/gfx_by_gimp.png diff --git a/docs/busybox.net/images/ltbutton2.png b/docs/busybox.net/images/ltbutton2.png Binary files differnew file mode 100644 index 0000000..9bad949 --- /dev/null +++ b/docs/busybox.net/images/ltbutton2.png diff --git a/docs/busybox.net/images/osuosl.png b/docs/busybox.net/images/osuosl.png Binary files differnew file mode 100644 index 0000000..b00b500 --- /dev/null +++ b/docs/busybox.net/images/osuosl.png diff --git a/docs/busybox.net/images/sdsmall.png b/docs/busybox.net/images/sdsmall.png Binary files differnew file mode 100644 index 0000000..b102450 --- /dev/null +++ b/docs/busybox.net/images/sdsmall.png diff --git a/docs/busybox.net/images/text.png b/docs/busybox.net/images/text.png Binary files differnew file mode 100644 index 0000000..6034f89 --- /dev/null +++ b/docs/busybox.net/images/text.png diff --git a/docs/busybox.net/images/valid-html401.png b/docs/busybox.net/images/valid-html401.png Binary files differnew file mode 100644 index 0000000..ec9bc0c --- /dev/null +++ b/docs/busybox.net/images/valid-html401.png diff --git a/docs/busybox.net/images/vh40.gif b/docs/busybox.net/images/vh40.gif Binary files differnew file mode 100644 index 0000000..c5e9402 --- /dev/null +++ b/docs/busybox.net/images/vh40.gif diff --git a/docs/busybox.net/images/written.in.vi.png b/docs/busybox.net/images/written.in.vi.png Binary files differnew file mode 100644 index 0000000..84f59bc --- /dev/null +++ b/docs/busybox.net/images/written.in.vi.png diff --git a/docs/busybox.net/index.html b/docs/busybox.net/index.html new file mode 100644 index 0000000..1bab6b0 --- /dev/null +++ b/docs/busybox.net/index.html @@ -0,0 +1 @@ +<!--#include file="news.html" --> diff --git a/docs/busybox.net/license.html b/docs/busybox.net/license.html new file mode 100644 index 0000000..76358bc --- /dev/null +++ b/docs/busybox.net/license.html @@ -0,0 +1,97 @@ +<!--#include file="header.html" --> + +<p> +<h3>BusyBox is licensed under the GNU General Public License, version 2</h3> + +<p>BusyBox is licensed under <a href="http://www.gnu.org/licenses/gpl.html#SEC1">the +GNU General Public License</a> version 2, which is often abbreviated as GPLv2. +(This is the same license the Linux kernel is under, so you may be somewhat +familiar with it by now.)</p> + +<p>A complete copy of the license text is included in the file LICENSE in +the BusyBox source code.</p> + +<p><a href="/products.html">Anyone thinking of shipping BusyBox as part of a +product</a> should be familiar with the licensing terms under which they are +allowed to use and distribute BusyBox. Read the full test of the GPL (either +through the above link, or in the file LICENSE in the busybox tarball), and +also read the <a href="http://www.gnu.org/licenses/gpl-faq.html">Frequently +Asked Questions about the GPL</a>.</p> + +<p>Basically, if you distribute GPL software the license requires that you also +distribute the source code to that GPL-licensed software. So if you distribute +BusyBox without making the source code to the version you distribute available, +you violate the license terms, and thus infringe on the copyrights of BusyBox. +(This requirement applies whether or not you modified BusyBox; either way the +license terms still apply to you.) Read the license text for the details.</p> + +<h3>A note on GPL versions</h3> + +<p>Version 2 of the GPL is the only version of the GPL which current versions +of BusyBox may be distributed under. New code added to the tree is licensed +GPL version 2, and the project's license is GPL version 2.</p> + +<p>Older versions of BusyBox (versions 1.2.2 and earlier, up through about svn +16112) included variants of the recommended "GPL version 2 or (at your option) +later versions" boilerplate permission grant. Ancient versions of BusyBox +(before svn 49) did not specify any version at all, and section 9 of GPLv2 +(the most recent version at the time) says those old versions may be +redistributed under any version of GPL (including the obsolete V1). This was +conceptually similar to a dual license, except that the different licenses were +different versions of the GPL.</p> + +<p>However, BusyBox has apparently always contained chunks of code that were +licensed under GPL version 2 only. Examples include applets written by Linus +Torvalds (util-linux/mkfs_minix.c and util_linux/mkswap.c) which stated they +"may be redistributed as per the Linux copyright" (which Linus clarified in the +2.4.0-pre8 release announcement in 2000 was GPLv2 only), and Linux kernel code +copied into libbb/loop.c (after Linus's announcement). There are probably +more, because all we used to check was that the code was GPL, not which +version. (Before the GPLv3 draft proceedings in 2006, it was a purely +theoretical issue that didn't come up much.)</p> + +<p>To summarize: every version of BusyBox may be distributed under the terms of +GPL version 2. New versions (after 1.2.2) may <b>only</b> be distributed under +GPLv2, not under other versions of the GPL. Older versions of BusyBox might +(or might not) be distributable under other versions of the GPL. If you +want to use a GPL version other than 2, you should start with one of the old +versions such as release 1.2.2 or SVN 16112, and do your own homework to +identify and remove any code that can't be licensed under the GPL version you +want to use. New development is all GPLv2.</p> + +<h3>License enforcement</h3> + +<p>BusyBox's copyrights are enforced by the <a +href="http://www.softwarefreedom.org">Software Freedom Law Center</a> +(you can contact them at gpl@busybox.net), which +"accepts primary responsibility for enforcement of US copyrights on the +software... and coordinates international copyright enforcement efforts for +such works as necessary." If you distribute BusyBox in a way that doesn't +comply with the terms of the license BusyBox is distributed under, expect to +hear from these guys. Their entire reason for existing is to do pro-bono +legal work for free/open source software projects. (We used to list people who +violate the BusyBox license in <a href="/shame.html">The Hall of Shame</a>, +but these days we find it much more effective to hand them over to the +lawyers.)</p> + +<p>Our enforcement efforts are aimed at bringing people into compliance with +the BusyBox license. Open source software is under a different license from +proprietary software, but if you violate that license you're still a software +pirate and the law gives the vendor (us) some big sticks to play with. We +don't want monetary awards, injunctions, or to generate bad PR for a company, +unless that's the only way to get somebody that repeatedly ignores us to comply +with the license on our code.</p> + +<h3>A Good Example</h3> + +<p>These days, <a href="http://www.linksys.com/">Linksys</a> is +doing a good job at complying with the GPL, they get to be an +example of how to do things right. Please take a moment and +check out what they do with +<a href="http://www.linksys.com/servlet/Satellite?c=L_Content_C1&childpagename=US%2FLayout&cid=1115416836002&pagename=Linksys%2FCommon%2FVisitorWrapper"> +distributing the firmware for their WRT54G Router.</a> +Following their example would be a fine way to ensure that you +have also fulfilled your licensing obligations.</p> + +<!--#include file="footer.html" --> + diff --git a/docs/busybox.net/links.html b/docs/busybox.net/links.html new file mode 100644 index 0000000..9cdbd7c --- /dev/null +++ b/docs/busybox.net/links.html @@ -0,0 +1,19 @@ +<!--#include file="header.html" --> + +<h3>Related Sites</h3> + +<br><a href="http://uclibc.org/">uClibc.org</a> +<br><a href="http://cxx.uclibc.org/">uClibc++</a> +<br><a href="http://udhcp.busybox.net/">udhcp</a> +<br><a href="http://buildroot.uclibc.org/">buildroot</a> +<br><a href="http://www.scratchbox.org/">Scratchbox</a> +<br><a href="http://openembedded.org/">OpenEmbedded</a> +<br><a href="http://www.ucdot.org/">uCdot</a> +<br><a href="http://www.linuxdevices.com">LinuxDevices</a> +<br><a href="http://slashdot.org/">Slashdot</a> +<br><a href="http://freshmeat.net/">Freshmeat</a> +<br><a href="http://linuxtoday.com/">Linux Today</a> +<br><a href="http://lwn.net/">Linux Weekly News</a> +<br><a href="http://www.tldp.org/HOWTO">Linux HOWTOs</a> + +<!--#include file="footer.html" --> diff --git a/docs/busybox.net/lists.html b/docs/busybox.net/lists.html new file mode 100644 index 0000000..3a28cc0 --- /dev/null +++ b/docs/busybox.net/lists.html @@ -0,0 +1,46 @@ +<!--#include file="header.html" --> + + +<!-- Begin Introduction section --> + +<h3>Mailing List Information</h3> +BusyBox has a <a href="/lists/busybox/">mailing list</a> for discussion and +development. You can subscribe by visiting +<a href="http://busybox.net/mailman/listinfo/busybox">this page</a>. +Only subscribers to the BusyBox mailing list are allowed to post +to this list. + +<p> +There is also a mailing list for <a href="/lists/busybox-cvs/">active developers</a> +wishing to read the complete diff of each and every change to busybox -- not for the +faint of heart. Active developers can subscribe by visiting +<a href="http://busybox.net/mailman/listinfo/busybox-cvs">this page</a>. +The Subversion server is the only one permtted to post to this list. And yes, +this list name uses the word 'cvs' even though we don't use that anymore... + +<p> + + +<h3>Search the List Archives</h3> +Please search the mailing list archives before asking questions on the mailing +list, since there is a good chance someone else has asked the same question +before. Checking the archives is a great way to avoid annoying everyone on the +list with frequently asked questions... +<p> + +<center> +<form method="GET" action="http://www.google.com/custom"> +<input type="hidden" name="domains" value="busybox.net"> +<input type="hidden" name="sitesearch" value="busybox.net"> +<input type="text" name="q" size="31" maxlength="255" value=""> +<br> +<input type="submit" name="sa" value="search the mailing list archives"> +<br> +<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> +<br> +</form> +</center> + + + +<!--#include file="footer.html" --> diff --git a/docs/busybox.net/news.html b/docs/busybox.net/news.html new file mode 100644 index 0000000..3755199 --- /dev/null +++ b/docs/busybox.net/news.html @@ -0,0 +1,185 @@ +<!--#include file="header.html" --> + + +<ul> + <li><b>14 December, 2006 -- BusyBox 1.3.0 (stable)</b> + <p><a href=http://busybox.net/downloads/busybox-1.3.0.tar.bz2>BusyBox 1.3.0</a>.</p> + + <p>This release has CONFIG_DESKTOP option which enables features + needed for busybox usage on desktop machine. For example, find, chmod + and chown get several less frequently used options, od is significantly + bigger but matches GNU coreutils, etc. Intended to eventually make + busybox a viable alternative for "standard" utilities for slightly + adventurous desktop users. + <p>Changes since previous release: + <ul> + <li>find: taking many more of standard options + <li>ps: POSIX-compliant -o implemented + <li>cp: added -s, -l + <li>grep: added -r, fixed -h + <li>watch: make it exec child like standard one does (was totally + incompatible) + <li>tar: fix limitations which were preventing bbox tar usage + on a big directories: long names and linknames, pax headers + (Linux kernel tarballs have that). Fixed a number of obscure bugs. + Raised max file limit (now 64Gb). Security fixes (/../ attacks). + <li>httpd: added -i (inetd), -f (foreground), support for + directory indexer CGI (example is included), bugfixes. + <li>telnetd: fixed/improved IPv6 support, inetd+standalone support, + other fixes. Useful IPv6 stuff factored out into libbb. + <li>runit/*: new applets adapted from http://smarden.sunsite.dk/runit/ + (these are my personal favorite small-and-beautiful toys) + <li>minor bugfixes to: login, dd, mount, umount, chmod, chown, ln, udhcp, + fdisk, ifconfig, sort, tee, mkswap, wget, insmod. + </ul> + <p>Note that GnuPG key used to sign this release is different. + 1.2.2.1 is also signed post-factum now. Sorry for the mess. + </p> + </li> + + <li><b>29 October, 2006 -- BusyBox 1.2.2.1 (fix)</b> + <p><a href=http://busybox.net/downloads/busybox-1.2.2.1.tar.bz2>BusyBox 1.2.2.1</a>.</p> + + <p>Added compile-time warning that static linking against glibc + produces buggy executables. + </li> + + <li><b>24 October, 2006 -- BusyBox 1.2.2 (stable)</b> + <p>It's a bit overdue, but + <a href=http://busybox.net/downloads/busybox-1.2.2.tar.bz2>here is + BusyBox 1.2.2</a>.</p> + + <p>This release has dozens of fixes backported from the ongoing development + branch. There are a couple of bugfixes to sed, two fixes to documentation + generation (BusyBox.html shouldn't have USE() macros in it anymore), fix + umount to report the right errno on failure and to umount block devices by + name with newer kernels, fix mount to handle symlinks properly, make mdev + delete device nodes when called for hotplug remove, fix a segfault + in traceroute, a minor portability fix to md5sum option parsing, a build + fix for httpd with old gccs, an options parsing tweak to hdparm, make test + fail gracefully when getgroups() returns -1, fix a race condition in + modprobe when two instances run at once (hotplug does this), make "tar xf + foo.tar dir/dir" extract all subdirectories, make our getty initialize the + terminal more like mingetty, an selinux build fix, an endianness fix in + ping6, fix for zcip defending addresses, clean up some global variables in + gzip to save memory, fix sulogin -tNNN, a help text tweak, several warning + fixes and build fixes, fixup dnsd a bit, and a partridge in a pear tree.</p> + + <p>As <a href=http://lwn.net/Articles/202106/>Linux Weekly News noted</a>, + this is my (Rob's) last release of BusyBox. The new maintainer is Denis + Vlasenko, I'm off to do <a href=http://landley.net/code>other things</a>. + </p> + </li> + + <li><b>29 September, 2006 -- New license email address.</b> + <p>The email address gpl@busybox.net is now the recommended way to contact + the Software Freedom Law Center to report BusyBox license violations.</p> + + <li><b>31 July 2006 -- BusyBox 1.2.1 (stable)</b> + <p>Since nobody seems to have objected too loudly over the weekend, I + might as well point you all at + <a href="http://busybox.net/downloads/busybox-1.2.1.tar.bz2">Busybox + 1.2.1</a>, a bugfix-only release with no new features.</p> + + <p>It has three shell fixes (two to lash: going "var=value" without + saying "export" should now work, plus a missing null pointer check, and + one to ash when redirecting output to a file that fills up.) Fix three + embarassing thinkos in the new dmesg command. Two build tweaks + (dependencies for the compressed usage messages and running make in the + libbb subdirectory). One fix to tar so it can extract git-generated + tarballs (rather than barfing on the pax extensions). And a partridge + in a pear... Ahem.</p> + + <p>But wait, there's more! A passwd changing fix so an empty + gecos field doesn't trigger a false objection that the new passwd contains + the gecos field. Make all our setuid() and setgid() calls check the return + value in case somebody's using per-process resource limits that prevent + a user from having too many processes (and thus prevent a process from + switching away from root, in which case the process will now _die_ rather + than continue with root privileges). A fix to adduser to make sure that + /etc/group gets updated. And a fix to modprobe to look for modules.conf + in the right place on 2.6 kernels.</p> + + <li><b>30 June 2006 -- BusyBox 1.2.0</b> + <p>The -devel branch has been stabilized and the result is + <a href="http://busybox.net/downloads/busybox-1.2.0.tar.bz2">Busybox + 1.2.0</a>. Lots of stuff changed, I need to work up a decent changelog + over the weekend.</p> + + <p>I'm still experimenting with how long is best for the development + cycle, and since we've got some largeish projects queued up I'm going to + try a longer one. Expect 1.3.0 in December. (Expect 1.2.1 any time + we fix enough bugs. :)</p> + + <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> + + <li><b>17 May 2006 -- BusyBox 1.1.3 (stable)</b> + <p><a href="http://busybox.net/downloads/busybox-1.1.3.tar.bz2">BusyBox + 1.1.3</a> is another bugfix release. It makes passwd use salt, fixes a + memory freeing bug in ls, fixes "build all sources at once" mode, makes + mount -a not abort on the first failure, fixes msh so ctrl-c doesn't kill + background processes, makes patch work with patch hunks that don't have a + timestamp, make less's text search a lot more robust (the old one could + segfault), and fixes readlink -f when built against uClibc.</p> + + <p>Expect 1.2.0 sometime next month, which won't be a bugfix release.</p> + + <li><b>10 April 2006 -- BusyBox 1.1.2 (stable)</b> + <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 + backported from the development branch: Some build fixes, several fixes + for mount and nfsmount, a fix for insmod on big endian systems, a fix for + find -xdev, and a fix for comm. Check the file "changelog" in the tarball + for more info.</p> + + <p>The next new development release (1.2.0) is slated for June. A 1.1.3 + will be released before then if more bug fixes crop up. (The new plan is + to have a 1.x.0 new development release every 3 months, with 1.x.y stable + bugfix only releases based on that as appropriate.)</p> + + <li><b>27 March 2006 -- Software Freedom Law Center representing BusyBox and uClibc</b> + <p>One issue Erik Andersen wanted to resolve when handing off BusyBox + maintainership to Rob Landley was license enforcement. BusyBox and + uClibc's existing license enforcement efforts (pro-bono representation + by Erik's father's law firm, and the + <a href="http://www.busybox.net/shame.html">Hall of Shame</a>), haven't + scaled to match the popularity of the projects. So we put our heads + together and did the obvious thing: ask Pamela Jones of + <a href="http://www.groklaw.net">Groklaw</a> for suggestions. She + referred us to the fine folks at softwarefreedom.org.</p> + + <p>As a result, we're pleased to announce that the + <a href="http://www.softwarefreedom.org">Software Freedom Law Center</a> + has agreed to represent BusyBox and uClibc. We join a number of other + free and open source software projects (such as + <a href="http://lwn.net/Articles/141806/">X.org</a>, + <a href="http://lwn.net/Articles/135413/">Wine</a>, and + <a href="http://plone.org/foundation/newsitems/software-freedom-law-center-support/">Plone</a> + in being represented by a fairly cool bunch of lawyers, which is not a + phrase you get to use every day.</p> + + <li><b>22 March 2006 -- BusyBox 1.1.1</b> + <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> + <p>Update: Rather than put out an endless stream of 1.1.1.x releases, + the various small fixes have been collected together into a + <a href="http://busybox.net/downloads/busybox-1.1.1.fixes.patch">patch</a>, + and new fixes will be appended to that as needed. Expect 1.1.2 around + June.</p> + </li> + <li><b>11 January 2006 -- 1.1.0 is out</b> + <p>The new stable release is + <a href="http://www.busybox.net/downloads/busybox-1.1.0.tar.bz2">BusyBox + 1.1.0</a>. It has a number of improvements, including several new applets. + (It also has <a href="http://www.busybox.net/lists/busybox/2006-January/017733.html">a few rough spots</a>, + but we're trying out a "release early, release often" strategy to see how + that works. Expect 1.1.1 sometime in March.)</p> + + <li><b>Old News</b><p> + <a href="/oldnews.html">Click here to read older news</a> + </p> + </li> + + +</ul> + +<!--#include file="footer.html" --> + diff --git a/docs/busybox.net/oldnews.html b/docs/busybox.net/oldnews.html new file mode 100644 index 0000000..1017b69 --- /dev/null +++ b/docs/busybox.net/oldnews.html @@ -0,0 +1,1140 @@ +<!--#include file="header.html" --> + + +<ul> + <li><b>31 October 2005 -- 1.1.0-pre1</b> + <p>The development branch of busybox is stable enough for wider testing, so + you can now + <a href="http://www.busybox.net/downloads/busybox-1.1.0-pre1.tar.bz2">download</a>, + the first prerelease of 1.1.0. This prerelease includes a lot of + <a href="http://www.busybox.net/downloads/BusyBox.html">new + functionality</a>: new applets, new features, and extensive rewrites of + several existing applets. This prerelease should be noticeably more + <a href="http://www.opengroup.org/onlinepubs/009695399/">standards + compliant</a> than earlier versions of busybox, although we're + still working out the <a href="http://bugs.busybox.net">bugs</a>.</p> + + <li><b>16 August 2005 -- 1.01 is out</b> + + <p>A new stable release (<a href="http://www.busybox.net/downloads/busybox-1.01.tar.bz2">BusyBox + 1.01</a>) is now available for download, containing over a hundred + <a href="http://www.busybox.net/lists/busybox/2005-August/015424.html">small + fixes</a> that have cropped up since the 1.00 release.</p> + + <li><b>13 January 2005 -- Bug and Patch Tracking</b><p> + + Bug reports sometimes get lost when posted to the mailing list. The + developers of BusyBox are busy people, and have only so much they can keep + in their brains at a time. In my case, I'm lucky if I can remember my own + name, much less a bug report posted last week... To prevent your bug report + from getting lost, if you find a bug in BusyBox, please use the + <a href="http://bugs.busybox.net/">shiny new Bug and Patch Tracking System</a> + to post all the gory details. + + <p> + + The same applies to patches... Regardless of whether your patch + is a bug fix or adds spiffy new features, please post your patch + to the Bug and Patch Tracking System to make certain it is + properly considered. + + + <p> + <li><b>13 October 2004 -- BusyBox 1.00 released</b><p> + + When you take a careful look at nearly every embedded Linux device or + software distribution shipping today, you will find a copy of BusyBox. + With countless routers, set top boxes, wireless access points, PDAs, and + who knows what else, the future for Linux and BusyBox on embedded devices + is looking very bright. + + <p> + + It is therefore with great satisfaction that I declare each and every + device already shipping with BusyBox is now officially out of date. + The highly anticipated release of BusyBox 1.00 has arrived! + + <p> + + Over three years in development, BusyBox 1.00 represents a tremendous + improvement over the old 0.60.x stable series. Now featuring a Linux + KernelConf based configuration system (as used by the Linux kernel), + Linux 2.6 kernel support, many many new applets, and the development + work and testing of thousands of people from around the world. + + <p> + + If you are already using BusyBox, you are strongly encouraged to upgrade to + BusyBox 1.00. If you are considering developing an embedded Linux device + or software distribution, you may wish to investigate if using BusyBox is + right for your application. If you need help getting started using + BusyBox, if you wish to donate to help cover expenses, or if you find a bug + and need help reporting it, you are invited to visit the <a + href="FAQ.html">BusyBox FAQ</a>. + + <p> + + As usual you can <a href="downloads">download busybox here</a>. + + <p>Have Fun! + + <p> + <li><b>Old News</b><p> + <a href="/oldnews.html">Click here to read older news</a> + + + <li><b>16 August 2004 -- BusyBox 1.0.0-rc3 released</b><p> + + Here goes release candidate 3... + <p> + The <a href="downloads/Changelog">changelog</a> has all the details. + And as usual you can <a href="downloads">download busybox here</a>. + + <p>Have Fun! + + <p> + <li><b>26 July 2004 -- BusyBox 1.0.0-rc2 released</b><p> + + Here goes release candidate 2... + <p> + The <a href="downloads/Changelog">changelog</a> has all the details. + And as usual you can <a href="downloads">download busybox here</a>. + + <p>Have Fun! + + <p> + <li><b>20 July 2004 -- BusyBox 1.0.0-rc1 released</b><p> + + Here goes release candidate 1... This fixes all (most?) of the problems + that have turned up since -pre10. In particular, loading and unloading of + kernel modules with 2.6.x kernels should be working much better. + <p> + + I <b>really</b> want to get BusyBox 1.0.0 released soon and I see no real + reason why the 1.0.0 release shouldn't happen with things pretty much as + is. BusyBox is in good shape at the moment, and it works nicely for + everything that I'm doing with it. And from the reports I've been getting, + it works nicely for what most everyone else is doing with it as well. + There will eventually be a 1.0.1 anyway, so we might as well get on with + it. No, BusyBox is not perfect. No piece of software ever is. And while + there is still plenty that can be done to improve things, most of that work + is waiting till we can get a solid 1.0.0 release out the door.... + <p> + + Please do not bother to send in patches adding cool new features at this + time. Only bug-fix patches will be accepted. If you have submitted a + bug-fixing patch to the busybox mailing list and no one has emailed you + explaining why your patch was rejected, it is safe to say that your patch + has been lost or forgotten. That happens sometimes. Please re-submit your + bug-fixing patch to the BusyBox mailing list, and be sure to put "[PATCH]" + at the beginning of the email subject line! + + <p> + The <a href="downloads/Changelog">changelog</a> has all the details. + And as usual you can <a href="downloads">download busybox here</a>. + + <p>Have Fun! + + <p> + On a less happy note, My 92 year old grandmother (my dad's mom) passed away + yesterday (June 19th). The funeral will be Thursday in a little town about + 2 hours south of my home. I've checked and there is absolutely no way I + could be back in time for the funeral if I attend <a + href="http://www.linuxsymposium.org/2004/">OLS</a> and give my presentation + as scheduled. + <p> + As such, it is with great reluctance and sadness that I have come + to the conclusion I will have to make my appologies and skip OLS + this year. + <p> + + + <p> + <li><b>13 April 2004 -- BusyBox 1.0.0-pre10 released</b><p> + + Ok, I lied. It turns out that -pre9 will not be the final BusyBox + pre-release. With any luck however -pre10 will be, since I <b>really</b> + want to get BusyBox 1.0.0 released very soon. As usual, please do not + bother to send in patches adding cool new features at this time. Only + bug-fix patches will be accepted. It would also be <b>very</b> helpful if + people could continue to review the BusyBox documentation and submit + improvements. + + <p> + The <a href="downloads/Changelog">changelog</a> has all the details. + And as usual you can <a href="downloads">download busybox here</a>. + + <p>Have Fun! + <p> + + + <p> + <li><b>6 April 2004 -- BusyBox 1.0.0-pre9 released</b><p> + + Here goes the final BusyBox pre-release... This is your last chance for + bug fixes. With luck this will be released as BusyBox 1.0.0 later this + week. Please do not bother to send in patches adding cool new features at + this time. Only bug-fix patches will be accepted. It would also be + <b>very</b> helpful if people could help review the BusyBox documentation + and submit improvements. I've spent a lot of time updating the + documentation to make it better match reality, but I could really use some + assistance in checking that the features supported by the various applets + match the features listed in the documentation. + + <p> + I had hoped to get this released a month ago, but + <a href="http://codepoet.org/gallery/baby_peter/img_1796"> + another release on 1 March 2004</a> has kept me busy... + + <p> + The <a href="downloads/Changelog">changelog</a> has all the details. + And as usual you can <a href="downloads">download busybox here</a>. + + <p>Have Fun! + <p> + + + <p> + <li><b>23 February 2004 -- BusyBox 1.0.0-pre8 released</b><p> + + Here goes yet another BusyBox pre-release... Please do not bother to send + in patches supplying new features at this time. Only bug-fix patches will + be accepted. If you have a cool new feature you would like to see + supported, or if you have an amazing new applet you would like to submit, + please wait and submit such things later. We really want to get a release + out we can all be proud of. We are still aiming to finish off the -pre + series in February and move on to the final 1.0.0 release... So if you + spot any bugs, now would be an excellent time to send in a fix to the + busybox mailing list. It would also be <b>very</b> helpful if people could + help review the BusyBox documentation and submit improvements. It would be + especially helpful if people could check that the features supported by the + various applets match the features listed in the documentation. + + <p> + + The <a href="downloads/Changelog">changelog</a> has all the details. + And as usual you can <a href="downloads">download busybox here</a>. + + <p>Have Fun! + <p> + + + <li><b>4 February 2004 -- BusyBox 1.0.0-pre7 released</b><p> + + There was a bug in -pre6 that broke argument parsing for a + number of applets, since a variable was not being zeroed out + properly. This release is primarily intended to fix that one + problem. In addition, this release fixes several other + problems, including a rewrite by mjn3 of the code for parsing + the busybox.conf file used for suid handling, some shell updates + from vodz, and a scattering of other small fixes. We are still + aiming to finish off the -pre series in February and move on to + the final 1.0.0 release... If you see any problems, of have + suggestions to make, as always, please feel free to email the + busybox mailing list. + + <p> + + The <a href="downloads/Changelog">changelog</a> has all + the details. And as usual you can + <a href="downloads">download busybox here</a>. + + <p>Have Fun! + <p> + + + <p> + <li><b>30 January 2004 -- BusyBox 1.0.0-pre6 released</b><p> + + Here goes the next pre-release for the new BusyBox stable + series. This release adds a number of size optimizations, + updates udhcp, fixes up 2.6 modutils support, updates ash + and the shell command line editing, and the usual pile of + bug fixes both large and small. Things appear to be + settling down now, so with a bit of luck and some testing + perhaps we can finish off the -pre series in February and + move on to the final 1.0.0 release... If you see any + problems, of have suggestions to make, as always, please + feel free to email the busybox mailing list. + + <p> + + People who rely on the <a href= "downloads/snapshots/">daily BusyBox snapshots</a> + should be aware that snapshots of the old busybox 0.60.x + series are no longer available. Daily snapshots are now + only available for the BusyBox 1.0.0 series and now use + the naming scheme "busybox-<date>.tar.bz2". Please + adjust any build scripts using the old naming scheme accordingly. + + <p> + + The <a href="downloads/Changelog">changelog</a> has all + the details. And as usual you can + <a href="downloads">download busybox here</a>. + + <p>Have Fun! + <p> + + + <p> + <li><b>23 December 2003 -- BusyBox 1.0.0-pre5 released</b><p> + + Here goes the next pre-release for the new BusyBox stable + series. The most obvious thing in this release is a fix for + a terribly stupid bug in mount that prevented it from working + properly unless you specified the filesystem type. This + release also fixes a few compile problems, updates udhcp, + fixes a silly bug in fdisk, fixes ifup/ifdown to behave like + the Debian version, updates devfsd, updates the 2.6.x + modutils support, add a new 'rx' applet, removes the obsolete + 'loadacm' applet, fixes a few tar bugs, fixes a sed bug, and + a few other odd fixes. + + <p> + + If you see any problems, of have suggestions to make, as + always, please feel free to send an email to the busybox + mailing list. + + <p> + + The <a href="downloads/Changelog">changelog</a> has all + the details. And as usual you can + <a href="downloads">download busybox here</a>. + + <p>Have Fun! + <p> + + + + <li><b>10 December 2003 -- BusyBox 1.0.0-pre4 released</b><p> + + Here goes the fourth pre-release for the new BusyBox stable + series. This release includes major rework to sed, lots of + rework on tar, a new tiny implementation of bunzip2, a new + devfsd applet, support for 2.6.x kernel modules, updates to + the ash shell, sha1sum and md5sum have been merged into a + common applet, the dpkg applets has been cleaned up, and tons + of random bugs have been fixed. Thanks everyone for all the + testing, bug reports, and patches! Once again, a big + thank-you goes to Glenn McGrath (bug1) for stepping in and + helping get patches merged! + + <p> + + And of course, if you are reading this, you might have noticed + the busybox website has been completely reworked. Hopefully + things are now somewhat easier to navigate... If you see any + problems, of have suggestions to make, as always, please feel + free to send an email to the busybox mailing list. + + <p> + + The <a href="downloads/Changelog">changelog</a> has all + the details. And as usual you can + <a href="downloads">download busybox here</a>. + + <p>Have Fun! + + + + <p> + <li><b>12 Sept 2003 -- BusyBox 1.0.0-pre3 released</b><p> + + Here goes the third pre-release for the new BusyBox stable + series. The last prerelease has held up quite well under + testing, but a number of problems have turned up as the number + of people using it has increased. Thanks everyone for all + the testing, bug reports, and patches! + + <p> + + If you have submitted a patch or a bug report to the busybox + mailing list and no one has emailed you explaining why your + patch was rejected, it is safe to say that your patch has + somehow gotten lost or forgotten. That happens sometimes. + Please re-submit your patch or bug report to the BusyBox + mailing list! + + <p> + + The point of the "-preX" versions is to get a larger group of + people and vendors testing, so any problems that turn up can be + fixed prior to the final 1.0.0 release. The main feature + (besides additional testing) that is still still on the TODO + list before the final BusyBox 1.0.0 release is sorting out the + modutils issues. For the new 2.6.x kernels, we already have + patches adding insmod and rmmod support and those need to be + integrated. For 2.4.x kernels, for which busybox only supports + a limited number of architectures, we may want to invest a bit + more work before we cut 1.0.0. Or we may just leave 2.4.x + module loading alone. + + <p> + + I had hoped this release would be out a month ago. And of + course, it wasn't since Erik became busy getting a release of + <a href="http://www.uclibc.org/">uClibc</a> + out the door. Many thanks to Glenn McGrath (bug1) for + stepping in and helping get a bunch of patches merged! I am + not even going to state a date for releasing BusyBox 1.0.0 + -pre4 (or the final 1.0.0). We're aiming for late September... + But if this release proves as to be exceptionally stable (or + exceptionally unstable!), the next release may be very soon + indeed. + + <p> + + The <a href="downloads/Changelog">changelog</a> has all + the details. And as usual you can + <a href="downloads">download busybox here</a>. + + <p>Have Fun! + + + <p> + <li><b>30 July 2003 -- BusyBox 1.0.0-pre2 released</b><p> + + Here goes another pre release for the new BusyBox stable + series. The last prerelease (pre1) was given quite a lot of + testing (thanks everyone!) which has helped turn up a number of + bugs, and these problems have now been fixed. + + <p> + + Highlights of -pre2 include updating the 'ash' shell to sync up + with the Debian 'dash' shell, a new 'hdparm' applet was added, + init again supports pivot_root, The 'reboot' 'halt' and + 'poweroff' applets can now be used without using busybox init. + an ifconfig buffer overflow was fixed, losetup now allows + read-write loop devices, uClinux daemon support was added, the + 'watchdog', 'fdisk', and 'kill' applets were rewritten, there were + tons of doc updates, and there were many other bugs fixed. + <p> + + If you have submitted a patch and it is not included in this + release and Erik has not emailed you explaining why your patch + was rejected, it is safe to say that he has lost your patch. + That happens sometimes. Please re-submit your patch to the + BusyBox mailing list. + <p> + + The point of the "-preX" versions is to get a larger group of + people and vendors testing, so any problems that turn up can be + fixed prior to the final 1.0.0 release. The main feature that + is still still on the TODO list before the final BusyBox 1.0.0 + release is adding module support for the new 2.6.x kernels. If + necessary, a -pre3 BusyBox release will happen on August 6th. + Hopefully (i.e. unless some horrible catastrophic problem + turns up) the final BusyBox 1.0.0 release will be ready by + then... + <p> + + The <a href="downloads/Changelog">changelog</a> has all + the details. As usual you can <a href="downloads">download busybox here</a>. + + <p>Have Fun! + <p> + + <p> + <li><b>15 July 2003 -- BusyBox 1.0.0-pre1 released</b><p> + + The busybox development series has been under construction for + nearly two years now. Which is just entirely too long... So + it is with great pleasure that I announce the imminent release + of a new stable series. Due to the huge number of changes + since the last stable release (and the usual mindless version + number inflation) I am branding this new stable series verison + 1.0.x... + <p> + + The point of "-preX" versions is to get a larger group of + people and vendors testing, so any problems that turn up can be + fixed prior to the magic 1.0.0 release (which should happen + later this month)... I plan to release BusyBox 1.0.0-pre2 next + Monday (July 21st), and, if necessary, -pre3 on July 28th. + Hopefully (i.e. unless some horrible catastrophic problem turns + up) the final BusyBox 1.0.0 release should be ready by the end + of July. + <p> + + If you have submitted patches, and they are not in this release + and I have not emailed you explaining why your patch was + rejected, it is safe to say that I have lost your patch. That + happens sometimes. Please do <B>NOT</b> send all your patches, + support questions, etc, directly to Erik. I get hundreds of + emails every day (which is why I end up losing patches + sometimes in the flood)... The busybox mailing list is the + right place to send your patches, support questions, etc. + <p> + + I would like to especially thank Vladimir Oleynik (vodz), Glenn + McGrath (bug1), Robert Griebl (sandman), and Manuel Novoa III + (mjn3) for their significant efforts and contributions that + have made this release possible. + <p> + + As usual you can <a href="downloads">download busybox here</a>. + You don't really need to bother with the + <a href="downloads/Changelog">changelog</a>, as the changes + vs the stable version are way too extensive to easily enumerate. + But you can take a look if you really want too. + + <p>Have Fun! + <p> + + + + <p> + <li><b>26 October 2002 -- BusyBox 0.60.5 released</b><p> + + I am very pleased to announce that the BusyBox 0.60.5 (stable) + is now available for download. This is a bugfix release for + the stable series to address all the problems that have turned + up since the last release. Unfortunately, the previous release + had a few nasty bugs (i.e. init could deadlock, gunzip -c tried + to delete source files, cp -a wouldn't copy symlinks, and init + was not always providing controlling ttys when it should have). + I know I said that the previous release would be the end of the + 0.60.x series. Well, it turns out I'm a liar. But this time I + mean it (just like last time ;-). This will be the last + release for the 0.60.x series -- all further development work + will be done for the development busybox tree. Expect the development + version to have its first real release very very soon now... + + <p> + The <a href="downloads/Changelog.full">changelog</a> has all + the details. As usual you can <a href="downloads">download busybox here</a>. + <p>Have Fun! + <p> + + <p> + <li><b>18 September 2002 -- BusyBox 0.60.4 released</b><p> + + I am very pleased to announce that the BusyBox 0.60.4 + (stable) is now available for download. This is primarily + a bugfix release for the stable series to address all + the problems that have turned up since the last + release. This will be the last release for the 0.60.x series. + I mean it this time -- all further development work will be done + on the development busybox tree, which is quite solid now and + should soon be getting its first real release. + + <p> + The <a href="downloads/Changelog.full">changelog</a> has all + the details. As usual you can <a href="downloads">download busybox here</a>. + <p>Have Fun! + <p> + + + <p> + <li><b>27 April 2002 -- BusyBox 0.60.3 released</b><p> + + I am very pleased to announce that the BusyBox 0.60.3 (stable) is + now available for download. This is primarily a bugfix release + for the stable series. A number of problems have turned up since + the last release, and this should address most of those problems. + This should be the last release for the 0.60.x series. The + development busybox tree has been progressing nicely, and will + hopefully be ready to become the next stable release. + + <p> + The <a href="downloads/Changelog">changelog</a> has all + the details. As usual you can <a href="downloads">download busybox here</a>. + <p>Have Fun! + <p> + + + <p> + <li><b>6 March 2002 -- busybox.net now has mirrors!</b><p> + + Busybox.net is now much more available, thanks to + the fine folks at <a href= "http://i-netinnovations.com/">http://i-netinnovations.com/</a> + who are providing hosting for busybox.net and + uclibc.org. In addition, we now have two mirrors: + <a href= "http://busybox.linuxmagic.com/">http://busybox.linuxmagic.com/</a> + in Canada and + <a href= "http://busybox.csservers.de/">http://busybox.csservers.de/</a> + in Germany. I hope this makes things much more + accessible for everyone! + + +<li> +<b>3 January 2002 -- Welcome to busybox.net!</b> + +<p>Thanks to the generosity of a number of busybox +users, we have been able to purchase busybox.net +(which is where you are probably reading this). +Right now, busybox.net and uclibc.org are both +living on my home system (at the end of my DSL +line). I apologize for the abrupt move off of +busybox.lineo.com. Unfortunately, I no longer have +the access needed to keep that system updated (for +example, you might notice the daily snapshots there +stopped some time ago).</p> + +<p>Busybox.net is currently hosted on my home +server, at the end of a DSL line. Unfortunately, +the load on them is quite heavy. To address this, +I'm trying to make arrangements to get busybox.net +co-located directly at an ISP. To assist in the +co-location effort, <a href= +"http://www.codepoet.org/~markw">Mark Whitley</a> +(author of busybox sed, cut, and grep) has donated +his <a href= +"http://www.netwinder.org/">NetWinder</a> computer +for hosting busybox.net and uclibc.org. Once this +system is co-located, the current speed problems +should be completely eliminated. Hopefully, too, +some of you will volunteer to set up some mirror +sites, to help to distribute the load a bit.</p> + +<p><!-- + <center> + Click here to help support busybox.net! + <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> + <input type="hidden" name="cmd" value="_xclick"> + <input type="hidden" name="business" value="andersen@codepoet.org"> + <input type="hidden" name="item_name" value="Support Busybox"> + <input type="hidden" name="image_url" value="https://codepoet-consulting.com/images/busybox2.jpg"> + <input type="hidden" name="no_shipping" value="1"> + <input type="image" src="images/donate.png" border="0" name="submit" alt="Make donation using PayPal"> + </form> + </center> + --> + Since some people expressed concern over BusyBox +donations, let me assure you that no one is getting +rich here. All BusyBox and uClibc donations will be +spent paying for bandwidth and needed hardware +upgrades. For example, Mark's NetWinder currently +has just 64Meg of memory. As demonstrated when +google spidered the site the other day, 64 Megs in +not enough, so I'm going to be ordering 256Megs of +ram and a larger hard drive for the box today. So +far, donations received have been sufficient to +cover almost all expenses. In the future, we may +have co-location fees to worry about, but for now +we are ok. A <b>HUGE thank-you</b> goes out to +everyone that has contributed!<br> + -Erik</p> +</li> + +<li> +<b>20 November 2001 -- BusyBox 0.60.2 released</b> + +<p>We am very pleased to announce that the BusyBox +0.60.2 (stable) is now released to the world. This +one is primarily a bugfix release for the stable +series, and it should take care of most everyone's +needs till we can get the nice new stuff we have +been working on in CVS ready to release (with the +wonderful new buildsystem). The biggest change in +this release (beyond bugfixes) is the fact that msh +(the minix shell) has been re-worked by Vladimir N. +Oleynik (vodz) and so it no longer crashes when +told to do complex things with backticks.</p> + +<p>This release has been tested on x86, ARM, and +powerpc using glibc 2.2.4, libc5, and uClibc, so it +should work with just about any Linux system you +throw it at. See the <a href= +"downloads/Changelog">changelog</a> for <small>most +of</small> the details. The last release was +<em>very</em> solid for people, and this one should +be even better.</p> + +<p>As usual BusyBox 0.60.2 can be downloaded from +<a href= +"downloads">http://www.busybox.net/downloads</a>.</p> + +<p>Have Fun.<br> + -Erik</p> +</li> + +<li> <b>18 November 2001 -- Help us buy busybox.net!</b> + +<!-- Begin PayPal Logo --> +<center> +Click here to help buy busybox.net! +<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> +<input type="hidden" name="cmd" value="_xclick"> +<input type="hidden" name="business" value="andersen@codepoet.org"> +<input type="hidden" name="item_name" value="Support Busybox"> +<input type="hidden" name="image_url" value="https://busybox.net/images/busybox2.jpg"> +<input type="hidden" name="no_shipping" value="1"> +<input type="image" src="images/donate.png" border="0" name="submit" alt="Make donation using PayPal"> +</form> +</center> +<!-- End PayPal Logo --> + +I've contacted the current owner of busybox.net and he is willing +to sell the domain name -- for $250. He also owns busybox.org but +will not part with it... I will then need to pay the registry fee +for a couple of years and start paying for bandwidth, so this will +initially cost about $300. I would like to host busybox.net on my +home machine (codepoet.org) so I have full control over the system, +but to do that would require that I increase the level of bandwidth +I am paying for. Did you know that so far this month, there +have been over 1.4 Gigabytes of busybox ftp downloads? I don't +even <em>know</em> how much CVS bandwidth it requires. For the +time being, Lineo has continued to graciously provide this +bandwidth, despite the fact that I no longer work for them. If I +start running this all on my home machine, paying for the needed bandwidth +will start costing some money. +<p> + +I was going to pay it all myself, but my wife didn't like that +idea at all (big surprise). It turns out <insert argument +where she wins and I don't> she has better ideas +about what we should spend our money on that don't involve +busybox. She suggested I should ask for contributions on the +mailing list and web page. So... +<p> + +I am hoping that if everyone could contribute a bit, we could pick +up the busybox.net domain name and cover the bandwidth costs. I +know that busybox is being used by a lot of companies as well as +individuals -- hopefully people and companies that are willing to +contribute back a bit. So if everyone could please help out, that +would be wonderful! +<p> + + +<li> <b>23 August 2001 -- BusyBox 0.60.1 released</b> +<br> + + This is a relatively minor bug fixing release that fixes + up the bugs that have shown up in the stable release in + the last few weeks. Fortunately, nothing <em>too</em> + serious has shown up. This release only fixes bugs -- no + new features, no new applets. So without further ado, + here it is. Come and get it. + <p> + The + <a href="downloads/Changelog">changelog</a> has all + the details. As usual BusyBox 0.60.1 can be downloaded from + <a href="downloads">http://busybox.net/downloads</a>. + <p>Have Fun! + <p> + + +<li> <b>2 August 2001 -- BusyBox 0.60.0 released</b> +<br> + I am very pleased to announce the immediate availability of + BusyBox 0.60.0. I have personally tested this release with libc5, glibc, + and <a href="http://uclibc.org/">uClibc</a> on + x86, ARM, and powerpc using linux 2.2 and 2.4, and I know a number + of people using it on everything from ia64 to m68k with great success. + Everything seems to be working very nicely now, so getting a nice + stable bug-free(tm) release out seems to be in order. This releases fixes + a memory leak in syslogd, a number of bugs in the ash and msh shells, and + cleans up a number of things. + + <p> + + Those wanting an easy way to test the 0.60.0 release with uClibc can + use <a href="http://user-mode-linux.sourceforge.net/">User-Mode Linux</a> + to give it a try by downloading and compiling + <a href="ftp://busybox.net/buildroot.tar.gz">buildroot.tar.gz</a>. + You don't have to be root or reboot your machine to run test this way. + Preconfigured User-Mode Linux kernel source is also on busybox.net. + <p> + Another cool thing is the nifty <a href="downloads/tutorial/index.html"> + BusyBox Tutorial</a> contributed by K Computing. This requires + a ShockWave plugin (or standalone viewer), so you may want to grab the + the GPLed shockwave viewer from <a href="http://www.swift-tools.com/Flash/flash-0.4.10.tgz">here</a> + to view the tutorial. + <p> + + Finally, In case you didn't notice anything odd about the + version number of this release, let me point out that this release + is <em>not</em> 0.53, because I bumped the version number up a + bit. This reflects the fact that this release is intended to form + a new stable BusyBox release series. If you need to rely on a + stable version of BusyBox, you should plan on using the stable + 0.60.x series. If bugs show up then I will release 0.60.1, then + 0.60.2, etc... This is also intended to deal with the fact that + the BusyBox build system will be getting a major overhaul for the + next release and I don't want that to break products that people + are shipping. To avoid that, the new build system will be + released as part of a new BusyBox development series that will + have some not-yet-decided-on odd version number. Once things + stabilize and the new build system is working for everyone, then + I will release that as a new stable release series. + + <p> + The + <a href="downloads/Changelog">changelog</a> has all + the details. As usual BusyBox 0.60.0 can be downloaded from + <a href="downloads">http://busybox.net/downloads</a>. + <p>Have Fun! + <p> + + +<li> <b>7 July 2001 -- BusyBox 0.52 released</b> +<br> + + I am very pleased to announce the immediate availability of + BusyBox 0.52 (the "new-and-improved rock-solid release"). This + release is the result of <em>many</em> hours of work and has tons + of bugfixes, optimizations, and cleanups. This release adds + several new applets, including several new shells (such as hush, msh, + and ash). + + <p> + The + <a href="downloads/Changelog">changelog</a> covers + some of the more obvious details, but there are many many things that + are not mentioned, but have been improved in subtle ways. As usual, + BusyBox 0.52 can be downloaded from + <a href="downloads">http://busybox.net/downloads</a>. + <p>Have Fun! + <p> + + +<li> <b>10 April 2001 - Graph of Busybox Growth </b> +<br> +The illustrious Larry Doolittle has made a PostScript chart of the growth +of the Busybox tarball size over time. It is available for downloading / +viewing <a href= "busybox-growth.ps"> right here</a>. + +<p> (Note that while the number of applets in Busybox has increased, you +can still configure Busybox to be as small as you want by selectively +turning off whichever applets you don't need.) +<p> + + +<li> <b>10 April 2001 -- BusyBox 0.51 released</b> +<br> + + BusyBox 0.51 (the "rock-solid release") is now out there. This + release adds only 2 new applets: env and vi. The vi applet, + contributed by Sterling Huxley, is very functional, and is only + 22k. This release fixes 3 critical bugs in the 0.50 release. + There were 2 potential segfaults in lash (the busybox shell) in + the 0.50 release which are now fixed. Another critical bug in + 0.50 which is now fixed: syslogd from 0.50 could potentially + deadlock the init process and thereby break your entire system. + <p> + + There are a number of improvements in this release as well. For + one thing, the wget applet is greatly improved. Dmitry Zakharov + added FTP support, and Laurence Anderson make wget fully RFC + compliant for HTTP 1.1. The mechanism for including utility + functions in previous releases was clumsy and error prone. Now + all utility functions are part of a new libbb library, which makes + maintaining utility functions much simpler. And BusyBox now + compiles on itanium systems (thanks to the Debian itanium porters + for letting me use their system!). + <p> + You can read the + <a href="downloads/Changelog">changelog</a> for + complete details. BusyBox 0.51 can be downloaded from + <a href="downloads">http://busybox.net/downloads</a>. + <p>Have Fun! + <p> + +<li> <b>Busybox Boot-Floppy Image</b> + +<p>Because you asked for it, we have made available a <a href= +"downloads/busybox.floppy.img"> Busybox boot floppy +image</a>. Here's how you use it: + +<ol> + + <li> <a href= "downloads/busybox.floppy.img"> + Download the image</a> + + <li> dd it onto a floppy like so: <tt> dd if=busybox.floppy.img + of=/dev/fd0 ; sync </tt> + + <li> Pop it in a machine and boot up. + +</ol> + +<p> If you want to look at the contents of the initrd image, do this: + +<pre> + mount ./busybox.floppy.img /mnt -o loop -t msdos + cp /mnt/initrd.gz /tmp + umount /mnt + gunzip /tmp/initrd.gz + mount /tmp/initrd /mnt -o loop -t minix +</pre> + + +<li> <b>15 March 2001 -- BusyBox 0.50 released</b> +<br> + + This release adds several new applets including ifconfig, route, pivot_root, stty, + and tftp, and also fixes tons of bugs. Tab completion in the + shell is now working very well, and the shell's environment variable + expansion was fixed. Tons of other things were fixed or made + smaller. For a fairly complete overview, see the + <a href="downloads/Changelog">changelog</a>. + <p> + lash (the busybox shell) is still with us, fixed up a bit so it + now behaves itself quite nicely. It really is quite usable as + long as you don't expect it to provide Bourne shell grammer. + Standard things like pipes, redirects, command line editing, and + environment variable expansion work great. But we have found that + this shell, while very usable, does not provide an extensible + framework for adding in full Bourne shell behavior. So the first order of + business as we begin working on the next BusyBox release will be to merge in the new shell + currently in progress at + <a href="http://doolittle.faludi.com/~larry/parser.html">Larry Doolittle's website</a>. + <p> + + +<li> <b>27 January 2001 -- BusyBox 0.49 released</b> +<br> + + Several new applets, lots of bug fixes, cleanups, and many smaller + things made nicer. Several cleanups and improvements to the shell. + For a list of the most interesting changes + you might want to look at the <a href="downloads/Changelog">changelog</a>. + <p> + Special thanks go out to Matt Kraai and Larry Doolittle for all their + work on this release, and for keeping on top of things while I've been + out of town. + <p> + <em>Special Note</em><br> + + BusyBox 0.49 was supposed to have replaced lash, the BusyBox + shell, with a new shell that understands full Bourne shell/Posix shell grammer. + Well, that simply didn't happen in time for this release. A new + shell that will eventually replace lash is already under + construction. This new shell is being developed by Larry + Doolittle, and could use all of our help. Please see the work in + progress on <a href="http://doolittle.faludi.com/~larry/parser.html">Larry's website</a> + and help out if you can. This shell will be included in the next + release of BusyBox. + <p> + +<li> <b>13 December 2000 -- BusyBox 0.48 released</b> +<br> + + This release fixes lots and lots of bugs. This has had some very + rigorous testing, and looks very, very clean. The usual tar + update of course: tar no longer breaks hardlinks, tar -xzf is + optionally supported, and the LRP folks will be pleased to know + that 'tar -X' and 'tar --exclude' are both now in. Applets are + now looked up using a binary search making lash (the busybox + shell) much faster. For the new debian-installer (for Debian + woody) a .udeb can now be generated. + <p> + The curious can get a list of some of the more interesting changes by reading + the <a href="downloads/Changelog">changelog</a>. + <p> + Many thanks go out to the many many people that have contributed to + this release, especially Matt Kraai, Larry Doolittle, and Kent Robotti. + <p> +<p> <li> <b>26 September 2000 -- BusyBox 0.47 released</b> +<br> + + This release fixes lots of bugs (including an ugly bug in 0.46 + syslogd that could fork-bomb your system). Added several new + apps: rdate, wget, getopt, dos2unix, unix2dos, reset, unrpm, + renice, xargs, and expr. syslogd now supports network logging. + There are the usual tar updates. Most apps now use getopt for + more correct option parsing. + See the <a href="downloads/Changelog">changelog</a> + for complete details. + + +<p> <li> <b>11 July 2000 -- BusyBox 0.46 released</b> +<br> + + This release fixes several bugs (including a ugly bug in tar, + and fixes for NFSv3 mount support). Added a dumpkmap to allow + people to dump a binary keymaps for use with 'loadkmap', and a + completely reworked 'grep' and 'sed' which should behave better. + BusyBox shell can now also be used as a login shell. + See the <a href="downloads/Changelog">changelog</a> + for complete details. + + +<p> <li> <b>21 June 2000 -- BusyBox 0.45 released</b> +<br> + + This release has been slow in coming, but is very solid at this + point. BusyBox now supports libc5 as well as GNU libc. This + release provides the following new apps: cut, tr, insmod, ar, + mktemp, setkeycodes, md5sum, uuencode, uudecode, which, and + telnet. There are bug fixes for just about every app as well (see + the <a href="downloads/Changelog">changelog</a> for + details). + <p> + Also, some exciting infrastructure news! Busybox now has its own + <a href="lists/busybox/">mailing list</a>, + publically browsable + <a href="/cgi-bin/viewcvs.cgi/trunk/busybox/">CVS tree</a>, + anonymous + <a href="cvs_anon.html">CVS access</a>, and + for those that are actively contributing there is even + <a href="cvs_write.html">CVS write access</a>. + I think this will be a huge help to the ongoing development of BusyBox. + <p> + Also, for the curious, there is no 0.44 release. Somehow 0.44 got announced + a few weeks ago prior to its actually being released. To avoid any confusion + we are just skipping 0.44. + <p> + Many thanks go out to the many people that have contributed to this release + of BusyBox (esp. Pavel Roskin)! + + +<p> <li> <b>19 April 2000 -- syslogd bugfix</b> +<br> +Turns out that there was still a bug in busybox syslogd. +For example, with the following test app: +<pre> +#include <syslog.h> + +int do_log(char* msg, int delay) +{ + openlog("testlog", LOG_PID, LOG_DAEMON); + while(1) { + syslog(LOG_ERR, "%s: testing one, two, three\n", msg); + sleep(delay); + } + closelog(); + return(0); +}; + +int main(void) +{ + if (fork()==0) + do_log("A", 2); + do_log("B", 3); +} +</pre> +it should be logging stuff from both "A" and "B". As released in 0.43 only stuff +from "A" would have been logged. This means that if init tries to log something +while say ppp has the syslog open, init would block (which is bad, bad, bad). +<p> +Karl M. Hegbloom has created a fix for the problem. +Thanks Karl! + + +<p> <li> <b>18 April 2000 -- BusyBox 0.43 released (finally!)</b> +<br> +I have finally gotten everything into a state where I feel pretty +good about things. This is definitely the most stable, solid release +so far. A lot of bugs have been fixed, and the following new apps +have been added: sh, basename, dirname, killall, uptime, +freeramdisk, tr, echo, test, and usleep. Tar has been completely +rewritten from scratch. Bss size has also been greatly reduced. +More details are available in the +<a href="downloads/Changelog">changelog</a>. +Oh, and as a special bonus, I wrote some fairly comprehensive +<em>documentation</em>, complete with examples and full usage information. + +<p> +Many thanks go out to the fine people that have helped by submitting patches +and bug reports; particularly instrumental in helping for this release were +Karl Hegbloom, Pavel Roskin, Friedrich Vedder, Emanuele Caratti, +Bob Tinsley, Nicolas Pitre, Avery Pennarun, Arne Bernin, John Beppu, and Jim Gleason. +There were others so if I somehow forgot to mention you, I'm very sorry. +<p> + +You can grab BusyBox 0.43 tarballs <a href="downloads">here</a>. + +<p> <li> <b>9 April 2000 -- BusyBox 0.43 pre release</b> +<br> +Unfortunately, I have not yet finished all the things I want to +do for BusyBox 0.43, so I am posting this pre-release for people +to poke at. This contains my complete rewrite of tar, which now weighs in at +5k (7k with all options turned on) and works for reading and writing +tarballs (which it does correctly for everything I have been able to throw +at it). Tar also (optionally) supports the "--exclude" option (mainly because +the Linux Router Project folks asked for it). This also has a pre-release +of the micro shell I have been writing. This pre-release should be stable +enough for production use -- it just isn't a release since I have some structural +changes I still want to make. +<p> +The pre-release can be found <a href="downloads">here</a>. +Please let me know ASAP if you find <em>any</em> bugs. + +<p> <li> <b>28 March 2000 -- Andersen Baby Boy release</b> +<br> +I am pleased to announce that on Tuesday March 28th at 5:48pm, weighing in at 7 +lbs. 12 oz, Micah Erik Andersen was born at LDS Hospital here in Salt Lake City. +He was born in the emergency room less then 5 minutes after we arrived -- and +it was such a relief that we even made it to the hospital at all. Despite the +fact that I was driving at an amazingly unlawful speed and honking at everybody +and thinking decidedly unkind thoughts about the people in our way, my wife +(inconsiderate of my feelings and complete lack of medical training) was lying +down in the back seat saying things like "I think I need to start pushing now" +(which she then proceeded to do despite my best encouraging statements to the +contrary). +<p> +Anyway, I'm glad to note that despite the much-faster-than-we-were-expecting +labor, both Shaunalei and our new baby boy are doing wonderfully. +<p> +So now that I am done with my excuse for the slow release cycle... +Progress on the next release of BusyBox has been slow but steady. I expect +to have a release sometime during the first week of April. This release will +include a number of important changes, including the addition of a shell, a +re-write of tar (to accommodate the Linux Router Project), and syslogd can now +accept multiple concurrent connections, fixing lots of unexpected blocking +problems. + + +<p> <li> <b>11 February 2000 -- BusyBox 0.42 released</b> +<br> + + This is the most solid BusyBox release so far. Many, many + bugs have been fixed. See the + <a href="downloads/Changelog">changelog</a> for details. + + Of particular interest, init will now cleanly unmount + filesystems on reboot, cp and mv have been rewritten and + behave much better, and mount and umount no longer leak + loop devices. Many thanks go out to Randolph Chung, + Karl M. Hegbloom, Taketoshi Sano, and Pavel Roskin for + their hard work on this release of BusyBox. Please pound + on it and let me know if you find any bugs. + +<p> <li> <b>19 January 2000 -- BusyBox 0.41 released</b> +<br> + + This release includes bugfixes to cp, mv, logger, true, false, + mkdir, syslogd, and init. New apps include wc, hostid, + logname, tty, whoami, and yes. New features include loop device + support in mount and umount, and better TERM handling by init. + The changelog can be found <a href="downloads/Changelog">here</a>. + +<p> <li> <b>7 January 2000 -- BusyBox 0.40 released</b> +<br> + + This release includes bugfixes to init (now includes inittab support), + syslogd, head, logger, du, grep, cp, mv, sed, dmesg, ls, kill, gunzip, and mknod. + New apps include sort, uniq, lsmod, rmmod, fbset, and loadacm. + In particular, this release fixes an important bug in tar which + in some cases produced serious security problems. + As always, the changelog can be found <a href="downloads/Changelog">here</a>. + +<p> <li> <b>11 December 1999 -- BusyBox Website</b> +<br> + I have received permission from Bruce Perens (the original author of BusyBox) + to set up this site as the new primary website for BusyBox. This website + will always contain pointers to the latest and greatest, and will also + contain the latest documentation on how to use BusyBox, what it can do, + what arguments its apps support, etc. + +<p> <li> <b>10 December 1999 -- BusyBox 0.39 released</b> +<br> + This release includes fixes to init, reboot, halt, kill, and ls, and contains + the new apps ping, hostname, mkfifo, free, tail, du, tee, and head. A full + changelog can be found <a href="downloads/Changelog">here</a>. +<p> <li> <b>5 December 1999 -- BusyBox 0.38 released</b> +<br> + This release includes fixes to tar, cat, ls, dd, rm, umount, find, df, + and make install, and includes new apps syslogd/klogd and logger. + + +</ul> + + +<!--#include file="footer.html" --> + diff --git a/docs/busybox.net/products.html b/docs/busybox.net/products.html new file mode 100644 index 0000000..daf8add --- /dev/null +++ b/docs/busybox.net/products.html @@ -0,0 +1,170 @@ +<!--#include file="header.html" --> + + +<h3>Products/Projects Using BusyBox</h3> + +Do you use BusyBox? I'd love to know about it and +I'd be happy to link to you. + +<p> +I know of the following products and/or projects that use BusyBox -- +listed in the order I happen to add them to the web page: + +<ul> + +<li><a href="http://buildroot.uclibc.org/">buildroot</a><br>A configurable +means for building your own busybox/uClibc based system systems, maintained +by the uClibc developers. + +<li><a href="http://openwrt.org">OpenWrt</a> a Linux distribution for embedded +devices, based on buildroot. + +<li><a href="http://www.pengutronix.de/software/ptxdist_en.html">PTXdist</a><br>another +configurable means for building your own busybox based system systems. + +</li><li><a href= +"http://cvs.debian.org/boot-floppies/"> +Debian installer (boot floppies) project</a> + +</li><li><a href="http://redhat.com/">Red Hat installer</a> + +</li><li><a href= +"http://distro.ibiblio.org/pub/Linux/distributions/slackware/slackware-current/source/rootdisks/"> +Slackware Installer</a> + +</li><li><a href="http://www.gentoo.org/">Gentoo Linux install/boot CDs</a> +</li><li><a href="http://www.mandriva.com/">The Mandriva installer</a> + +</li><li><a href="http://Leaf.SourceForge.net">Linux Embedded Appliance Firewall</a><br>The sucessor of the Linux Router Project, supporting all sorts of embedded Linux gateways, routers, wireless routers, and firewalls. + +</li><li><a href= +"http://www.toms.net/rb/">tomsrtbt</a> + +</li><li><a href="http://www.stormix.com/">Stormix +Installer</a> + +</li><li><a href= +"http://www.emacinc.com/linux2_sbc.htm">EMAC Linux +2.0 SBC</a> + +</li><li><a href="http://www.trinux.org/">Trinux</a> + +</li><li><a href="http://oddas.sourceforge.net/">ODDAS +project</a> + +</li><li><a href="http://byld.sourceforge.net/">Build Your +Linux Disk</a> + +</li><li><a href= +"http://ibiblio.org/pub/Linux/system/recovery">Zdisk</a> + +</li><li><a href="http://www.adtran.com">AdTran - +VPN/firewall VPN Linux Distribution</a> + +</li><li><a href="http://mkcdrec.ota.be/">mkCDrec - make +CD-ROM recovery</a> + +</li><li><a href= +"http://recycle.lbl.gov/~ldoolitt/bse/">Linux on +nanoEngine</a> + +</li><li><a href= +"http://www.zelow.no/floppyfw/">Floppyfw</a> + +</li><li><a href="http://www.ltsp.org/">Linux Terminal +Server Project</a> + +</li><li><a href="http://www.devil-linux.org/">Devil-Linux</a> + +</li><li><a href="http://dutnux.sourceforge.net/">DutNux</a> + +</li><li><a href="http://www.microwerks.net/~hugo/mindi/">Mindi</a> + +</li><li><a href="http://www.minimalinux.org/ttylinux/">ttylinux</a> + +</li><li><a href="http://www.coyotelinux.com/">Coyote Linux</a> + +</li><li><a href="http://www.partimage.org/">Partition +Image</a> + +</li><li><a href="http://www.fli4l.de/">fli4l the on(e)-disk-router</a> + +</li><li><a href="http://tinfoilhat.cultists.net/">Tinfoil +Hat Linux</a> + +</li><li><a href="http://sourceforge.net/projects/gp32linux/">gp32linux</a> +</li><li><a href="http://familiar.handhelds.org/">Familiar Linux</a><br>A linux distribution for handheld computers +</li><li><a href="http://rescuecd.sourceforge.net/">Timo's Rescue CD Set</a> +</li><li><a href="http://sf.net/projects/netstation/">Netstation</a> +</li><li><a href="http://www.fiwix.org/">GNU/Fiwix Operating System</a> +</li><li><a href="http://www.softcraft.com/">Generations Linux</a> +</li><li><a href="http://systemimager.org/relatedprojects/">SystemImager / System Installation Suite</a> +</li><li><a href="http://www.bablokb.de/gendist/">GENDIST distribution generator</a> +</li><li><a href="http://diet-pc.sourceforge.net/">DIET-PC embedded Linux thin client distribution</a> +</li><li><a href="http://byzgl.sourceforge.net/">BYZantine Gnu/Linux</a> +</li><li><a href="http://dban.sourceforge.net/">Darik's Boot and Nuke</a> +</li><li><a href="http://www.timesys.com/">TimeSys real-time Linux</a> +</li><li><a href="http://movix.sf.net/">MoviX</a><br>Boots from CD and automatically plays every video file on the CD +</li><li><a href="http://katamaran.sourceforge.net">katamaran</a><br>Linux, X11, xfce windowmanager, based on BusyBox +</li><li><a href="http://www.sourceforge.net/projects/simplygnustep">Prometheus SimplyGNUstep</a> +</li><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. +</li><li><a href="http://metadistros.hispalinux.es/">Metadistros</a><br>a project to allow you easily make Live-CD distributions. +</li><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. +</li><li><a href="http://www.stresslinux.org/">stresslinux</a><br>minimal linux distribution running from a bootable cdrom or via PXE. +</li><li><a href="http://thinstation.sourceforge.net/">thinstation</a><br>convert standard PCs into full-featured diskless thinclients. +</li><li><a href="http://www.uhulinux.hu/">UHU-Linux Hungary</a> +</li><li><a href="http://deep-water.berlios.de/">Deep-Water Linux</a> +</li><li><a href="http://www.freesco.org/">Freesco router</a> +</li><li><a href="http://Sentry.SourceForge.net/">Sentry Firewall CD</a> + + + +</li><li><a href="http://tuxscreen.net">Tuxscreen Linux Phone</a> +</li><li><a href="http://www.kerbango.com/">The Kerbango Internet Radio</a> +</li><li><a href="http://www.linuxmagic.com/vpn/">LinuxMagic VPN Firewall</a> +</li><li><a href="http://www.isilver-inc.com/">I-Silver Linux appliance servers</a> +</li><li><a href="http://zaurus.sourceforge.net/">Sharp Zaurus PDA</a> +</li><li><a href="http://www.cyclades.com/">Cyclades-TS and other Cyclades products</a> +</li><li><a href="http://www.linksys.com/products/product.asp?prid=508">Linksys WRT54G - Wireless-G Broadband Router</a> +</li><li><a href="http://www.dell.com/us/en/biz/topics/sbtopic_005_truemobile.htm">Dell TrueMobile 1184</a> +</li><li><a href="http://actiontec.com/products/modems/dual_pcmodem/dpm_overview.html">Actiontec Dual PC Modem</a> +</li><li><a href="http://www.kiss-technology.com/">Kiss DP Series DVD players</a> +</li><li><a href="http://www.netgear.com/products/prod_details.asp?prodID=170">NetGear WG602 wireless router</a> + <br>with sources <a href="http://www.netgear.com/support/support_details.asp?dnldID=453">here</a> +</li><li><a href="http://www.trendware.com/products/TEW-411BRP.htm">TRENDnet TEW-411BRP 802.11g Wireless AP/Router/Switch</a> + <br>Source for busybox and udhcp <a href="http://www.trendware.com/asp/download/fileinfo.asp?file_id=277&B1=Search">here</a> though no kernel source is provided. +</li><li><a href="http://www.buffalo-technology.com/webcontent/products/wireless/wbr-g54.htm">Buffalo WBR-G54 wireless router</a> + </li><li><a href="http://www.asus.com/products/communication/wireless/wl-300g/overview.htm">ASUS WL-300g Wireless LAN Access Point</a> + <br>with source<a href="http://www.asus.com.tw/support/download/item.aspx?ModelName=WL-300G">here</a> + </li><li><a href="http://catalog.belkin.com/IWCatProductPage.process?Merchant_Id=&Section_Id=201522&pcount=&Product_Id=136493">Belkin 54g Wireless DSL/Cable Gateway Router</a> + <br>with source<a href="http://web.belkin.com/support/gpl.asp">here</a> + <li><a href="http://www.acronis.com/products/partitionexpert/">Acronis PartitionExpert 2003</a> + <br>includes a heavily modified BusyBox v0.60.5 with built in + cardmgr, device detection, gpm, lspci, etc. Also includes udhcp, + uClibc 0.9.26, a heavily patched up linux kernel, etc. Source + can only be obtained <a href="http://www.acronis.com/files/gpl/linux.tar.bz2">here</a> + +</li><li><a href="http://www.usr.com/">U.S. Robotics Sureconnect 4-port ADSL router</a><br> + with source <a href="http://www.usr.com/support/s-gpl-code.asp">here</a> +</li><li><a href="http://www.actiontec.com/products/broadband/54mbps_wireless_gateway_1p/index.html"> + ActionTec GT701-WG Wireless Gateway/DSL Modem</a> + with source <a href="http://128.121.226.214/gtproducts/index.html">here</a> +</li><li><a href="http://smartlinux.sourceforge.net/">S.M.A.R.T. Linux</a> +</li><li><a href="http://www.dlink.com/">DLink - Model GSL-G604T, DSL-300T, and possibly other models</a> + with source <a href="ftp://ftp.dlink.co.uk/dsl_routers_modems/">here,</a> + with source <a href="ftp://ftp.dlink.de/dsl-products/">and here,</a> + and quite possibly other places as well. You may need to dig down a bit + to find the source, but it does seem to be there. +</li><li><a href="http://www.siemens-mobile.de/cds/frontdoor/0,2241,de_de_0_42931_rArNrNrNrN,00.html">Siemens SE515 DSL router</a> + with source <a href="http://now-portal.c-lab.de/projects/gigaset/">here, I think...</a> + with some details <a href="http://heinz.hippenstiel.org/familie/hp/hobby/gigaset_se515dsl.html">here.</a> +</li><li><a href="http://frwt.stim.ru/">Free Remote Windows Terminal</a> + +</li><li><a href="http://www.zyxel.com/">ZyXEL Routers</a> + +</li> +</ul> + + +<!--#include file="footer.html" --> + diff --git a/docs/busybox.net/screenshot.html b/docs/busybox.net/screenshot.html new file mode 100644 index 0000000..4e07fda --- /dev/null +++ b/docs/busybox.net/screenshot.html @@ -0,0 +1,62 @@ +<!--#include file="header.html" --> + + +<!-- Begin Screenshot --> + +<h3> Busybox Screenshot! </h3> + + +Everybody loves to look at screenshots, so here is a live action screenshot of BusyBox. + +<pre style="background-color: black; color: lightgreen; padding: 5px; +font-family: monospace; font-size: smaller;" width="100"> + + +$ ./busybox +BusyBox v1.1.2 (2006.04.11-08:27+0000) multi-call binary + +Usage: busybox [function] [arguments]... + or: [function] [arguments]... + + BusyBox is a multi-call binary that combines many common Unix + utilities into a single executable. Most people will create a + link to busybox for each function they wish to use and BusyBox + will act like whatever it was invoked as! + +Currently defined functions: + [, [[, addgroup, adduser, adjtimex, ar, arping, ash, awk, basename, + bbconfig, bunzip2, busybox, bzcat, cal, cat, chattr, chgrp, chmod, + chown, chroot, chvt, clear, cmp, comm, cp, cpio, crond, crontab, + cut, date, dc, dd, deallocvt, delgroup, deluser, devfsd, df, dirname, + dmesg, dnsd, dos2unix, dpkg, dpkg-deb, du, dumpkmap, dumpleases, + e2fsck, e2label, echo, egrep, eject, env, ether-wake, expr, fakeidentd, + false, fbset, fdflush, fdformat, fdisk, fgrep, find, findfs, fold, + free, freeramdisk, fsck, fsck.ext2, fsck.ext3, fsck.minix, ftpget, + ftpput, fuser, getopt, getty, grep, gunzip, gzip, halt, hdparm, + head, hexdump, hostid, hostname, httpd, hush, hwclock, id, ifconfig, + ifdown, ifup, inetd, init, insmod, install, ip, ipaddr, ipcalc, + ipcrm, ipcs, iplink, iproute, iptunnel, kill, killall, klogd, + lash, last, length, less, linux32, linux64, linuxrc, ln, loadfont, + loadkmap, logger, login, logname, logread, losetup, ls, lsattr, + lsmod, lzmacat, makedevs, md5sum, mdev, mesg, mkdir, mke2fs, mkfifo, + mkfs.ext2, mkfs.ext3, mkfs.minix, mknod, mkswap, mktemp, modprobe, + more, mount, mountpoint, msh, mt, mv, nameif, nc, netstat, nice, + nohup, nslookup, od, openvt, passwd, patch, pidof, ping, ping6, + pipe_progress, pivot_root, poweroff, printenv, printf, ps, pwd, + rdate, readlink, readprofile, realpath, reboot, renice, reset, + rm, rmdir, rmmod, route, rpm, rpm2cpio, run-parts, runlevel, rx, + sed, seq, setarch, setconsole, setkeycodes, setsid, sha1sum, sleep, + sort, start-stop-daemon, stat, strings, stty, su, sulogin, sum, + swapoff, swapon, switch_root, sync, sysctl, syslogd, tail, tar, + tee, telnet, telnetd, test, tftp, time, top, touch, tr, traceroute, + true, tty, tune2fs, udhcpc, udhcpd, umount, uname, uncompress, + uniq, unix2dos, unlzma, unzip, uptime, usleep, uudecode, uuencode, + vconfig, vi, vlock, watch, watchdog, wc, wget, which, who, whoami, + xargs, yes, zcat, zcip + +$ <span style="text-decoration:blink;">_</span> + +</pre> + +<!--#include file="footer.html" --> + diff --git a/docs/busybox.net/shame.html b/docs/busybox.net/shame.html new file mode 100644 index 0000000..d9da44b --- /dev/null +++ b/docs/busybox.net/shame.html @@ -0,0 +1,82 @@ +<!--#include file="header.html" --> + + +<h3>Hall of Shame!!!</h3> + +<p>This page is no longer updated, these days we forward this sort of +thing to the <a href="http://www.softwarefreedom.org">Software Freedom Law +Center</a> instead.</p> + +<p>The following products and/or projects appear to use BusyBox, but do not +appear to release source code as required by the <a +href="/license.html">BusyBox license</a>. This is a violation of the law! +The distributors of these products are invited to contact <a href= +"mailto:andersen@codepoet.org">Erik Andersen</a> if they have any confusion +as to what is needed to bring their products into compliance, or if they have +already brought their product into compliance and wish to be removed from the +Hall of Shame. + +<p> + +Here are the details of <a href="/license.html">exactly how to comply +with the BusyBox license</a>, so there should be no question as to +exactly what is expected. +Complying with the Busybox license is easy and completely free, so the +companies listed below should be ashamed of themselves. Furthermore, each +product listed here is subject to being legally ordered to cease and desist +distribution for violation of copyright law, and the distributor of each +product is subject to being sued for statutory copyright infringement damages +of up to $150,000 per work plus legal fees. Nobody wants to be sued, and <a +href="mailto:andersen@codepoet.org">Erik</a> certainly would prefer to spend +his time doing better things than sue people. But he will sue if forced to +do so to maintain compliance. + +<p> + +Do everyone a favor and don't break the law -- if you use busybox, comply with +the busybox license by releasing the source code with your product. + +<p> + +<ul> + + <li><a href="http://www.trittontechnologies.com/products.html">Tritton Technologies NAS120</a> + <br>see <a href="http://www.ussg.iu.edu/hypermail/linux/kernel/0404.0/1611.html">here for details</a> + <li><a href="http://www.macsense.com/product/homepod/">Macsense HomePod</a> + <br>with details + <a href="http://developer.gloolabs.com/modules.php?op=modload&name=Forums&file=viewtopic&topic=123&forum=7">here</a> + <li><a href="http://www.cpx.com/products.asp?c=Wireless+Products">Compex Wireless Products</a> + <br>appears to be running v0.60.5 with Linux version 2.4.20-uc0 on ColdFire, + but no source code is mentioned or offered. + <li><a href="http://www.inventel.com/en/product/datasheet/10/">Inventel DW 200 wireless/ADSL router</a> + <li><a href="http://www.sweex.com/product.asp">Sweex DSL router</a> + <br>appears to be running BusyBox v1.00-pre2 and udhcpd, but no source + code is mentioned or offered. + <li><a href="http://www.trendware.com/products/TEW-410APB.htm">TRENDnet TEW-410APB</a> + </li><li><a href="http://www.hauppauge.com/Pages/products/data_mediamvp.html">Hauppauge Media MVP</a> + <br>Hauppauge contacted me on 16 Dec 2003, and claims to be working on resolving this problem. + </li><li><a href="http://www.hitex.com/download/adescom/data/">TriCore</a> + </li><li><a href="http://www.allnet.de/">ALLNET 0186 wireless router</a> + </li><li><a href="http://www.dmmtv.com/">Dreambox DM7000S DVB Satellite Receiver</a> + <br> Dream Multimedia contacted me on 22 Dec 2003 and is working on resolving this problem. + <br> Source _may_ be here: http://cvs.tuxbox.org/cgi-bin/viewcvs.cgi/tuxbox/cdk/ + </li><li><a href="http://testing.lkml.org/slashdot.php?mid=331690">Sigma Designs EM8500 based DVD players</a> + <br>Source for the Sigma Designs reference platform is found here<br> + <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, + no vendors of Sigma Designs EM8500 based devices actually comply with the GPL.... + </li><li><a href="http://testing.lkml.org/slashdot.php?mid=433790">Liteon LVD2001 DVD player using the Sigma Designs EM8500</a> + </li><li><a href="http://www.rimax.net/">Rimax DVD players using the Sigma Designs EM8500</a> + </li><li><a href="http://www.vinc.us/">Bravo DVD players using the Sigma Designs EM8500</a> + </li><li><a href="http://www.hb-direct.com/">H&B DX3110 Divx player based on Sigma Designs EM8500</a> + </li><li><a href="http://www.recospa.it/mdpro1/index.php">United *DVX4066 mpeg4 capable DVD players</a> + </li><li><a href="http://www.a-link.com/RR64AP.html">Avaks alink Roadrunner 64</a> + <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 ? + <br>To verify the Avaks infrigment see my slashdot <a href="http://slashdot.org/~bug1/journal/">journal</a>. + <br>The ZipIt wireless IM device appears to be using Busybox-1.00-pre1 in the ramdisk, however no source has been made available. + </li><li>Undoubtedly there are others... Please report them so we can shame them (or if necessary sue them) into compliance. + +</ul> + + +<!--#include file="footer.html" --> + diff --git a/docs/busybox.net/sponsors.html b/docs/busybox.net/sponsors.html new file mode 100644 index 0000000..ba7920b --- /dev/null +++ b/docs/busybox.net/sponsors.html @@ -0,0 +1,35 @@ +<!--#include file="header.html" --> + +<h3>Sponsors</h3> + +<p>Please visit our sponsors and thank them for their support! They have +provided money for equipment and bandwidth. Next time you need help with a +project, consider these fine companies!</p> + + +<ul> + <li><a href="http://osuosl.org/">OSU OSL</a><br> + OSU OSL kindly provides hosting for BusyBox and uClibc. + </li> + + <li><a href="http://www.penguru.net">Penguru Consulting</a><br> + Custom development for embedded Linux systems and multimedia platforms + </li> + + <li><a href="http://opensource.se/">opensource.se</a><br> + Embedded open source consulting in Europe. + </li> + + <li><a href="http://www.codepoet-consulting.com">Codepoet Consulting</a><br> + Custom Linux, embedded Linux, BusyBox, and uClibc development. + </li> + + <li><a href="http://www.timesys.com">TimeSys</a><br> + Embedded Linux development, cross-compilers, real-time, KGDB, tsrpm and cygwin. + </li> +</ul> + +<p>If you wish to be a sponsor, or if you have already contributed and would +like your name added here, email <a href="mailto:rob@landley.net">Rob</a>.</p> + +<!--#include file="footer.html" --> diff --git a/docs/busybox.net/subversion.html b/docs/busybox.net/subversion.html new file mode 100644 index 0000000..7fb620f --- /dev/null +++ b/docs/busybox.net/subversion.html @@ -0,0 +1,52 @@ +<!--#include file="header.html" --> + +<h3>Accessing Source</h3> + + + +<h3>Patches</h3> + +<p>If you don't want to mess with subversion, you can download +<a href="/downloads/patches/">all BusyBox patches</a> or check the +<a href="/downloads/patches/recent.html">most recent patches</a>. + +<h3>Anonymous Subversion Access</h3> + +We allow anonymous (read-only) Subversion (svn) access to everyone. To +grab a copy of the latest version of BusyBox using anonymous svn access: + +<pre> +svn co svn://busybox.net/trunk/busybox</pre> + +<p> +The current <em>stable branch</em> can be obtained with +<pre> +svn co svn://busybox.net/branches/busybox_1_1_stable +</pre> + +<p> + +If you are not already familiar with using Subversion, I recommend you visit <a +href="http://subversion.tigris.org/">the Subversion website</a>. You might +also want to read online or buy a copy of <a +href="http://svnbook.red-bean.com/">the Subversion Book</a>. If you are +already comfortable with using CVS, you may want to skip ahead to the <a +href="http://svnbook.red-bean.com/en/1.1/apa.html">Subversion for CVS Users</a> +part of the Subversion Book. + +<p> + +Once you've checked out a copy of the source tree, you can update your source +tree at any time so it is in sync with the latest and greatest by entering your +BusyBox directory and running the command: + +<pre> +svn update</pre> + +Because you've only been granted anonymous access to the tree, you won't be +able to commit any changes. Changes can be submitted for inclusion by posting +them to the BusyBox mailing list. For those that are actively contributing +<a href="developer.html">Subversion commit access</a> can be made available. + +<!--#include file="footer.html" --> + diff --git a/docs/busybox.net/tinyutils.html b/docs/busybox.net/tinyutils.html new file mode 100644 index 0000000..9122d6e --- /dev/null +++ b/docs/busybox.net/tinyutils.html @@ -0,0 +1,86 @@ +<!--#include file="header.html" --> + + +<h3>External Tiny Utilities</h3> + +This is a list of tiny utilities whose functionality is not provided by +busybox. If you have additional suggestions, please send an e-mail to our +dev mailing list. + +<br><br> + +<table border=1> +<tr> + <th>Feature</th> + <th>Utilities</th> +</tr> + +<tr> + <td>SSH</td> + <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 +dependencies (I.E. it does not depend on OpenSSL, using a built-in copy of +LibTomCrypt instead). It's actively maintained, with a quiet but responsive +mailing list.</td> +</tr> + +<tr> + <td>SMTP</td> + <td><a href="ftp://ftp.debian.org/debian/pool/main/s/ssmtp/">ssmtp</a> is an extremely simple Mail Transfer Agent.</td> +</tr> + +<tr> + <td>ntp</td> + <td><a href="http://doolittle.icarus.com/ntpclient/">ntpclient</a> is a +tiny ntp client. BusyBox has rdate to set the date from a remote server, but +if you want a daemon to repeatedly adjust the clock over time, try that.</td> +</table> + +<p>In a gui environment, you'll probably want a web browser. +<a href="http://www.konqueror.org/embedded/">Konqueror Embedded</a> requires QT +(or QT Embedded), but not KDE. The <a href="http://www.dillo.org/">Dillo</a> +requires GTK+, but not Gnome. Or you can try the <a href="http://links.twibright.com/">graphical +version of links</a>.</p> + +<h3>SCRIPTING LANGUAGES</h3> +<p>Although busybox has built-in support for shell scripts, plenty of other +small scripting languages are available on the net. A few examples:</p> +<table border=1> +<tr> +<th><language></th> +<th><description></th> +</tr> +<tr> +<td> <a href=http://www.foo.be/docs/tpj/issues/vol5_3/tpj0503-0003.html>microperl</a> </td> +<td> A small standalone perl interpreter that can be built from the perl source +s via "make -f Makefile.micro". If you really feel the need for perl on an embe +dded system, this is where to start. +</tr> +<tr> + +<td><a href=http://www.lua.org/pil/>Lua</a></td> +<td>If you just want a small embedded scripting language to write <em>new</en> +code in, this Brazilian import is lightweight, fairly popular, and has +a complete book about it online.</td> +</tr> + +<tr> +<td><a href= http://www.star.le.ac.uk/%7Etjg/rc/>rc</a></td> +<td>The PLAN9 shell. Not compatible with conventional bourne shell syntax, +but fairly lightweight and small.</td> +</tr> + +</tr> +<tr> +<td><a href=http://www.forth.org>forth</a></td> +<td>A well known language for fast and small programs, decades old but still +in use for everything from OpenBIOS to computer controlled engine timing.</td> +</tr> +</table> + +<p>For more information, you probably want to look at +<a href=http://buildroot.uclibc.org>buildroot</a> and +<a href=http://gentoo-wiki.com/TinyGentoo>TinyGentoo</a>, which +build and use tiny utilities for all sorts of things.</p> + +<!--#include file="footer.html" --> + |