<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 

<HTML>
<HEAD>
<TITLE>BusyBox</TITLE>
</HEAD>

<body text="#000000" alink="#660000" link="#660000" bgcolor="#dee2de" vlink="#660000">

<basefont face="lucida, helvetica, arial" size="3">


<CENTER>
      <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=2>
	    <TR>
		<td bgcolor="#000000">
		  <FONT FACE="lucida, helvetica" COLOR="#ccccc0">
		      <B>B&nbsp;u&nbsp;s&nbsp;y&nbsp;B&nbsp;o&nbsp;x</B>
		  </FONT>
		</TD>
	    </TR>
      </TABLE>
      <a href="/"><IMG SRC="images/busybox2.jpg" alt="BusyBox" border="0" width="360" height="230"></a><BR>


<!-- Begin Introduction section -->


<TABLE WIDTH="95%" CELLSPACING=1 CELLPADDING=4 BORDER=1>
<TR><TD BGCOLOR="#ccccc0" ALIGN=center>
    <A NAME="intro"> <BIG><B>
    The Swiss Army Knife of Embedded Linux
    </B></BIG></A>
</TD></TR>
<TR><TD BGCOLOR="#eeeee0">

BusyBox combines tiny versions of many common UNIX utilities into a single
small executable. It provides minimalist replacements for most of the utilities
you usually find in fileutils, shellutils, findutils, textutils, grep, gzip,
tar, etc. BusyBox provides a fairly complete POSIX environment for any small or
embedded system. 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.
<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 /dev, a kernel, and a shell.
For a really minimal system, you can even use the busybox shell (not Bourne compatible, but very small and quite usable), and the busybox vi editor.
<p>

BusyBox is now maintained by 
<a href="http://codepoet.org/andersen/erik/erik.html">
Erik Andersen</a>, and its ongoing development is being sponsored by 
<a href="http://www.lineo.com/">Lineo</a>. 
<p>
BusyBox is licensed under the 
<a href="http://www.gnu.org/copyleft/gpl.html">GNU GENERAL PUBLIC LICENSE</a>.
<p>


<h3> Screenshot </h3>

<p> Because everybody loves screenshots, a screenshot of BusyBox 
is now available <a href="screenshot.html">right here</a>.


<H3>Mailing List Information</h3>
BusyBox now has a <a href="http://opensource.lineo.com/lists/busybox/">mailing list</a>!
To subscribe, go and visit <a href="http://opensource.lineo.com/mailman/listinfo/busybox">this page</a>.

<!-- Begin Latest News section -->

<TR><TD BGCOLOR="#ccccc0" ALIGN=center>
    <A NAME="news">
    <BIG><B>
    Latest News
    </B></BIG>
    </A>
</TD></TR>
<TR><TD BGCOLOR="#eeeee0">

<ul>

	<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="ftp://oss.lineo.com/busybox/Changelog">changelog</a> for
	     complete details.  BusyBox 0.51 can be downloaded from 
	     <a href="ftp://oss.lineo.com/busybox">ftp://oss.lineo.com/busybox</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=
    "ftp://opensource.lineo.com/busybox/busybox.floppy.img"> Busybox boot floppy
    image</a>. Here's how you use it:

    <ol>

	    <li> <a href= "ftp://opensource.lineo.com/busybox/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="ftp://oss.lineo.com/busybox/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="ftp://oss.lineo.com/busybox/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="ftp://oss.lineo.com/busybox/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>


    <li> <b>Old News</b>
    <br>
	     For the old news, visit <a href="http://busybox.lineo.com/oldnews.html">the old news page</a>.
</ul>


<!-- Begin Download section -->

<TR><TD BGCOLOR="#ccccc0" ALIGN=center>
    <A NAME="download"><BIG><B>
    Download
    </B></BIG></A>
</TD></TR>
<TR><TD BGCOLOR="#eeeee0">
<ul>

	<li> Source for the latest release can always be downloaded from 
	<a href="ftp://oss.lineo.com/busybox">ftp://oss.lineo.com/busybox</a>.

	<li> A new snapshot of the source is made daily and is available as a GNU
	gzipped tarball <a href="busybox.tar.gz"> right here</a>.

	<li> BusyBox now has its own publically browsable
	<a href="http://opensource.lineo.com/cgi-bin/cvsweb/busybox/">CVS tree</a>,  
	anonymous
	<a href="http://opensource.lineo.com/cvs_anon.html">CVS access</a>, and
	for those that are actively contributing there is even 
	<a href="http://opensource.lineo.com/cvs_write.html">CVS write access</a>.

</ul>


<!-- Begin Docs section -->

<TR><TD BGCOLOR="#ccccc0" ALIGN=center>
    <A NAME="docs"><BIG><B>
    Documentation
    </B></BIG></A>
</TD></TR>
<TR><TD BGCOLOR="#eeeee0">
Current documentation for BusyBox includes: 
<ul>
    <li> <a href="ftp://oss.lineo.com/busybox/BusyBox.html">BusyBox.html</a>.
		This is a list of the all the available commands in BusyBox with 
		complete usage information and examples of how to use each app.  I 
		have spent a <em>lot</em> of time updating these docs and trying to 
		make them fairly comprehensive.  If you find any errors (factual, 
		grammatical, whatever) please let me know.
    <li> <a href="ftp://oss.lineo.com/busybox/README">README</a>.
		This is the README file included in the busybox source release.
    <li> <a href="http://bugs.lineo.com/db/pa/lbusybox.html">BusyBox Bugs</a>.
		Need to report a bug?  Need to check if a bug has been filed?
    <li> If you need more help, the BusyBox
    <a href="http://opensource.lineo.com/lists/busybox/">mailing list</a> is
    a good place to start.
</ul>


