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
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
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
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)
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
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
Version 3.2.39 of
mnoGoSearch,
a web site search engine, is out. See the
change history document for details.
Comments (none posted)
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
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
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
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)
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)
The following new GNOME software has been announced this week:
You can find more new GNOME software releases at
gnomefiles.org.
Comments (none posted)
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)
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)
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
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)
Stable version 3.4.24 of
XCircuit,
an electronic circuit drawing program, is available with build improvements.
Comments (none posted)
GUI Packages
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
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
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)
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
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)
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
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
The June 6, 2006 edition of the Caml Weekly News
is out with new Caml language articles.
Full Story (comments: none)
JSP
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
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
Version 1.1.0 of the PHP OpenID library is out with bug fixes.
Full Story (comments: none)
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)
Version 1.0.0 of the PHP Yadis library is out with an XRDS-processing fix.
Full Story (comments: none)
Python
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
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
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
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>>