User: Password:
|
|
Subscribe / Log in / New account

Development

The current state of the BusyBox project

June 7, 2006

This article was contributed by Rob Landley

My name is Rob Landley, and I'm the new maintainer of BusyBox.

BusyBox is a small and simple implementation of a set of standard Linux command line utilities. A minimal system built from BusyBox, the uClibc C library for embedded Linux and a stripped down version of the 2.6 Linux kernel known as Linux-Tiny provides a complete Linux command line environment that can boot in 4 megabytes of ram from less than 2 megabytes of disk space. This makes BusyBox very popular for use in embedded Linux systems.

A Linux system built from just six packages (BusyBox, uClibc, Linux, GCC, binutils, and make) provides a build environment that can recompile itself from source code. In its default configuration, the 1.2.x versions of BusyBox will provide at least minimal replacements for twenty-one standard packages: bzip2, coreutils, dhcp, diffutils, e2fsprogs, file, findutils, gawk, grep, inetutils, less, modutils, net-tools, procps, sed, shadow, sysklogd, sysvinit, tar, util-linux, and vim. All of these utilities are provided by a single executable that is less than 1 megabyte in size.

BusyBox's "swiss army knife" design is one of its most noticeable space-saving features. One binary file has many symbolic links pointing to it, named for the commands that Busybox replaces. Busybox determines which applet to behave as by examining argv[0] to see which name it was called under.

A lot of BusyBox's appeal beyond the embedded world is simplicity. For example, the gnu coreutils version of cat.c is currently 772 lines of C code, while the busybox version is 40 lines of C code. Which one would you rather try to read through and understand, port to a new environment or audit for security holes?

BusyBox applets are smaller than other implementations because code size is the primary design goal. Many BusyBox applets are fresh implementations starting from the SingleUnix Specification version 3, with various GNU-compatible extensions added from the man pages as desired. Other applets have been derived from NetBSD or elsewhere, but we constantly rewrite and re-implement everything we feel we can make smaller, simpler, or less memory intensive. This means that existing applets can actually shrink over time. The project has also adopted the rule that any new feature that adds size has a configuration option to remove it at compile time.

Building BusyBox is fairly straightforward, the process has been modeled after the Linux kernel build method. The build process involves extracting the source, configuring with a linux-style "make menuconfig" command, then running make and make install. Other make options include: "make defconfig" to enable all standard features, "make allnoconfig" to start with everything disabled, and "make oldconfig" for dealing with previously used .config files. From menuconfig, each applet is independently selectable. Many applets have sub-features that can be disabled to save space. Cross-compiling is regularly tested with targets set to popular embedded processors and the x86-64 platform.

Project History

BusyBox was started in 1996 by Debian's then-maintainer Bruce Perens, as part of the Debian boot/rescue floppy disk project. In 1999, Erik Andersen saw potential for BusyBox beyond the Debian boot disk, rewrote the project extensively, and over the next few years built an active development community around it. During this time Erik similarly rewrote and built a development community around uClibc. As embedded Linux grew in importance, both projects became more time consuming. After the BusyBox 1.00 release, Erik focused on uClibc (which is still pre-1.0) and handed off BusyBox maintainership to me, I am currently trying to take over the world with it.

Taking over the world involves making BusyBox a good choice for use in general purpose Linux servers and workstations as well as its traditional role in embedded systems. For example, our completely rewritten bunzip2 code is not only 1/10th the size of the standard implementation, but also 10% faster. Our udev replacement (mdev) is much easier to configure, and in some cases can be used without any configuration file at all. Our mount command was the first to autodetect attempts to mount image files, so specifying "-o loop" became optional. Space-constrained environments like bootable CDs, or the One Laptop Per Child project could especially benefit from BusyBox.

The future goals of BusyBox include making the code even smaller, improving support for systems with no memory management unit, adding a test suite and adding the ability to make standalone versions of individual applets.

Comments (2 posted)

System Applications

Database Software

SQLite 3.3.6 released