<!-- Begin Links section -->

<TR><TD BGCOLOR="#ccccc0" ALIGN=center>
    <A NAME="links">
    <BIG><B>
    Important Links
    </B></BIG>
    </A>
</TD></TR>
<TR><TD BGCOLOR="#eeeee0">

<ul> 

    <li>  <A HREF="http://perens.com/FreeSoftware/">
    Free Software from Bruce Perens</A><br>
    The original idea for BusyBox, and all versions up to 0.26 were written 
    by <A HREF="mailto:bruce@perens.com">Bruce Perens</a>.  This is his BusyBox website.
    <p>

    <li>  <A HREF="http://freshmeat.net/projects/busybox/">
    Freshmeat AppIndex record for BusyBox</A>
    <p>
    <li><a href="http://tinylogin.lineo.com/">TinyLogin</a>
        is a nice embedded tool for handling authentication, changing passwords,
	and similar tasks which nicely complements BusyBox.
    <p>

    <li><a href="http://cvs.uclinux.org/uClibc.html">uClibc</a>
	is a C library for embedded systems.  You can actually statically link
	a "Hello World" application under x86 that only takes 4k (as opposed to
	200k under GNU libc).  It can do dynamic linking too and works nicely with
	BusyBox to create very small embedded systems.
    <p>

    <li> <a href="http://opensource.lineo.com/software.html">Other cool embedded software</a>.
    <p>

    <li> <a href="http://opensource.lineo.com/">opensource.lineo.com</a>.
    <p>

    <li> <A HREF="http://www.lineo.com/">Lineo</A> is sponsoring BusyBox development.
    <p>

</ul>


<!-- Begin Projects section -->

<TR><TD BGCOLOR="#ccccc0" ALIGN=center>
    <A NAME="projects"><BIG><B>
    Products/Projects Using BusyBox
    </B></BIG></A>
</TD></TR>
<TR><TD BGCOLOR="#eeeee0">

<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://www.lineo.com/products/embedix_linux/">Lineo Embedix Linux</a>
    <li> <a href="http://cvs.debian.org/boot-floppies/">Debian installer (boot floppies) project</a>
    <li> <a href="http://www.linuxrouter.org/">Linux Router Project </a>
    <li> <a href="http://linux-embedded.org/">LEM</a>
    <li> <a href="http://www.toms.net/rb/">tomsrtbt</a>
    <li> <a href="http://www.stormix.com/">Stormix Installer</a>
    <li> <a href="http://www.emacinc.com/linux2_sbc.htm">EMAC Linux 2.0 SBC</a>
    <li> <a href="http://www.trinux.org/">Trinux</a>
    <li> <a href="http://oddas.sourceforge.net/">ODDAS project</a>
    <li> <a href="http://www.kerbango.com/">The Kerbango Internet Radio</a>
    <li> <a href="http://www.linuxmagic.com/vpn/">LinuxMagic VPN Firewall</a>
    <li> <a href="http://byld.sourceforge.net/">Build Your Linux Disk</a>
    <li> <a href="http://homepages.ihug.co.nz/~ichi/baslinux.html">BasicLinux</a>
    <li> <a href="http://ibiblio.org/pub/Linux/system/recovery">Zdisk</a>
    <li> <a href="http://www.adtran.com">AdTran - VPN/firewall VPN Linux Distribution</a> 
    <li> <a href="http://mkcdrec.ota.be/">mkCDrec - make CD-ROM recovery</a>
    <li> <a href="http://recycle.lbl.gov/~ldoolitt/bse/">Linux on nanoEngine</a>
    <li> <a href="http://www.zelow.no/floppyfw/"> Floppyfw</a>

    <li> <a href="http://midori.transmeta.com/"> Midori Linux</a> - <a href=
	"http://www.wired.com/news/technology/0,1282,42399,00.html"> Article on
	Midori Linux</a> on <a href= "http://www.wired.com"> Wired</a>. Quote from
	Erik at the top of <a href=
	"http://www.wired.com/news/technology/0,1282,42399-2,00.html"> this
	page</a>

    <li> <a href="http://www.ltsp.org/">Linux Terminal Server Project</a>
    <li> <a href="http://www.devil-linux.org/">Devil-Linux</a>

</ul>

<p> Do you use BusyBox?  I'd love to know about it and I'd be happy to link to
you.



<!-- End of Table -->

</TD></TR>
</TABLE>



<!-- Footer -->
<HR>
<TABLE WIDTH="100%">
    <TR>
	<TD>
	    <font size="-1" face="arial, helvetica, sans-serif">
	    Mail all comments, insults, suggestions and bribes to 
	    <a href="mailto:andersen@lineo.com">Erik Andersen</a><BR>
	    The Busybox logo is copyright 1999,2000,2001, Erik Andersen.
	    </font>
	</TD>

	<TD>
	    <a href="http://www.vim.org"><img border=0 width=90 height=36
	    src="images/written.in.vi.png" 
	    alt="This site created with the vi editor"></a>
	</TD>

	<TD>
	    <a href="http://www.gimp.org/"><img border=0 width=90 height=36
	    src="images/gfx_by_gimp.png" alt="Graphics by GIMP"></a>
	</TD>

	<TD>
	    <a href="http://www.linuxtoday.com"><img width=90 height=36
	    src="images/ltbutton2.png" alt="Linux Today"></a>
	</TD>

	<TD>
	    <p><a href="http://slashdot.org"><img width=90 height=36
	    src="images/sdsmall.png" alt="Slashdot"></a>
	</TD>

	<TD>
	    <a href="http://freshmeat.net"><img width=90 height=36
	    src="images/fm.mini.png" alt="Freshmeat"></a>
	</TD>

    </TR>
</TABLE>


</CENTER>
</BODY>
</HTML>

