BusyBox
Logo | |
Original author(s) | Bruce Perens |
---|---|
Developer(s) | Erik Andersen,[1] Rob Landley,[2] Denys Vlasenko[3] and others |
Initial release | November 4, 1999[4] |
Stable release | 1.19.3
/ October 29, 2011 |
Repository | |
Written in | C |
Operating system | Unix-like |
Type | Independent SUSp XCU implementation |
License | GNU General Public License |
Website | www |
BusyBox provides several stripped-down Unix tools in a single executable. It runs in a variety of POSIX environments such as Linux, Android,[5] FreeBSD[6] and others, such as proprietary kernels, although many of the tools it provides are designed to work with interfaces provided by the Linux kernel. It was specifically created for embedded operating systems with very limited resources. It has been self-dubbed "The Swiss Army Knife of Embedded Linux".[7] It is released as free software under the terms of the GNU General Public License.[8]
In late 2007, BusyBox also came to prominence for actively prosecuting violations of the terms of its license (the GPL) in US courts.
History
Originally written by Bruce Perens in 1995 and declared complete for his intended usage in 1996[9], BusyBox's original purpose was to put a complete bootable system on a single floppy that would be both a rescue disk and an installer for the Debian distribution. Since that time it has been extended to become the de facto standard core userspace toolset for embedded Linux devices and Linux distribution installers. Since each Linux executable requires several kilobytes of overhead, having the BusyBox program combine over two hundred programs together often saves substantial disk space and system memory.
BusyBox was maintained by Enrique Zanardi and focused on the needs of the Debian boot-floppies installer system until early 1998, when it was taken over by Dave Cinege for The Linux Router Project (LRP). Cinege made several additions, created a modularized build environment, and shifted BusyBox's focus into general high level embedded systems. As LRP development slowed down in 1999, Erik Andersen, then of Lineo, Inc., took over the project and was the official maintainer between December 1999 and March 2006. During this time the Linux embedded marketplace exploded in growth, and BusyBox matured greatly, expanding both its user base and functionality. Rob Landley became the maintainer in 2005 and continued for several years.
Denys Vlasenko is the current maintainer of BusyBox.
Features
BusyBox can be customized to provide a subset of over two hundred utilities. It can provide most of the utilities specified in the Single Unix Specification (SUS) plus many others that a user would expect to see on a Linux system. BusyBox uses the ash shell.[10][11]
A full list of the utilities implemented can be found on the BusyBox website.[12]
Single binary
Typical computer programs have a separate binary (executable) file for each application. BusyBox is a single binary, which is a conglomerate of many applications, each of which can be accessed by calling the single BusyBox binary with various names (supported by having a symbolic link or hard link for each different name)[13] in a specific manner with appropriate arguments.
BusyBox benefits from the single binary approach as it reduces the overheads introduced by the executable file format (typically ELF), and it allows code to be shared between multiple applications without requiring a library. This technique is similar to what is provided by the crunchgen[14] command in FreeBSD. However, BusyBox provides simplified versions of the utilities (for example, an ls command without file sorting ability), while a crunchgen generated sum of all the utilities would offer the fully functional versions.
Sharing of the common code, along with routines written with size-optimization in mind, enables a BusyBox system to be much smaller than a system built with the corresponding full versions of the utilities replaced by BusyBox. Research[15] which compared GNU, Busybox, asmutils and Perl implementations of the standard Unix commands show that in some situations BusyBox may perform faster than other implementations, but not always.
Examples
Programs included in BusyBox can be run simply by adding their name as an argument to the BusyBox executable:
/bin/busybox ls
More commonly, the desired command names are linked (using hard or symbolic links) to the BusyBox executable; BusyBox notices the name it is called as, and runs the appropriate command, for example just
/bin/ls
after /bin/ls is linked to /bin/busybox.
Commands
- ash
- awk
- cat
- chmod
- cp - copy
- date
- dd - Copy a file with converting and formatting
- df - Print filesystem usage statistics
- dmesg
- echo
- egrep
- fgrep
- grep - Search for PATTERN in each FILE or standard input
- gunzip
- gzip
- kill - Kill a process
- ln - Create a link named LINK_NAME or DIRECTORY to the specified TARGET.
- login - Begin a new session on the system
- ls - list of files or folders
- mdu
- mkdir - Create a folder
- more - View FILE or standard input one screen full at a time, not long list to scroll
- mount
- mv - move file
- netstat - Display networking information
- ntpc
- ntpsync
- nvram
- pidof - List PIDs of all processes with names that match NAMEs
- ping - Send ICMP ECHO_REQUEST packets to network hosts
- ps - Report process status
- pwd - print working directory
- rm - erase file
- rmdir - remove directory
- rstats - copyright of BusyBox
- sed - script to interpret from file or input
- sh
- sleep
- sync - Write all buffered file system blocks to disk
- tar
- touch - Update the last-modified date on the given FILE[s]
- umount
- uname
- usleep - Pause for N [microseconds]
- vi - Edit FILE
- watch - Execute a program periodically
- zcat - Uncompress to stdout
Appliances
This section needs additional citations for verification. (September 2008) |
It is very common to find BusyBox used in Linux-based appliances, examples of which include:
- Actiontec GT701 DSL Modem/Router (GT701-WG Wireless DSL Modem/Router) bundled mostly with Qwest DSL and the GT704-WG Wireless DSL Modem/Router frequently bundled with Verizon DSL.
- Actiontec M1000 DSL Modem/Router, bundled mostly with Qwest DSL.
- Amino (IP TV Set Top Boxes)
- Actiontec MI424WR MoCA wireless router, bundled mostly with Verizon FiOS.
- Amazon Kindle book reader
- ASUS wireless broadband router, Asus WL-500g, AM604G.
- AVM GmbH FRITZ!Box DSL routers
- Aztech DSL605EW wireless DSL broadband router
- BT Home Hub
- D-Link DSL-500B, DSL-502T, DSL-504T, DSL-524T, DSL-564T, DSL-584T, DSL2500U, DSL2540U, DSL2640U, DSL-2640T, DSL-2730U, DSL-G604T, DSL-G624T, DSL-G664T and DSL-G684T
- Dream Multimedia's Dreambox, a hobbyist DVB receiver.
- Dynamix UM-A4+ ADSL router
- Edimax EW-7206APg Wifi Access Point
- Emprex ME1 HD Multimedia Enclosure
- Freebox a DSL Modem/Router distributed by Free, a French ISP
- Gamepark Holdings GP2X open-source Linux game player
- HP Media Vault
- Humax set top boxes[16]
- Huwaei HG556a (Vodafone Branded)
- IBM Hardware Management Console (HMC)
- Lacie Ethernet Big Disk 1TB. [2]
- Leapfrog Didj Educational Handheld Gaming system
- LevelOne [3] WBR-3460A
- Linksys NSLU2 NAS and WRT54G router.
- Motorola A780
- Motorola ZINE ZN5
- Mvix MX-760HD Media Player
- Netcomm NB1 ADSL Modem
- Netgear DG834G router
- Neuros OSD MPEG Video Recorder
- Nokia 770, Nokia N800, Nokia N810, Nokia N900 and Nokia N9.
- OvisLink WL-5460AP WiFi AccessPoint and Evo-DSL04 Modem/Router ADSL2+.
- Openmoko
- Open Networks iConnect612 ADSL router
- Palm Pre
- Philips RC9800i universal remote control
- Picotux, advertised as the smallest computer running Linux in the world.
- QNAP TS-101 and TS-201 NAS
- Qtopia Greenphone
- Sharp Zaurus
- Sonos Digital Music System
- Sony DHG-HDD250 and DHG-HDD500 Digital Video Recorders
- StarDot NetcamSC networked camera
- Synology NAS
- Telindus 1130 ADSL Router
- Thecus NAS
- Thermaltake Muse NAS
- TP-Link TD-88xx ADSL Routers
- TViX DVICO M-6500
- VMware ESXi
- Western Digital My Book
- Wireless routers running DD-WRT
- Template:Dab button video slot machines
- Zipit Wireless Messenger
A more complete list can be found on the official website (see external links below).
GPL lawsuits
What was claimed to be the first US lawsuit over a GPL violation concerned use of BusyBox in an embedded device. The lawsuit,[17] case 07-CV-8205 in the United States District Court for the Southern District of New York was filed on 20 September 2007 by the Software Freedom Law Center (SFLC) on behalf of Andersen and Landley against Monsoon Multimedia Inc., after BusyBox code was discovered in a firmware upgrade and attempts to contact the company had apparently failed. The case was settled with release of the Monsoon version of the source and payment of an undisclosed amount of money to Andersen and Landley.[18]
On 21 November 2007, the SFLC brought two similar lawsuits on behalf of Andersen and Landley against two more companies, Xterasys (case 07-CV-10456) and High-Gain Antennas (case 07-CV-10455).[19][20] The Xterasys case was settled on December 17 for release of source code used and an undisclosed payment,[21] and the High-Gain Antennas case on March 6, 2008 for active license compliance and an undisclosed payment.[22] On 7 December 2007, a case was brought against Verizon Communications over its distribution of firmware for Actiontec routers;[23][24] this case was settled March 17, 2008 on condition of license compliance, appointment of an officer to oversee future compliance with free software licenses, and payment of an undisclosed sum.[25] Further suits were brought on June 9, 2008 against Bell Microproducts (case 08-CV-5270) and Super Micro Computer (case 08-CV-5269),[26] the Super Micro case being settled on 23 July 2008.[27] BusyBox and Bell Microproducts also settled out of court on 17 October.[28]
On December 14, 2009, a new lawsuit was filed naming fourteen defendants including Best Buy, JVC, Samsung and others.[29]
On about Aug 03, 2010, BusyBox won triple damages of $90,000 and lawyers' costs and fees of $47,865, and possession of "presumably a lot of high-def TVs" as infringing equipment in the lawsuit Software Freedom Conservancy v. Best Buy, etal., the GPL infringement case noted in the paragraph above.[30]
No other developers, including original author Bruce Perens and long time maintainer Dave Cinege, were represented in these actions or party to the settlements. On Dec. 15, 2009, Perens released a statement expressing his unhappiness with some aspects of the legal situation, and in particular alleged that the current BusyBox developers "appear to have removed some of the copyright statements of other Busybox developers, and appear to have altered license statements".[31]
Notes
- ^ Erik Andersen's Homepage
- ^ Active Projects, Rob Landley's website
- ^ Denys Vlasenko, BusyBox maintainer
- ^ http://www.softwarefreedom.org/resources/2009/busybox-complaint-2009-12-14.pdf
- ^ https://market.android.com/details?id=stericson.busybox&hl=en
- ^ http://portsmon.freebsd.org/portoverview.py?category=sysutils&portname=busybox
- ^ http://www.busybox.net/downloads/BusyBox.html The self-dubbed slogan for 'The Swiss Army Knife of Embedded Linux' source. The slogan is right under the header.
- ^ Busy Box Licence
- ^ http://busybox.net/~landley/forensics.txt
- ^ http://busybox.net/cgi-bin/viewcvs.cgi/trunk/busybox/shell/Config.in?rev=11083 The 'ash' shell adds about 60k in the default configuration and is the most complete and most pedantically correct shell included with BusyBox. This shell is actually a derivative of the Debian 'dash' shell (by Herbert Xu), which was created by porting the 'ash' shell(written by Kenneth Almquist) from NetBSD.
- ^ ash variants
- ^ BusyBox - The Swiss Army Knife of Embedded Linux
- ^ http://www-128.ibm.com/developerworks/library/l-busybox/index.html
- ^ crunchgen man page at freebsd.org
- ^ Doug Thayer, Keith Miller (16–17 April 2004). "Four UNIX Programs in Four UNIX Collections: Seeking Consistency in an Open Source Icon" (PDF). Proceedings of Midwest Instruction and Computing Symposium. University of Minnesota, Morris.
{{cite conference}}
: Unknown parameter|booktitle=
ignored (|book-title=
suggested) (help) - ^ www.humaxdigital.com/global/products/opensource
- ^ On Behalf of BusyBox Developers Andersen and Landley, SFLC Files First Ever U.S. GPL Violation Lawsuit (Software Freedom Law Center 20 September 2007)
- ^ Settlement reached in Busybox-Monsoon GPL case (Bruce Byfield, Linux.com, 30 October 2007)
- ^ Linux legal team sues over GPL violations (Martin LaMonica, CNET News.com, 21 November 2007)
- ^ SFLC press release
- ^ SFLC press release
- ^ BusyBox Developers and High-Gain Antennas Agree to Dismiss GPL Lawsuit (SFLC press release)
- ^ Open-source legal group strikes again on BusyBox, suing Verizon (Grant Gross, Computerworld, Dec 7 2007)
- ^ SFLC press release
- ^ Verizon Settles Open Source Software Lawsuit (Paul McDougell, InformationWeek, March 17, 2008)
- ^ SFLC Files Another Round of GPL Violation Lawsuits on Behalf of BusyBox Developers (SFLC press release)
- ^ BusyBox Developers and Supermicro Agree to End GPL Lawsuit: Good Faith Discussions Result in Dismissal of Copyright Infringement Case (SFLC press release)
- ^ 2008. Andersen v. Bell Microproducts, Inc., No. 08-cv-5270, Doc. No. 16 (S.D.N.Y. Oct. 17, 2008) (notice of voluntary dismissal)
- ^ http://news.cnet.com/8301-1001_3-10415270-92.html?tag=nl.e703 Best Buy, Samsung, Westinghouse, 11 more named in GPL lawsuit
- ^ [1] (WWW.Groklaw.net)
- ^ Bruce Perens, "Statement on Busybox lawsuits", perens.com (December 15, 2009).
External links
- Project home page
- Products known to be using BusyBox
- Building Tiny Linux Systems with BusyBox
- Busybox simplifies embedded Linux systems a developerWorks article by M. Tim Jones