Version 3.3.6 of SQLite, a C library that implements an SQL database engine, is out. "Changes include improved tolerance for windows virus scanners and faster :memory: databases. There are also fixes for several obscure bugs. Upgrade if you are having problems."

Comments (none posted)

LDAP Software

LAT 1.1.3 announced

Version 1.1.3 of LAT, the LDAP Administration Tool, is out. "This release is the 4th of the 1.1.x development cycle which will eventually become v1.2. If you need a stable release stick with the 1.0 branch."

Full Story (comments: none)

Mail Software

Apache SpamAssassin 3.0.6 is out

Version 3.0.6 of Apache SpamAssassin is available. "3.0.6 fixes a remote code execution vulnerability if spamd is run with the "--vpopmail" and "-P" options. If either/both of those options are not used, there is no vulnerability."

Full Story (comments: none)

Apache SpamAssassin 3.1.3 is out

Version 3.1.3 of Apache SpamAssassin has been announced. "3.1.3 fixes a remote code execution vulnerability if spamd is run with the "--vpopmail" and "-P" options. If either/both of those options are not used, there is no vulnerability. There was also a fix for the userstate directory and prefs file not being created."

Full Story (comments: none)

Printing

Debugging SNMP Printer Detection Problems (CUPS)

The folks at the CUPS printing project have published a tutorial on debugging SNMP-related printing problems. "The new SNMP network printer detection functionality in CUPS 1.2 sometimes exposes problems in vendor SNMP or IPP implementations. If you are experiencing long delays in loading the CUPS web interface administration page, or if you don't see your printer listed, the following instructions will help you to diagnose those problems and/or provide important feedback to the CUPS developers so that we can correct problems and improve the SNMP backend in future releases."

Comments (none posted)

Web Site Development

mnoGoSearch 3.2.39 announced

Version 3.2.39 of mnoGoSearch, a web site search engine, is out. See the change history document for details.

Comments (none posted)

Plone 2.1.3 released

Version 2.1.3 of the Plone web development platform has been released. "Although they didn't manage to quite time to sync up with the Ubuntu Dapper Drake release ;-), it's very exciting to report the release of Plone 2.1.3, which bundles up four months of bug fixes, usability enhancements and performance tweaks."

Comments (none posted)

Desktop Applications

Audio Applications

Instability of Ardour 2.0 solved, 6 weeks of effort pays off!

A tough bug has been fixed in Ardour, a multi-track audio recording application. See the problem report for details. "Sometimes when you write a complex piece of software like Ardour you are faced with a series of high level, interesting and complex design questions. Unfortunately, its also true that at other times you will be faced with problems that exist at the deepest levels of the software and are often trivial in their extent yet major in their impact. Such has recently been the case with Ardour 2.0, which would not run with any reasonable stability when built with recent versions of the GTK+ GUI toolkit. One Ardour developer (and user), Sampo Savolainen, spent more than 6 weeks debugging this, and just recently got to the bottom of the problem. The error was a single line of code in GTK itself, and manifested in Ardour only because we made a call to a function that was never actually needed."

Comments (none posted)

Data Visualization

Grace 5.1.20 released

Version 5.1.20 of Grace, a WYSIWYG 2D plotting tool for X11 and Motif, has been announced. Changes include a new SGN() function, changes to the tick spacing, and bug fixes.

Comments (none posted)

Desktop Environments

GNOME 2.14.2 Released (GnomeDesktop)

GNOME 2.14.2 has been announced. "This is the second release in a series of point releases for the 2.14 branch. Come and see all the bug fixing, all the new translations and all the updated documentation brought to you by the wonderful team of GNOME contributors! While development has started on the Gnome 2.15/2.16 road, work on the stable branch continues to make it even more solid."

Comments (none posted)

GARNOME 2.14.2 is out

Release 2.14.2 of GARNOME, the bleeding edge GNOME distribution, is out. "This release incorporates the GNOME 2.14.2 Desktop and Developer Platform, fine-tuned and updated with love by the GARNOME Team."

