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 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.
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.
Database SoftwareSQLite, 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."
LDAP SoftwareThis 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."
Mail Software3.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." 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."
Printinga 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."
Web Site DevelopmentmnoGoSearch, a web site search engine, is out. See the change history document for details. 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."
Audio Applicationsproblem 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."
Data VisualizationGrace, 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.
Desktop Environmentshas 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." This release incorporates the GNOME 2.14.2 Desktop and Developer Platform, fine-tuned and updated with love by the GARNOME Team."
Electronicshas 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." XCircuit, an electronic circuit drawing program, is available with build improvements.
GUI Packageshas 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."
Imaging Applicationshas 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."
Interoperabilityhas 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. 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.
Office Suiteslooks 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."
MiscellaneousSeaMonkey announcment and release notes. Here's a look at the security issues fixed in Mozilla Firefox 18.104.22.168 and the release notes. Here is the security summary and release notes for Mozilla Thunderbird 22.214.171.124.
Languages and Tools
Perluses 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..."
PHPThis 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."
RubyRuby Weekly News looks at the latest discussions on the ruby-talk mailing list.
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