BusyBox: Difference between revisions

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
imported>BunnysBot
 
imported>Deltaspace42
 
Line 1: Line 1:
{{Short description|Collection of Unix tools in single executable file}}
{{Short description|Collection of Unix commands in a single executable file}}
{{Short description |Collection of Unix commands in single executable file}}
{{use mdy dates|date=January 2021}}
{{use mdy dates|date=January 2021}}
{{Infobox software
{{Infobox software
Line 20: Line 21:
| genre                = {{unbulleted list|[[Linux on embedded systems]]|[[Linux for mobile devices]]}}
| genre                = {{unbulleted list|[[Linux on embedded systems]]|[[Linux for mobile devices]]}}
| license              = Since 1.3.0: [[GNU General Public License|GPL-2.0-only]]<ref name="busybox1">{{cite web|url=https://www.busybox.net/license.html|title=BusyBox|access-date=February 23, 2018|archive-date=February 24, 2018|archive-url=https://web.archive.org/web/20180224052830/https://www.busybox.net/license.html|url-status=live}}</ref><br />Until 1.2.2.1: [[GNU General Public License|GPL-2.0-or-later]]<ref>{{cite web|url=https://busybox.net/downloads/busybox-1.2.2.1.tar.bz2|title=busybox-1.2.2.1.tar.bz2|quote=From changelog: ''This is the last release of BusyBox under the old "GPLv2 or later" dual license. Future versions (containing changes after svn 16112) will just be GPLv2 only, without the "or later".''|access-date=June 29, 2021|archive-date=March 31, 2022|archive-url=https://web.archive.org/web/20220331151158/https://busybox.net/downloads/busybox-1.2.2.1.tar.bz2|url-status=live}}</ref>
| license              = Since 1.3.0: [[GNU General Public License|GPL-2.0-only]]<ref name="busybox1">{{cite web|url=https://www.busybox.net/license.html|title=BusyBox|access-date=February 23, 2018|archive-date=February 24, 2018|archive-url=https://web.archive.org/web/20180224052830/https://www.busybox.net/license.html|url-status=live}}</ref><br />Until 1.2.2.1: [[GNU General Public License|GPL-2.0-or-later]]<ref>{{cite web|url=https://busybox.net/downloads/busybox-1.2.2.1.tar.bz2|title=busybox-1.2.2.1.tar.bz2|quote=From changelog: ''This is the last release of BusyBox under the old "GPLv2 or later" dual license. Future versions (containing changes after svn 16112) will just be GPLv2 only, without the "or later".''|access-date=June 29, 2021|archive-date=March 31, 2022|archive-url=https://web.archive.org/web/20220331151158/https://busybox.net/downloads/busybox-1.2.2.1.tar.bz2|url-status=live}}</ref>
| website              = {{URL|https://busybox.net}}
| website              = {{official url}}
}}
}}


'''BusyBox''' is a [[software suite]] that provides several [[List of Unix commands|Unix utilities]] in a single [[executable file]]. It runs in a variety of [[POSIX]] environments such as [[Linux]], [[Android (operating system)|Android]],<ref>{{cite web|url=https://play.google.com/store/apps/details?id=busybox.lite&hl=en|title=BusyBox Classic|author=BitCubate X|access-date=August 8, 2017|archive-date=October 27, 2022|archive-url=https://web.archive.org/web/20221027123436/https://play.google.com/store/apps/details?id=busybox.lite&hl=en|url-status=live}}</ref> and [[FreeBSD]],<ref>{{cite web|url=https://www.freshports.org/sysutils/busybox|title=Port details|access-date=September 27, 2024|archive-date=July 9, 2023|archive-url=https://web.archive.org/web/20230709003127/https://www.freshports.org/sysutils/busybox/|url-status=live}}</ref> 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. The authors dubbed it "The [[Swiss Army knife]] of [[Linux on embedded systems|Embedded Linux]]",<ref>{{Cite web |url=https://www.busybox.net/about.html |title=The slogan for 'The Swiss Army Knife of Embedded Linux' source |access-date=February 23, 2018 |archive-date=February 24, 2018 |archive-url=https://web.archive.org/web/20180224052828/https://www.busybox.net/about.html |url-status=live }}</ref> as the single executable replaces basic functions of more than 300 common commands. It is released as [[free software]] under the terms of the [[GNU General Public License|GNU General Public License v2]],<ref name="busybox1"/> after controversially deciding not to move to [[GNU General Public License#Version 3|version 3]].
'''BusyBox''' is an implementation of many [[List of Unix commands |Unix commands]] in a single [[executable file]]. It runs in many [[POSIX]] environments including [[Linux]], [[Android (operating system)|Android]],<ref>{{cite web|url=https://play.google.com/store/apps/details?id=busybox.lite&hl=en|title=BusyBox Classic|author=BitCubate X|access-date=August 8, 2017|archive-date=October 27, 2022|archive-url=https://web.archive.org/web/20221027123436/https://play.google.com/store/apps/details?id=busybox.lite&hl=en|url-status=live}}</ref> and [[FreeBSD]],<ref>{{cite web|url=https://www.freshports.org/sysutils/busybox|title=Port details|access-date=September 27, 2024|archive-date=July 9, 2023|archive-url=https://web.archive.org/web/20230709003127/https://www.freshports.org/sysutils/busybox/|url-status=live}}</ref> 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. The authors dubbed it "The [[Swiss Army knife]] of [[Linux on embedded systems|Embedded Linux]]",<ref>{{Cite web |url=https://www.busybox.net/about.html |title=The slogan for 'The Swiss Army Knife of Embedded Linux' source |access-date=February 23, 2018 |archive-date=February 24, 2018 |archive-url=https://web.archive.org/web/20180224052828/https://www.busybox.net/about.html |url-status=live }}</ref> as the single executable replaces basic functions of more than 300 common commands. It is released as [[free software]] under the terms of the [[GNU General Public License|GNU General Public License v2]],<ref name="busybox1"/> after controversially deciding not to move to [[GNU General Public License#Version 3|version 3]].


== History ==
== History ==
Line 37: Line 38:
Since October 2006, Denys Vlasenko has taken over maintainership of BusyBox from Rob Landley, who has started [[Toybox]], also as a result of the license controversies.<ref name="busybusy"/><ref>{{cite mailing list | url = https://lwn.net/Articles/202120/ | title = I'm going out now. I may be some time | mailing-list = busybox | date = 2006-09-30 | last = Landley | first = Robert | access-date = July 21, 2016 | archive-date = July 18, 2016 | archive-url = https://web.archive.org/web/20160718121452/http://lwn.net/Articles/202120/ | url-status = live }}</ref>
Since October 2006, Denys Vlasenko has taken over maintainership of BusyBox from Rob Landley, who has started [[Toybox]], also as a result of the license controversies.<ref name="busybusy"/><ref>{{cite mailing list | url = https://lwn.net/Articles/202120/ | title = I'm going out now. I may be some time | mailing-list = busybox | date = 2006-09-30 | last = Landley | first = Robert | access-date = July 21, 2016 | archive-date = July 18, 2016 | archive-url = https://web.archive.org/web/20160718121452/http://lwn.net/Articles/202120/ | url-status = live }}</ref>


=== GPL lawsuits ===
==== GPL lawsuits ====
In late 2007, BusyBox also came to prominence for actively prosecuting violations of the terms of its license (the GPL) in the [[United States District Court for the Southern District of New York]].<ref name="softwarefreedom2007">[http://www.softwarefreedom.org/news/2007/sep/20/busybox/ On Behalf of BusyBox Developers Andersen and Landley, SFLC Files First Ever U.S. GPL Violation Lawsuit] {{Webarchive|url=https://web.archive.org/web/20071006013510/http://www.softwarefreedom.org/news/2007/sep/20/busybox/ |date=October 6, 2007 }} (Software Freedom Law Center September 20, 2007)</ref>
In late 2007, BusyBox also came to prominence for actively prosecuting violations of the terms of its license (the GPL) in the [[United States District Court for the Southern District of New York]].<ref name="softwarefreedom2007">[http://www.softwarefreedom.org/news/2007/sep/20/busybox/ On Behalf of BusyBox Developers Andersen and Landley, SFLC Files First Ever U.S. GPL Violation Lawsuit] {{Webarchive|url=https://web.archive.org/web/20071006013510/http://www.softwarefreedom.org/news/2007/sep/20/busybox/ |date=October 6, 2007 }} (Software Freedom Law Center September 20, 2007)</ref>


What was claimed to be the first US [[lawsuit]] over a GPL violation concerned use of BusyBox in an [[Embedded system|embedded device]]. The lawsuit,<ref name="softwarefreedom2007"/> case 07-CV-8205, was filed on September 20, 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.<ref>{{cite web|url=http://www.linux.com/feature/120629 |title=Settlement reached in Busybox-Monsoon GPL case |archive-url=https://web.archive.org/web/20080924170713/http://www.linux.com/feature/120629 |archive-date=2008-09-24 |url-status=dead |first=Bruce |last=Byfield |work=Linux.com |date=October 30, 2007}}</ref>
What was claimed to be the first US [[lawsuit]] over a GPL violation concerned the use of BusyBox in an [[Embedded system|embedded device]]. The lawsuit,<ref name="softwarefreedom2007"/> case 07-CV-8205, was filed on September 20, 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.<ref>{{cite web|url=http://www.linux.com/feature/120629 |title=Settlement reached in Busybox-Monsoon GPL case |archive-url=https://web.archive.org/web/20080924170713/http://www.linux.com/feature/120629 |archive-date=2008-09-24 |url-status=dead |first=Bruce |last=Byfield |work=Linux.com |date=October 30, 2007}}</ref>


On November 21, 2007, the SFLC brought two similar lawsuits on behalf of Andersen and Landley against two more companies, Xterasys (case 07-CV-10455) and High-Gain Antennas (case 07-CV-10456).<ref>[http://news.zdnet.co.uk/software/0,1000000121,39290971,00.htm Linux legal team sues over GPL violations] {{Webarchive|url=https://web.archive.org/web/20071213221604/http://news.zdnet.co.uk/software/0,1000000121,39290971,00.htm |date=December 13, 2007 }} (Martin LaMonica, CNET News.com, November 21, 2007)</ref><ref>{{cite web|url=http://www.softwarefreedom.org/news/2007/nov/20/busybox/|title=Second Round of GPL Infringement Lawsuits Filed on Behalf of BusyBox Developers|access-date=November 25, 2007|archive-date=November 24, 2007|archive-url=https://web.archive.org/web/20071124092039/http://www.softwarefreedom.org/news/2007/nov/20/busybox/|url-status=live}}</ref> The Xterasys case was settled on December 17 for release of source code used and an undisclosed payment,<ref>{{cite web|url=http://www.softwarefreedom.org/news/2007/dec/17/busybox-xterasys-settlement/|title=BusyBox Developers and Xterasys Corporation Agree to Settle GPL Lawsuit|access-date=December 18, 2007|archive-date=December 19, 2007|archive-url=https://web.archive.org/web/20071219004956/http://www.softwarefreedom.org/news/2007/dec/17/busybox-xterasys-settlement/|url-status=live}}</ref> and the High-Gain Antennas case on March 6, 2008, for active license compliance and an undisclosed payment.<ref>[http://www.softwarefreedom.org/news/2008/mar/06/busybox-hga/ BusyBox Developers and High-Gain Antennas Agree to Dismiss GPL Lawsuit] {{Webarchive|url=https://web.archive.org/web/20080309174405/http://www.softwarefreedom.org/news/2008/mar/06/busybox-hga/ |date=March 9, 2008 }} (SFLC press release)</ref> On December 7, 2007, a case was brought against [[Verizon Communications]] over its distribution of firmware for Actiontec routers;<ref>{{cite web |url=https://www.computerworld.com/article/1565983/open-source-legal-group-strikes-again-on-busybox-suing-verizon.html |title=Open-source legal group strikes again on BusyBox, suing Verizon |last=Gross |first=Grant |work=[[Computerworld]] |date=December 7, 2007 |access-date=September 27, 2024 |archive-date=April 6, 2024 |archive-url=https://web.archive.org/web/20240406134905/https://www.computerworld.com/article/1565983/open-source-legal-group-strikes-again-on-busybox-suing-verizon.html |url-status=live }}</ref><ref>{{cite web|url=http://www.softwarefreedom.org/news/2007/dec/07/busybox/|title=BusyBox Developers File GPL Infringement Lawsuit Against Verizon Communications|access-date=December 22, 2007|archive-date=December 30, 2007|archive-url=https://web.archive.org/web/20071230025833/http://www.softwarefreedom.org/news/2007/dec/07/busybox/|url-status=live}}</ref> 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.<ref>[http://www.informationweek.com/news/showArticle.jhtml?articleID=206904096&subSection=News Verizon Settles Open Source Software Lawsuit] {{Webarchive|url=https://web.archive.org/web/20080321195234/http://www.informationweek.com/news/showArticle.jhtml?articleID=206904096&subSection=News |date=March 21, 2008 }} (Paul McDougell, ''InformationWeek'', March 17, 2008)</ref> Further suits were brought on June 9, 2008, against Bell Microproducts (case 08-CV-5270) and [[SuperMicro]] (case 08-CV-5269),<ref>[http://www.softwarefreedom.org/news/2008/jun/10/busybox/ SFLC Files Another Round of GPL Violation Lawsuits on Behalf of BusyBox Developers] {{Webarchive|url=https://web.archive.org/web/20080611164749/http://www.softwarefreedom.org/news/2008/jun/10/busybox/ |date=June 11, 2008 }} (SFLC press release)</ref> the Super Micro case being settled on July 23, 2008.<ref>[http://www.softwarefreedom.org/news/2008/jul/23/busybox-supermicro/ BusyBox Developers and Supermicro Agree to End GPL Lawsuit: Good Faith Discussions Result in Dismissal of Copyright Infringement Case] {{Webarchive|url=https://web.archive.org/web/20080727030737/http://www.softwarefreedom.org/news/2008/jul/23/busybox-supermicro/ |date=July 27, 2008 }} (SFLC press release)</ref> BusyBox and Bell Microproducts also settled out of court on October 17.<ref>2008. ''Andersen v. Bell Microproducts, Inc.'', No. 08-cv-5270, Doc. No. 16 (S.D.N.Y. Oct. 17, 2008) (notice of voluntary dismissal)</ref>
On November 21, 2007, the SFLC brought two similar lawsuits on behalf of Andersen and Landley against two more companies, Xterasys (case 07-CV-10455) and High-Gain Antennas (case 07-CV-10456).<ref>[http://news.zdnet.co.uk/software/0,1000000121,39290971,00.htm Linux legal team sues over GPL violations] {{Webarchive|url=https://web.archive.org/web/20071213221604/http://news.zdnet.co.uk/software/0,1000000121,39290971,00.htm |date=December 13, 2007 }} (Martin LaMonica, CNET News.com, November 21, 2007)</ref><ref>{{cite web|url=http://www.softwarefreedom.org/news/2007/nov/20/busybox/|title=Second Round of GPL Infringement Lawsuits Filed on Behalf of BusyBox Developers|access-date=November 25, 2007|archive-date=November 24, 2007|archive-url=https://web.archive.org/web/20071124092039/http://www.softwarefreedom.org/news/2007/nov/20/busybox/|url-status=live}}</ref> The Xterasys case was settled on December 17 for release of source code used and an undisclosed payment,<ref>{{cite web|url=http://www.softwarefreedom.org/news/2007/dec/17/busybox-xterasys-settlement/|title=BusyBox Developers and Xterasys Corporation Agree to Settle GPL Lawsuit|access-date=December 18, 2007|archive-date=December 19, 2007|archive-url=https://web.archive.org/web/20071219004956/http://www.softwarefreedom.org/news/2007/dec/17/busybox-xterasys-settlement/|url-status=live}}</ref> and the High-Gain Antennas case on March 6, 2008, for active license compliance and an undisclosed payment.<ref>[http://www.softwarefreedom.org/news/2008/mar/06/busybox-hga/ BusyBox Developers and High-Gain Antennas Agree to Dismiss GPL Lawsuit] {{Webarchive|url=https://web.archive.org/web/20080309174405/http://www.softwarefreedom.org/news/2008/mar/06/busybox-hga/ |date=March 9, 2008 }} (SFLC press release)</ref> On December 7, 2007, a case was brought against [[Verizon Communications]] over its distribution of firmware for Actiontec routers;<ref>{{cite web |url=https://www.computerworld.com/article/1565983/open-source-legal-group-strikes-again-on-busybox-suing-verizon.html |title=Open-source legal group strikes again on BusyBox, suing Verizon |last=Gross |first=Grant |work=[[Computerworld]] |date=December 7, 2007 |access-date=September 27, 2024 |archive-date=April 6, 2024 |archive-url=https://web.archive.org/web/20240406134905/https://www.computerworld.com/article/1565983/open-source-legal-group-strikes-again-on-busybox-suing-verizon.html |url-status=live }}</ref><ref>{{cite web|url=http://www.softwarefreedom.org/news/2007/dec/07/busybox/|title=BusyBox Developers File GPL Infringement Lawsuit Against Verizon Communications|access-date=December 22, 2007|archive-date=December 30, 2007|archive-url=https://web.archive.org/web/20071230025833/http://www.softwarefreedom.org/news/2007/dec/07/busybox/|url-status=live}}</ref> 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.<ref>[http://www.informationweek.com/news/showArticle.jhtml?articleID=206904096&subSection=News Verizon Settles Open Source Software Lawsuit] {{Webarchive|url=https://web.archive.org/web/20080321195234/http://www.informationweek.com/news/showArticle.jhtml?articleID=206904096&subSection=News |date=March 21, 2008 }} (Paul McDougell, ''InformationWeek'', March 17, 2008)</ref> Further suits were brought on June 9, 2008, against Bell Microproducts (case 08-CV-5270) and [[SuperMicro]] (case 08-CV-5269),<ref>[http://www.softwarefreedom.org/news/2008/jun/10/busybox/ SFLC Files Another Round of GPL Violation Lawsuits on Behalf of BusyBox Developers] {{Webarchive|url=https://web.archive.org/web/20080611164749/http://www.softwarefreedom.org/news/2008/jun/10/busybox/ |date=June 11, 2008 }} (SFLC press release)</ref> with the Super Micro case being settled on July 23, 2008.<ref>[http://www.softwarefreedom.org/news/2008/jul/23/busybox-supermicro/ BusyBox Developers and Supermicro Agree to End GPL Lawsuit: Good Faith Discussions Result in Dismissal of Copyright Infringement Case] {{Webarchive|url=https://web.archive.org/web/20080727030737/http://www.softwarefreedom.org/news/2008/jul/23/busybox-supermicro/ |date=July 27, 2008 }} (SFLC press release)</ref> BusyBox and Bell Microproducts also settled out of court on October 17.<ref>2008. ''Andersen v. Bell Microproducts, Inc.'', No. 08-cv-5270, Doc. No. 16 (S.D.N.Y. Oct. 17, 2008) (notice of voluntary dismissal)</ref>


On December 14, 2009, a new lawsuit was filed naming fourteen defendants including [[Best Buy]], [[JVC]], [[Samsung]] and others.<ref>{{cite web|url=https://www.zdnet.com/article/how-to-avoid-modern-day-public-gpl-floggings/|publisher=[[ZDNet]]|title=How to avoid modern day public GPL floggings|quote=Public floggings and executions like the recent SFLC lawsuit could be avoided if actual standards and procedures for compliance with the GPL and other Free and Open Source licenses actually existed.|first=Jason|last=Perlow|date=December 16, 2009|access-date=2016-03-24|archive-date=March 13, 2016|archive-url=https://web.archive.org/web/20160313074445/http://www.zdnet.com/article/how-to-avoid-modern-day-public-gpl-floggings/|url-status=live}}</ref><ref>{{cite web|url=https://www.cnet.com/tech/tech-industry/best-buy-samsung-others-named-in-gpl-suit/|title=Best Buy, Samsung, Westinghouse, 11 more named in GPL lawsuit|publisher=[[cnet.com]]|author=Andrew Nusca}}</ref><ref>{{cite web|url=https://tech-insider.org/open-source-software/research/acrobat/091214.pdf|date=January 19, 2017|title=The Software Freedom Conservancy, Inc. & Mr. Erik Andersen vs BestBuy, Samsung, Westinghouse, JVC, Western Digital, Bosch, Phoebe Micro, Humax, ...|archive-url=https://web.archive.org/web/20240525220726/https://www.tech-insider.org/open-source-software/research/acrobat/091214.pdf|archive-date=May 25, 2024}}</ref>
On December 14, 2009, a new lawsuit was filed naming fourteen defendants including [[Best Buy]], [[JVC]], [[Samsung]] and others.<ref>{{cite web|url=https://www.zdnet.com/article/how-to-avoid-modern-day-public-gpl-floggings/|publisher=[[ZDNet]]|title=How to avoid modern day public GPL floggings|quote=Public floggings and executions like the recent SFLC lawsuit could be avoided if actual standards and procedures for compliance with the GPL and other Free and Open Source licenses actually existed.|first=Jason|last=Perlow|date=December 16, 2009|access-date=2016-03-24|archive-date=March 13, 2016|archive-url=https://web.archive.org/web/20160313074445/http://www.zdnet.com/article/how-to-avoid-modern-day-public-gpl-floggings/|url-status=live}}</ref><ref>{{cite web|url=https://www.cnet.com/tech/tech-industry/best-buy-samsung-others-named-in-gpl-suit/|title=Best Buy, Samsung, Westinghouse, 11 more named in GPL lawsuit|publisher=[[cnet.com]]|author=Andrew Nusca}}</ref><ref>{{cite web|url=https://tech-insider.org/open-source-software/research/acrobat/091214.pdf|date=January 19, 2017|title=The Software Freedom Conservancy, Inc. & Mr. Erik Andersen vs BestBuy, Samsung, Westinghouse, JVC, Western Digital, Bosch, Phoebe Micro, Humax, ...|archive-url=https://web.archive.org/web/20240525220726/https://www.tech-insider.org/open-source-software/research/acrobat/091214.pdf|archive-date=May 25, 2024}}</ref>
In February 2010 [[Samsung]] released its LN52A650 TV firmware under GPLv2,<ref>[https://web.archive.org/web/20100210133921/http://www.samsung.com/global/opensource Visual Display - Open Source] on samsung.com ''"Please download the links below We use GPLv2 and LGPLv2.1, not GPLv3 and LGPLv3. Model: LN40A650 / LN52A650 / LN52A750 [...] LN52A750.zip"'' (archived 2010)</ref> which was used later as a reference by the [[SamyGO]] community project.<ref>[https://wiki.samygo.tv/index.php?title=Main_Page Main_Page] {{Webarchive|url=https://web.archive.org/web/20170216222201/https://wiki.samygo.tv/index.php?title=Main_Page |date=February 16, 2017 }} on samygo.tv</ref>
In February 2010 [[Samsung]] released its LN52A650 TV firmware under GPLv2,<ref>[https://web.archive.org/web/20100210133921/http://www.samsung.com/global/opensource Visual Display - Open Source] on samsung.com ''"Please download the links below We use GPLv2 and LGPLv2.1, not GPLv3 and LGPLv3. Model: LN40A650 / LN52A650 / LN52A750 [...] LN52A750.zip"'' (archived 2010)</ref> which was used later as a reference by the [[SamyGO]] community project.<ref>[https://wiki.samygo.tv/index.php?title=Main_Page Main_Page] {{Webarchive|url=https://web.archive.org/web/20170216222201/https://wiki.samygo.tv/index.php?title=Main_Page |date=February 16, 2017 }} on samygo.tv</ref>


On about August 3, 2010, BusyBox won from Westinghouse a default judgement of [[Treble damages|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, et al., the GPL infringement case noted in the paragraph above.<ref>{{cite web |title=BusyBox and the GPL Prevail Again - Updated 4Xs |url=http://www.groklaw.net/article.php?story=20100803132055210 |first=Pamela |last=Jones |website=[[Groklaw]] |date=2010-08-03 |access-date=2012-09-27 |archive-date=August 4, 2010 |archive-url=https://web.archive.org/web/20100804000246/http://www.groklaw.net/article.php?story=20100803132055210 |url-status=live }}</ref>
On about August 3, 2010, BusyBox won from Westinghouse a default judgement of [[Treble damages|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, et al., the GPL infringement case noted in the paragraph above.<ref>{{cite web |title=BusyBox and the GPL Prevail Again - Updated 4Xs |url=http://www.groklaw.net/article.php?story=20100803132055210 |first=Pamela |last=Jones |website=[[Groklaw]] |date=2010-08-03 |access-date=2012-09-27 |archive-date=August 4, 2010 |archive-url=https://web.archive.org/web/20100804000246/http://www.groklaw.net/article.php?story=20100803132055210 |url-status=usurped }}</ref>


No other developers, including original author Bruce Perens and maintainer Dave Cinege, were represented in these actions or party to the settlements. On December 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".{{r|PERENS}}
No other developers, including original author Bruce Perens and maintainer Dave Cinege, were represented in these actions or party to the settlements. On December 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".{{r|PERENS}}
=== Toybox controversy ===
[[Toybox]] was started early 2006 under the [[GNU General Public License|GPL-2.0-only]] license by former BusyBox maintainer Rob Landley as a result of the controversies around GPLv3/GPLv2 discussions. At the end of 2011<ref>{{cite web|last1=Landley|first1=Rob|title=License change commit|url=http://landley.net/hg/toybox/rev/f3a00ece7966|website=Toybox mercurial repository|access-date=July 24, 2015|archive-date=July 24, 2015|archive-url=https://web.archive.org/web/20150724071540/http://landley.net/hg/toybox/rev/f3a00ece7966|url-status=live}}</ref> it was relicensed under the [[BSD licenses|BSD-2-Clause]] license after the project went dormant.<ref>{{Cite web|url=http://landley.net/toybox/|title=Toybox news|access-date=September 14, 2015|archive-date=September 9, 2015|archive-url=https://web.archive.org/web/20150909200838/http://landley.net/toybox/|url-status=live}}</ref> In March 2013, it was relicensed again under the [[BSD licenses|0BSD]] license.<ref>{{cite web|last1=Landley|first1=Rob|title=Simplify license text, as mentioned on the mailing list.|url=http://landley.net/hg/toybox/rev/264b9da809df|website=Toybox mercurial repository|access-date=2021-06-29|archive-date=July 28, 2021|archive-url=https://web.archive.org/web/20210728105530/https://landley.net/hg/toybox/rev/264b9da809df|url-status=live}}</ref> On January 11, 2012, Tim Bird, a [[Sony]] employee, suggested creating an alternative to BusyBox which would not be under the GNU General Public License. He suggested it be based on the dormant Toybox.<ref>{{cite web |url=http://www.elinux.org/index.php?title=Busybox_replacement_project&oldid=83858 |title=Busybox replacement project |date=2012-01-11 |access-date=2014-03-04 |archive-date=February 18, 2015 |archive-url=https://web.archive.org/web/20150218032408/http://www.elinux.org/index.php?title=Busybox_replacement_project&oldid=83858 |url-status=live }}</ref> In January 2012 the proposal of creating a [[BSD license]]d alternative to the GPL licensed BusyBox project drew harsh criticism from [[Matthew Garrett]] for taking away the only relevant tool for [[copyright enforcement]] of the [[Software Freedom Conservancy]] group.<ref>{{cite web |url=https://lwn.net/Articles/478249/ |title=Garrett: The ongoing fight against GPL enforcement |publisher=[[LWN.net]] |date=2012-01-31 |access-date=2014-03-04 |quote=''The real problem here is that the [Software Freedom Conservancy's] reliance on Busybox means that they're only able to target infringers who use that Busybox code. No significant kernel copyright holders have so far offered to allow the SFC to enforce their copyrights, with the result that enforcement action will grind to a halt as vendors move over to this Busybox replacement.'' |archive-date=September 14, 2016 |archive-url=https://web.archive.org/web/20160914091237/https://lwn.net/Articles/478249/ |url-status=live }}</ref> The starter of BusyBox based lawsuits, Rob Landley, responded that this was intentional as he came to the conclusion that the lawsuits resulted not in the hoped for positive outcomes and he wanted to stop them "in whatever way I see fit".<ref>{{cite web |url=https://lwn.net/Articles/478361/ |title=Garrett: The ongoing fight against GPL enforcement |publisher=[[LWN.net]] |date=2012-01-31 |access-date=2014-03-04 |quote=''>As the ex-maintainer of busybox who STARTED those lawsuits in the first place and now HUGELY REGRETS ever having done so, I think I'm entitled to stop the lawsuits in whatever way I see fit. They never resulted in a single line of code added to the busybox repository. They HAVE resulted in more than one company exiting Linux development entirely and switching to non-Linux operating systems for their embedded products, and they're a big part of the reason behind Android's "No GPL in userspace" policy.'' |archive-date=September 14, 2016 |archive-url=https://web.archive.org/web/20160914130657/https://lwn.net/Articles/478361/ |url-status=live }}</ref><ref>{{cite news |url=http://www.itworld.com/article/2732025/open-source-tools/gpl-enforcement-sparks-community-flames.html |title=GPL enforcement sparks community flames - Throwing the GPL baby out with the enforcement bath water? |newspaper=ITworld |date=2012-02-02 |access-date=2015-03-04 |first=Brian |last=Proffitt |archive-date=January 7, 2016 |archive-url=https://web.archive.org/web/20160107184000/http://www.itworld.com/article/2732025/open-source-tools/gpl-enforcement-sparks-community-flames.html |url-status=live }}</ref>


== Features ==
== Features ==
Line 80: Line 85:


=== Commands ===
=== Commands ===
The official BusyBox documentation lists an overview of the available commands and their command-line options. <div class="toccolours mw-collapsible mw-collapsed">
The official BusyBox documentation lists an overview of the available commands and their command-line options.<ref>{{cite web | url=https://www.busybox.net/downloads/BusyBox.html#commands | title=BusyBox Command Help | access-date=2013-02-24 | archive-date=February 2, 2018 | archive-url=https://web.archive.org/web/20180202181458/https://busybox.net/downloads/BusyBox.html#commands | url-status=live }}</ref>
'''List of BusyBox commands<ref>{{cite web | url=https://www.busybox.net/downloads/BusyBox.html#commands | title=BusyBox Command Help | access-date=2013-02-24 | archive-date=February 2, 2018 | archive-url=https://web.archive.org/web/20180202181458/https://busybox.net/downloads/BusyBox.html#commands | url-status=live }}</ref>'''
<div class="mw-collapsible-content">
<div class="mw-collapsible-content">
{{Div col|small=yes|colwidth=10em}}
{{Div col|small=yes|colwidth=10em}}
Line 93: Line 97:
* ash
* ash
* [[basename]] — Return non-directory portion of a pathname removing suffix.
* [[basename]] — Return non-directory portion of a pathname removing suffix.
* [[Bc_(programming_language)|bc]] — calculator program
* beep
* beep
* [[blkid]] — Print type, label and UUID of filesystem on a block device or image.
* [[blkid]] — Print type, label and UUID of filesystem on a block device or image.
Line 123: Line 128:
* [[cut (Unix)|cut]] — Print selected parts of lines from each FILE to standard output.
* [[cut (Unix)|cut]] — Print selected parts of lines from each FILE to standard output.
* [[date (Unix)|date]] — Set/get the current date/time.
* [[date (Unix)|date]] — Set/get the current date/time.
* dc
* [[Dc_(computer_program)|dc]] — desk calculator
* [[dd (Unix)|dd]] — Copy a file with converting and formatting.
* [[dd (Unix)|dd]] — Copy a file with converting and formatting.
* deallocvt
* deallocvt
Line 334: Line 339:
* udhcpc — Small DHCP client
* udhcpc — Small DHCP client
* umount — Unmount file systems
* umount — Unmount file systems
* uname — Display system information
* [[uname]] — Display system information
* uptime — Tell how long the system has been running.
* uptime — Tell how long the system has been running.
* uudecode
* uudecode
Line 348: Line 353:
* [[which (command)|which]] — Shows the full path of (shell) commands
* [[which (command)|which]] — Shows the full path of (shell) commands
* [[who (Unix)|who]] — Display who is on the system
* [[who (Unix)|who]] — Display who is on the system
* whoami — Print effective userid
* [[whoami]] — Print effective userid
* xargs — Construct argument lists and invoke utility
* xargs — Construct argument lists and invoke utility
* [[yes (Unix)|yes]] — to print a string repetitively
* [[yes (Unix)|yes]] — to print a string repetitively
* [[Gzip#gunzip and zcat|zcat]] — Uncompress to stdout
* [[Gzip#gunzip and zcat|zcat]] — Uncompress to stdout
{{div col end}}
{{div col end}}
</div>
</div>
</div>


== Examples ==
== Examples ==
{{Unreferenced section|date=November 2022}}
{{Unreferenced section|date=November 2022}}
Programs included in BusyBox can be run simply by adding their name as an argument to the BusyBox executable:<ref name=":0">{{Cite web |last=Vlasenko |first=Denis |title=BusyBox - The Swiss Army Knife of Embedded Linux |url=https://www.busybox.net/downloads/BusyBox.html |url-status=live |archive-url=https://web.archive.org/web/20190313153921/https://busybox.net/downloads/BusyBox.html |archive-date=13 March 2019 |website=BusyBox Command Help}}</ref>
A command can be run by prefixing a command line with a path to the BusyBox executable. The following invokes the {{code|ls}} command:<ref name=":0">{{Cite web |last=Vlasenko |first=Denis |title=BusyBox - The Swiss Army Knife of Embedded Linux |url=https://www.busybox.net/downloads/BusyBox.html |url-status=live |archive-url=https://web.archive.org/web/20190313153921/https://busybox.net/downloads/BusyBox.html |archive-date=13 March 2019 |website=BusyBox Command Help}}</ref>


:<code>/bin/busybox ls</code>
:<code>/bin/busybox ls</code>


More commonly, the desired command names are linked (using [[hard link|hard]] or [[symbolic link|symbolic]] links) to the BusyBox executable; BusyBox reads [[argv|argv[0]]] to find the name by which it is called, and runs the appropriate command, for example just
Commonly, each command is exposed as a [[hard link |hard]] or [[symbolic link |symbolic]] link to the BusyBox executable. For example, if <code>/bin/ls</code> links to {{code |/bin/busybox}}<ref name=":0" /> then the [[argv|program name command-line argument]] is "/bin/ls" and BusyBox treats it as the {{code |ls}} command.
 
:<code>/bin/ls</code>
 
after ''/bin/ls'' is linked to ''/bin/busybox''.<ref name=":0" /> This works because the first argument passed to a program is the name used for the program call, in this case the argument would be "/bin/ls". BusyBox would see that its "name" is "ls" and act like the "ls" program.


==Appliances and reception==
==Appliances and reception==
BusyBox is used by several operating systems running on [[embedded system]]s and is an essential component of distributions such as [[OpenWrt]], [[OpenEmbedded]] (including the [[Yocto Project]]) and [[Buildroot]]. The [[Sharp Zaurus]] utilizes BusyBox extensively for ordinary [[Unix-like]] tasks performed on the system's shell.<ref>{{cite web|url=http://tldp.org/LDP/Mobile-Guide/html/Mobile-Guide.html#mobile-guide-p3-handheld-devices-pdas|title=Linux on the Road|access-date=August 27, 2018|archive-date=September 7, 2018|archive-url=https://web.archive.org/web/20180907184554/http://tldp.org/LDP/Mobile-Guide/html/Mobile-Guide.html#mobile-guide-p3-handheld-devices-pdas|url-status=live}}</ref>
BusyBox is used by several operating systems running on [[embedded system]]s and is an essential component of distributions such as [[OpenWrt]], [[OpenEmbedded]] (including the [[Yocto Project]]) and [[Buildroot]]. The [[Sharp Zaurus]] utilizes BusyBox extensively for ordinary [[Unix-like]] tasks performed on the system's shell.<ref>{{cite web|url=http://tldp.org/LDP/Mobile-Guide/html/Mobile-Guide.html#mobile-guide-p3-handheld-devices-pdas|title=Linux on the Road|access-date=August 27, 2018|archive-date=September 7, 2018|archive-url=https://web.archive.org/web/20180907184554/http://tldp.org/LDP/Mobile-Guide/html/Mobile-Guide.html#mobile-guide-p3-handheld-devices-pdas|url-status=live}}</ref>


BusyBox is also an essential component of [[VMware ESXi]], [[Tiny Core Linux]], [[SliTaz]] 5(Rolling), and [[Alpine Linux]], all of which are not embedded distributions.
BusyBox is also an essential component of [[VMware ESXi]], [[Tiny Core Linux]], [[SliTaz]] 5(Rolling), and [[Alpine Linux]], none of which are embedded distributions.


It is necessary for several root applications on Android and is also preinstalled with some "1 Tap Root" solutions such as [[Kingo Root]].
It is necessary for several root applications on Android and is also preinstalled with some "1 Tap Root" solutions such as [[Kingo Root]].
== Controversy over Toybox ==
[[Toybox]] was started early 2006 under the [[GNU General Public License|GPL-2.0-only]] license by former BusyBox maintainer Rob Landley as a result of the controversies around GPLv3/GPLv2 discussions. At the end of 2011<ref>{{cite web|last1=Landley|first1=Rob|title=License change commit|url=http://landley.net/hg/toybox/rev/f3a00ece7966|website=Toybox mercurial repository|access-date=July 24, 2015|archive-date=July 24, 2015|archive-url=https://web.archive.org/web/20150724071540/http://landley.net/hg/toybox/rev/f3a00ece7966|url-status=live}}</ref> it was relicensed under the [[BSD licenses|BSD-2-Clause]] license after the project went dormant.<ref>{{Cite web|url=http://landley.net/toybox/|title=Toybox news|access-date=September 14, 2015|archive-date=September 9, 2015|archive-url=https://web.archive.org/web/20150909200838/http://landley.net/toybox/|url-status=live}}</ref> In March 2013, it was relicensed again under the [[BSD licenses|0BSD]] license.<ref>{{cite web|last1=Landley|first1=Rob|title=Simplify license text, as mentioned on the mailing list.|url=http://landley.net/hg/toybox/rev/264b9da809df|website=Toybox mercurial repository|access-date=2021-06-29|archive-date=July 28, 2021|archive-url=https://web.archive.org/web/20210728105530/https://landley.net/hg/toybox/rev/264b9da809df|url-status=live}}</ref> On January 11, 2012, Tim Bird, a [[Sony]] employee, suggested creating an alternative to BusyBox which would not be under the GNU General Public License. He suggested it be based on the dormant Toybox.<ref>{{cite web |url=http://www.elinux.org/index.php?title=Busybox_replacement_project&oldid=83858 |title=Busybox replacement project |date=2012-01-11 |access-date=2014-03-04 |archive-date=February 18, 2015 |archive-url=https://web.archive.org/web/20150218032408/http://www.elinux.org/index.php?title=Busybox_replacement_project&oldid=83858 |url-status=live }}</ref> In January 2012 the proposal of creating a [[BSD license]]d alternative to the GPL licensed BusyBox project drew harsh criticism from [[Matthew Garrett]] for taking away the only relevant tool for [[copyright enforcement]] of the [[Software Freedom Conservancy]] group.<ref>{{cite web |url=https://lwn.net/Articles/478249/ |title=Garrett: The ongoing fight against GPL enforcement |publisher=[[LWN.net]] |date=2012-01-31 |access-date=2014-03-04 |quote=''The real problem here is that the [Software Freedom Conservancy's] reliance on Busybox means that they're only able to target infringers who use that Busybox code. No significant kernel copyright holders have so far offered to allow the SFC to enforce their copyrights, with the result that enforcement action will grind to a halt as vendors move over to this Busybox replacement.'' |archive-date=September 14, 2016 |archive-url=https://web.archive.org/web/20160914091237/https://lwn.net/Articles/478249/ |url-status=live }}</ref> The starter of BusyBox based lawsuits, Rob Landley, responded that this was intentional as he came to the conclusion that the lawsuits resulted not in the hoped for positive outcomes and he wanted to stop them ''"in whatever way I see fit"''.<ref>{{cite web |url=https://lwn.net/Articles/478361/ |title=Garrett: The ongoing fight against GPL enforcement |publisher=[[LWN.net]] |date=2012-01-31 |access-date=2014-03-04 |quote=''>As the ex-maintainer of busybox who STARTED those lawsuits in the first place and now HUGELY REGRETS ever having done so, I think I'm entitled to stop the lawsuits in whatever way I see fit. They never resulted in a single line of code added to the busybox repository. They HAVE resulted in more than one company exiting Linux development entirely and switching to non-Linux operating systems for their embedded products, and they're a big part of the reason behind Android's "No GPL in userspace" policy.'' |archive-date=September 14, 2016 |archive-url=https://web.archive.org/web/20160914130657/https://lwn.net/Articles/478361/ |url-status=live }}</ref><ref>{{cite news |url=http://www.itworld.com/article/2732025/open-source-tools/gpl-enforcement-sparks-community-flames.html |title=GPL enforcement sparks community flames - Throwing the GPL baby out with the enforcement bath water? |newspaper=ITworld |date=2012-02-02 |access-date=2015-03-04 |first=Brian |last=Proffitt |archive-date=January 7, 2016 |archive-url=https://web.archive.org/web/20160107184000/http://www.itworld.com/article/2732025/open-source-tools/gpl-enforcement-sparks-community-flames.html |url-status=live }}</ref>


== See also ==
== See also ==
Line 406: Line 403:
[[Category:Free software programmed in C]]
[[Category:Free software programmed in C]]
[[Category:Unix software]]
[[Category:Unix software]]
[[Category:Software using the GNU General Public License]]

Latest revision as of 19:09, 28 December 2025

Template:Short description Template:Short description Template:Use mdy dates Script error: No such module "Infobox".Template:Template other Script error: No such module "Check for unknown parameters".Script error: No such module "Check for conflicting parameters".

BusyBox is an implementation of many Unix commands in a single executable file. It runs in many POSIX environments including Linux, Android,[1] and FreeBSD,[2] 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. The authors dubbed it "The Swiss Army knife of Embedded Linux",[3] as the single executable replaces basic functions of more than 300 common commands. It is released as free software under the terms of the GNU General Public License v2,[4] after controversially deciding not to move to version 3.

History

Origins

Originally written by Bruce Perens in 1995 and declared complete for his intended usage in 1996,[5] BusyBox initially aimed to put a complete bootable system on a single floppy disk that would serve both as a rescue disk and as an installer for the Debian distribution. Since that time, it has been extended to become the de facto standard core user space 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 Dave Cinege took it over 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 became 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 until late 2006, then Denys Vlasenko took over as the current maintainer.

GPLv2/GPLv3 controversies

In September 2006, after heavy discussions and controversies between project maintainer Rob Landley and Bruce Perens,[6] the BusyBox[7][8] project decided against adopting the GNU General Public License Version 3 (GPLv3); the BusyBox license was clarified as being GPL-2.0-only.[9]

Since October 2006, Denys Vlasenko has taken over maintainership of BusyBox from Rob Landley, who has started Toybox, also as a result of the license controversies.[7][10]

GPL lawsuits

In late 2007, BusyBox also came to prominence for actively prosecuting violations of the terms of its license (the GPL) in the United States District Court for the Southern District of New York.[11]

What was claimed to be the first US lawsuit over a GPL violation concerned the use of BusyBox in an embedded device. The lawsuit,[11] case 07-CV-8205, was filed on September 20, 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.[12]

On November 21, 2007, the SFLC brought two similar lawsuits on behalf of Andersen and Landley against two more companies, Xterasys (case 07-CV-10455) and High-Gain Antennas (case 07-CV-10456).[13][14] The Xterasys case was settled on December 17 for release of source code used and an undisclosed payment,[15] and the High-Gain Antennas case on March 6, 2008, for active license compliance and an undisclosed payment.[16] On December 7, 2007, a case was brought against Verizon Communications over its distribution of firmware for Actiontec routers;[17][18] 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.[19] Further suits were brought on June 9, 2008, against Bell Microproducts (case 08-CV-5270) and SuperMicro (case 08-CV-5269),[20] with the Super Micro case being settled on July 23, 2008.[21] BusyBox and Bell Microproducts also settled out of court on October 17.[22]

On December 14, 2009, a new lawsuit was filed naming fourteen defendants including Best Buy, JVC, Samsung and others.[23][24][25] In February 2010 Samsung released its LN52A650 TV firmware under GPLv2,[26] which was used later as a reference by the SamyGO community project.[27]

On about August 3, 2010, BusyBox won from Westinghouse a default judgement of 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, et al., the GPL infringement case noted in the paragraph above.[28]

No other developers, including original author Bruce Perens and maintainer Dave Cinege, were represented in these actions or party to the settlements. On December 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".Template:R

Toybox controversy

Toybox was started early 2006 under the GPL-2.0-only license by former BusyBox maintainer Rob Landley as a result of the controversies around GPLv3/GPLv2 discussions. At the end of 2011[29] it was relicensed under the BSD-2-Clause license after the project went dormant.[30] In March 2013, it was relicensed again under the 0BSD license.[31] On January 11, 2012, Tim Bird, a Sony employee, suggested creating an alternative to BusyBox which would not be under the GNU General Public License. He suggested it be based on the dormant Toybox.[32] In January 2012 the proposal of creating a BSD licensed alternative to the GPL licensed BusyBox project drew harsh criticism from Matthew Garrett for taking away the only relevant tool for copyright enforcement of the Software Freedom Conservancy group.[33] The starter of BusyBox based lawsuits, Rob Landley, responded that this was intentional as he came to the conclusion that the lawsuits resulted not in the hoped for positive outcomes and he wanted to stop them "in whatever way I see fit".[34][35]

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 Almquist shell, also known as A Shell, ash and sh.[36] An alternative for customization is the smaller 'hush' shell. "Msh" and "lash" used to be available.[37]

As it is a complete bootstrap system, it will further replace the init daemon and udev (or the latter-day systemd) using itself to be called as init on startup and mdev at hotplug time.

The BusyBox website provides a full list of the utilities implemented.[38]

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)[39] in a specific manner with appropriate arguments.

BusyBox benefits from the single binary approach, as it reduces the overhead 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[40] command in FreeBSD, the difference being that 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, can make a BusyBox system use much less storage space than a system built with the corresponding full versions of the utilities replaced by BusyBox. Research[41] that compared GNU, BusyBox, asmutils and Perl implementations of the standard Unix commands showed that in some situations BusyBox may perform faster than other implementations, but not always.

Commands

The official BusyBox documentation lists an overview of the available commands and their command-line options.[42]

<templatestyles src="Div col/styles.css"/>
Script error: No such module "Check for unknown parameters".
  • acpid
  • adduser
  • adjtimex
  • ash
  • ar
  • arp — The Address Resolution Protocol (ARP)
  • arping — Send ARP REQUEST to a neighbour host
  • ash
  • basename — Return non-directory portion of a pathname removing suffix.
  • bc — calculator program
  • beep
  • blkid — Print type, label and UUID of filesystem on a block device or image.
  • brctl
  • bunzip2 — Decompress bzip2 files.
  • bzcat — Decompress bzip2 files to stdout.
  • bzip2 — Create bzip2 compressed files.
  • cal — Print a calendar.
  • cat — Print content of one or more files to stdout.
  • catv
  • chat
  • chattr — Change file attributes on a Linux file system.
  • chgrp — Change group of one or more files.
  • chmod — Change mode of listed files.
  • chown — Change owner of one or more files.
  • chpasswd
  • chpst
  • chroot — Run command within a new root directory.
  • chrt
  • chvt
  • cksum — For each file, output crc32 checksum value, length and name of file.
  • clear — Clear the screen.
  • cmp — Compare the contents of two files.
  • comm — Select or reject lines common to two files.
  • cp — Copy files.
  • cpio — Copy files into and out of a "newc" format cpio archive.
  • crond
  • crontab
  • cryptpw
  • cut — Print selected parts of lines from each FILE to standard output.
  • date — Set/get the current date/time.
  • dc — desk calculator
  • dd — Copy a file with converting and formatting.
  • deallocvt
  • delgroup
  • deluser
  • depmod
  • devmem
  • df — Print filesystem usage statistics.
  • dhcprelay
  • diff — Compare two files.
  • dirname — Show directory portion of path.
  • dnsd
  • dnsdomainname
  • dos2unix — Convert newline format from dos "\r\n" to unix "\n".
  • dpkg
  • du — Show disk usage, space consumed by files and directories.
  • dumpkmap
  • dumpleases
  • echo — Display a specified line of text.
  • ed
  • eject
  • env — Set the environment for command invocation, or list environment variables.
  • envdir
  • envuidgid
  • expand — Expand tabs to spaces according to tabstops.
  • expr
  • fakeidentd
  • false
  • fbset
  • fbsplash
  • fdflush
  • fdformat
  • fdisk
  • find
  • findfs
  • flash_lock
  • flash_unlock
  • fold
  • free
  • freeramdisk
  • fsck.minix
  • fsck
  • fsync
  • ftpd
  • ftpget
  • ftpput
  • fuser
  • getopt
  • getty
  • grep — Search for PATTERN in each FILE or standard input.
  • gunzip — Compressed file expansion.
  • gzip — File compression.
  • hd
  • hdparm
  • head
  • hexdump
  • hostid
  • hostname
  • httpd — HTTP server daemon
  • hush
  • hwclock
  • id
  • ifconfig
  • ifdown
  • ifenslave
  • ifplugd
  • ifup
  • inetd
  • inotifyd
  • insmod
  • install
  • ionice
  • ip
  • ipaddr
  • ipcalc
  • ipcrm
  • ipcs
  • iplink
  • iproute
  • iprule
  • iptunnel
  • kbd_mode
  • kill — Send a signal to a process.
  • killall
  • klogd
  • last
  • length
  • less
  • linux32
  • linux64
  • linuxrc
  • ln — Create a link named LINK_NAME or DIRECTORY to the specified TARGET.
  • loadfont
  • loadkmap
  • logger
  • login — Begin a new session on the system
  • logname
  • logread
  • losetup
  • lpd
  • lpq
  • lpr
  • ls — List of files or folders
  • lsattr
  • lsmod
  • lzmacat
  • lzop
  • lzopcat
  • makemime
  • man
  • md5sum
  • mdev — akin to udev
  • mesg
  • microcom
  • mkdir — Create a folder
  • mkdosfs
  • mkfifo
  • mkfs.minix
  • mkfs.vfat
  • mknod
  • mkpasswd
  • mkswap
  • mktemp
  • modprobe
  • more — View FILE or standard input one screen-full at a time
  • mount — Mount file systems
  • mountpoint
  • mt
  • mv — move file
  • nameif
  • nc — networking Swiss army knife.
  • netstat — Display networking information.
  • nice
  • nmeter
  • nohup
  • nslookup
  • ntpc
  • ntpsync
  • nvram
  • od
  • openvt
  • passwd
  • patch
  • pgrep
  • pidof — List PIDs of all processes with names that match NAMEs
  • ping6
  • ping — Send ICMP ECHO_REQUEST packets to network hosts
  • pipe_progress
  • pivot_root
  • pkill
  • popmaildir
  • printenv
  • printf
  • ps — Report process status
  • pscan
  • pwd — Print working directory
  • raidautorun
  • rdate
  • rdev
  • readlink
  • readprofile
  • reformime
  • renice
  • reset
  • resize
  • rm — Erase file
  • rmdir — Remove directory
  • rmmod
  • route
  • rpm
  • rstats — Copyright of BusyBox
  • rx
  • script
  • scriptreplay
  • sed — Text stream editor
  • sendmail
  • seq
  • setarch
  • setconsole
  • setfont
  • sh
  • sha1sum — Compute and check SHA-1 message digest
  • sha256sum — Compute and check SHA-256 message digest
  • sha512sum
  • showkey
  • slattach
  • sleep — Suspend program execution for a specified time
  • softlimit
  • sort
  • split
  • stat
  • strings
  • stty — Change and print terminal line settings
  • su — Execute commands with privileges of another user account
  • sum — Checksum and count blocks in a file
  • sv
  • switch_root
  • sync — Write all buffered file system blocks to disk
  • tac — Concatenate and print files in reverse line order
  • tail — Output last of file
  • tar
  • tee — Send output to multiple files
  • test — Built-in evaluation
  • time
  • top
  • touch — Update the last-modified date on the given FILE[s]
  • tr — Translate or delete characters
  • true
  • tty
  • udhcpc — Small DHCP client
  • umount — Unmount file systems
  • uname — Display system information
  • uptime — Tell how long the system has been running.
  • uudecode
  • uuencode
  • usleep — Pause for N [microseconds]
  • vconfig — VLAN (802.1q) configuration program
  • vlock — Virtual Console lock program
  • vi — (visual) Edit FILE
  • volname — Return volume name
  • watch — Execute a program periodically
  • watchdog — Software watchdog daemon
  • wc — Word, line, and byte or character count
  • which — Shows the full path of (shell) commands
  • who — Display who is on the system
  • whoami — Print effective userid
  • xargs — Construct argument lists and invoke utility
  • yes — to print a string repetitively
  • zcat — Uncompress to stdout

Examples

Script error: No such module "Unsubst". A command can be run by prefixing a command line with a path to the BusyBox executable. The following invokes the ls command:[43]

/bin/busybox ls

Commonly, each command is exposed as a hard or symbolic link to the BusyBox executable. For example, if /bin/ls links to /bin/busybox[43] then the program name command-line argument is "/bin/ls" and BusyBox treats it as the ls command.

Appliances and reception

BusyBox is used by several operating systems running on embedded systems and is an essential component of distributions such as OpenWrt, OpenEmbedded (including the Yocto Project) and Buildroot. The Sharp Zaurus utilizes BusyBox extensively for ordinary Unix-like tasks performed on the system's shell.[44]

BusyBox is also an essential component of VMware ESXi, Tiny Core Linux, SliTaz 5(Rolling), and Alpine Linux, none of which are embedded distributions.

It is necessary for several root applications on Android and is also preinstalled with some "1 Tap Root" solutions such as Kingo Root.

See also

Script error: No such module "Portal".

References

<templatestyles src="Reflist/styles.css" />

  1. Script error: No such module "citation/CS1".
  2. Script error: No such module "citation/CS1".
  3. Script error: No such module "citation/CS1".
  4. Cite error: Script error: No such module "Namespace detect".Script error: No such module "Namespace detect".
  5. Script error: No such module "citation/CS1".
  6. Script error: No such module "citation/CS1".
  7. a b Script error: No such module "citation/CS1".
  8. Script error: No such module "citation/CS1".
  9. GPL version 2 only for BusyBox 1.3.0. Template:Webarchive on lwn.net
  10. Script error: No such module "citation/CS1".
  11. a b On Behalf of BusyBox Developers Andersen and Landley, SFLC Files First Ever U.S. GPL Violation Lawsuit Template:Webarchive (Software Freedom Law Center September 20, 2007)
  12. Script error: No such module "citation/CS1".
  13. Linux legal team sues over GPL violations Template:Webarchive (Martin LaMonica, CNET News.com, November 21, 2007)
  14. Script error: No such module "citation/CS1".
  15. Script error: No such module "citation/CS1".
  16. BusyBox Developers and High-Gain Antennas Agree to Dismiss GPL Lawsuit Template:Webarchive (SFLC press release)
  17. Script error: No such module "citation/CS1".
  18. Script error: No such module "citation/CS1".
  19. Verizon Settles Open Source Software Lawsuit Template:Webarchive (Paul McDougell, InformationWeek, March 17, 2008)
  20. SFLC Files Another Round of GPL Violation Lawsuits on Behalf of BusyBox Developers Template:Webarchive (SFLC press release)
  21. BusyBox Developers and Supermicro Agree to End GPL Lawsuit: Good Faith Discussions Result in Dismissal of Copyright Infringement Case Template:Webarchive (SFLC press release)
  22. 2008. Andersen v. Bell Microproducts, Inc., No. 08-cv-5270, Doc. No. 16 (S.D.N.Y. Oct. 17, 2008) (notice of voluntary dismissal)
  23. Script error: No such module "citation/CS1".
  24. Script error: No such module "citation/CS1".
  25. Script error: No such module "citation/CS1".
  26. Visual Display - Open Source on samsung.com "Please download the links below We use GPLv2 and LGPLv2.1, not GPLv3 and LGPLv3. Model: LN40A650 / LN52A650 / LN52A750 [...] LN52A750.zip" (archived 2010)
  27. Main_Page Template:Webarchive on samygo.tv
  28. Script error: No such module "citation/CS1".
  29. Script error: No such module "citation/CS1".
  30. Script error: No such module "citation/CS1".
  31. Script error: No such module "citation/CS1".
  32. Script error: No such module "citation/CS1".
  33. Script error: No such module "citation/CS1".
  34. Script error: No such module "citation/CS1".
  35. Script error: No such module "citation/CS1".
  36. Script error: No such module "citation/CS1".
  37. Script error: No such module "citation/CS1".
  38. Script error: No such module "citation/CS1".
  39. Script error: No such module "citation/CS1".
  40. crunchgen(1) – FreeBSD General Commands Manual
  41. Script error: No such module "citation/CS1".
  42. Script error: No such module "citation/CS1".
  43. a b Script error: No such module "citation/CS1".
  44. Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

Further reading

  • Script error: No such module "Citation/CS1".
  • Script error: No such module "citation/CS1".

External links

Template:Sister project

  • Script error: No such module "Official website".Script error: No such module "Check for unknown parameters".

Template:Embedded systems