Full Story (comments: none)

GNOME Software Announcements

The following new GNOME software has been announced this week: You can find more new GNOME software releases at gnomefiles.org.

Comments (none posted)

KDE 3.5.3 Released (KDE.News)

Version 3.5.3 of the K Desktop Environment (KDE) has been announced. "The KDE Project today announced the immediate availability of KDE 3.5.3, a maintenance release for the latest generation of the most advanced and powerful free desktop for GNU/Linux and other UNIXes. Unusually for a maintenance release, new features were implemented due to the long release cycle of the eagerly-awaited KDE 4. Stability and speed were also improved, along with increasingly complete translations in 65 languages." See the release announcement for more information.

Comments (2 posted)

KDE Commit-Digest (KDE.News)

The June 4, 2006 edition of the KDE Commit-Digest has been announced. The content summary says: "Kopete 0.12 is released after 10 months of development. Usability fixes in RSIBreak and experiments in amaroK. Common KOffice color management initiative - "pigment" - started. User interface optimisations in Adept package manager. KDE 4 changes: DCOP is finally removed from trunk/. The KDE 4 icon theme, Oxygen, is imported into KDE SVN."

Comments (none posted)

KDE Software Announcements

The following new KDE software has been announced this week: You can find more new KDE software releases at kde-apps.org.

Comments (none posted)

Electronics

Covered 20060530 is out

Release 20060530 of Covered, a Verilog code coverage analysis utility, has been announced. Here are the changes: "Contains FSM state/arc coverage info in GUI. Contains assertion coverage info in GUI and ASCII output files. Contains GUI syntax highlighter. Allows multiple files to be merged with a single call to the merge command. Lots of bug fixes/enhancements/documentation updates."

Comments (none posted)

XCircuit 3.4.24 released

Stable version 3.4.24 of XCircuit, an electronic circuit drawing program, is available with build improvements.

Comments (none posted)

GUI Packages

OpenExposition 0.2.0 released

Version 0.2.0 of OpenExposition has been announced. "OpenExposition is a library aimed at automatic generation of user interfaces. The programmer only needs to specify what parts of the code need to be exposed to the user, and OpenExposition does the rest. Currenly, OpenExposition allows access to variables (either directly or through a pair of set/get methods), and class methods. It can construct the user interface graphically (using either the multi-platform FLTK library or Cocoa on Mac OS X), programatically (through Python), and aurally (using the speech synthesis and recognition capabilities on Mac Os X). The 0.2.0 release introduces a separation of C++ and Objective C files, so that C++ only environments don't have to deal with Objective-C++ .mm files. Also, the automatic GUI construction has been slightly improved."

Comments (none posted)

Imaging Applications

GIMP 2.3.9 Development Release (GnomeDesktop)

Development Release 2.3.9 of the GIMP has been announced. "GIMP 2.3.9 is the latest and hopefully one of the last development snapshots on the way to version 2.4 of the GNU Image Manipulation Program. The source code can be downloaded from ftp.gimp.org. There are quite a number of changes, all listed at developer.gimp.org."

Comments (none posted)

Interoperability

Wine 0.9.14 released

Version 0.9.14 of Wine has been announced. The list of changes includes: Better MS/RPC compatibility, Many fixes to Direct3D shaders, Several improvements to the header control and Lots of bug fixes.

Comments (none posted)

Wine Weekly Newsletter

Issue #315 of the Wine Weekly Newsletter has been published. Topics include: Summer of Code, Picasa, MacOS X Audio & Video Drivers, 1.0 Tasks, How Are We Doing?, WoW - Breakage, Updated Fedora Packages, and Shell Integration and RSS Feed.

Comments (none posted)

Office Suites

KOffice 2.0, The Vision (KDE.News)

KDE.News looks ahead to KOffice 2.0. "KOffice is working on its future, one based on KDE4. KOffice is starting new initiatives with libraries like Flake and Pigment that are going to be used for all KOffice applications. For the users of KOffice those changes are invisible until the 2.0 previews actually start to appear some months from now. Therefore the KOffice crew wants to show you their goals of what KOffice 2 is going to look like."

