LWN Weekly Edition Front pageSecurity Kernel development Distributions Development Linux in the news Announcements ->One big page
This page Previous weekFollowing week Sponsored link Serve your customers, not your servers, with VERIO Linux VPS. Full-access test-drive here. |
DevelopmentThe current state of the BusyBox project 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 HistoryBusyBox 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.
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."
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."
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."
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."
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."
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.
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."
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."
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.
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."
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."
GNOME Software Announcements The following new GNOME software has been announced this week:
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.
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."
KDE Software Announcements The following new KDE software has been announced this week:
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."
XCircuit 3.4.24 released Stable version 3.4.24 of XCircuit, an electronic circuit drawing program, is available with build improvements.
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."
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."
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.
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.
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."
OpenOffice.org Newsletter The May, 2006 edition of the OpenOffice.org Newsletter is online with the latest OO.o office suite articles and events.
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.
Languages and Tools Caml Caml Weekly News The June 6, 2006 edition of the Caml Weekly News is out with new Caml language articles.
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."
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..."
PHP PHP OpenID 1.1.0 released Version 1.1.0 of the PHP OpenID library is out with bug fixes.
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."
PHP Yadis 1.0.0 released Version 1.0.0 of the PHP Yadis library is out with an XRDS-processing fix.
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.
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.
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.
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."
Page editor: Forrest Cook |
Copyright © 2006, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds
Powered by Rackspace Managed Hosting.