Comments (4 posted)

OpenOffice.org Newsletter

The May, 2006 edition of the OpenOffice.org Newsletter is online with the latest OO.o office suite articles and events.

Full Story (comments: none)

Miscellaneous

SeaMonkey 1.0.2, Firefox 1.5.0.4 and Thunderbird 1.5.0.4

New versions of SeaMonkey, Mozilla Firefox and Mozilla Thunderbird have been released with security and stability fixes. Here's the SeaMonkey announcment and release notes. Here's a look at the security issues fixed in Mozilla Firefox 1.5.0.4 and the release notes. Here is the security summary and release notes for Mozilla Thunderbird 1.5.0.4.

Comments (none posted)

Languages and Tools

Caml

Caml Weekly News

The June 6, 2006 edition of the Caml Weekly News is out with new Caml language articles.

Full Story (comments: none)

JSP

Working with the Google Web Toolkit (O'ReillyNet)

Robert Cooper looks at the Google Web Toolkit in an O'Reilly article. "GWT is, in essence, a JavaScript generator. The interesting thing is what this JavaScript is generated from: Java. GWT takes Java code written against a special API and converts it into browser-runnable Ajax code. If that weren't enough to make it cool, it also includes a test harness that will execute the Java code inline with a test browser, allowing you to step-through debug, profile and unit test your Ajax front end in your favorite IDE or at the command line."

Comments (2 posted)

Perl

FEAR-less Site Scraping (O'Reilly)

Yung-chung Lin uses Perl to automate the reading of web pages in an O'Reilly article. "Imagine that you have an assignment that you need to fetch all of the web pages of a given website, scrape data from them, and transfer the data to another place, such as a database or plain files. This is a common scenario for data scraping tasks, and CPAN has plenty of modules for this job. While I was developing site-scraping scripts, retrieving data from some sites of the same type, I realized that I had repeated many identical or very similar code structures..."

Comments (none posted)

PHP

PHP OpenID 1.1.0 released

Version 1.1.0 of the PHP OpenID library is out with bug fixes.

Full Story (comments: none)

PHP Standalone OpenID Server 1.0 announced

Initial release version 1.0 of the PHP Standalone OpenID Server is available. "This server uses the JanRain PHP OpenID library (version 1.1.0). The server supports admin-controlled and public account creation, Yadis discovery, and Simple Registration. MySQL is required."

Full Story (comments: none)

PHP Yadis 1.0.0 released

Version 1.0.0 of the PHP Yadis library is out with an XRDS-processing fix.

Full Story (comments: none)

Python

Dr. Dobb's Python-URL!

The June 7, 2006 edition of Dr. Dobb's Python-URL! is online with a new collection of Python article links.

Full Story (comments: none)

Ruby

Ruby Weekly News

The June 4th, 2006 edition of the Ruby Weekly News looks at the latest discussions on the ruby-talk mailing list.

Comments (none posted)

Tcl/Tk

Dr. Dobb's Tcl-URL!

The June 5, 2006 edition of Dr. Dobb's Tcl-URL! is online with new Tcl/Tk articles and resources.

Full Story (comments: none)

XML

Converting Between XML and JSON (O'Reilly)

Stefan Goessner discusses the conversion between XML and JSON (JavaScript Object Notation) in an O'Reilly article. "More and more web service providers seem to be interested in offering JSON APIs beneath their XML APIs. One considerable advantage of using a JSON API is its ability to provide cross-domain requests while bypassing the restrictive same domain policy of the XmlHttpRequest object. On the client-side, JSON comes with a native language-compliant data structure, with which it performs much better than corresponding DOM calls required for XML processing. Finally, transforming JSON structures to presentational data can be easily achieved with tools such as JSONT."

Comments (1 posted)

Page editor: Forrest Cook
Next page: Linux in the news>>


Copyright © 2006, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds