本页使用了标题或全文手工转换

BusyBox

维基百科,自由的百科全书
跳转至: 导航搜索
BusyBox
BusyBoxLogo.png
Busybox DG834Gt.PNG
原作者 布鲁斯·佩伦斯
开发者 Erik Andersen[1]、Rob Landley[2]、Denys Vlasenko[3]及其他人
初始版本 1999年11月4日,​17年前​(1999-11-04[4]
稳定版本 1.27.2(2017年8月17日,​2个月前​(2017-08-17
开发状态 活跃
编程语言 C
操作系统 类Unix系统
文件大小 2.1 MB
类型
许可协议 GNU GPL第二版(1.2.3版或更新[5]
网站 www.busybox.net
源代码库 busybox.net/busybox.git

BusyBox是一个遵循GPL协议、以自由软件形式发行的应用程序。Busybox在单一的可执行文件中提供了精简的Unix工具集,可运行于多款POSIX环境的操作系统,例如Linux(包括Android[6])、Hurd[7]、FreeBSD[8][9]等等。由于BusyBox可执行文件的文件大小比较小、并通常使用Linux内核,这使得它非常适合使用于嵌入式系统。此外,由于BusyBox功能强大,因此有些人将BusyBox称为“嵌入式Linux的瑞士军刀”。[10]

历史[编辑]

BusyBox最初是由布鲁斯·斐伦斯在1996年为Debian GNU/Linux安装光盘而编写的,其原始构想是希望在一张软盘上能放入一个开机系统,以作为急救盘和安装盘。后来它变成了嵌入式Linux设备和系统和Linux发行版安装程序的实质标准,因为每个Linux可执行文件需要数KB的空间,而集成两百多个程序的BusyBox可以节省大量空间。实际上,Debian的安装光盘便以BusyBox作为Shell程序。

Enrique Zanardi负责维护BusyBox并专注在Debian启动软盘英语Boot disk安装系统的需求直到1998年,再由负责Linux路由器计划英语Linux Router Project的Dave Cinege 接手。Cinege做了一些增加:创建了一个模块化的Build环境、转移BusyBox的目标到一般高级的嵌入式系统。当1999年LRP开发进度趋缓时,Lineo, Inc.英语Lineo的Erik Andersen在1999年开始正式地接手这个项目继续维护它到2006年三月。在这段期间,Linux的嵌入式系统的市场明显地成长,连带使BusyBox转趋成熟,同时扩展二者的使用群和功能。

丹尼斯·弗拉先科英语Denis Vlasenko是目前BusyBox的维护者。

功能[编辑]

BusyBox可以被自定义化以提供一个超过两百种功能的子集。它可以提供多数详列在单一UNIX规范里的功能,以及许多用户会想在Linux系统上看到的功能。BusyBox使用ash[11][12]在 BusyBox的网站上可以找到所有功能的列表。[13]

单一可执行文件[编辑]

典型的计算机程序对每个应用程序都有个别的二进制可执行文件)文件。BusyBox 是一单一二进制程序,这是许多应用程序的集合,在适当参数的特定方法下,每个都可通过以不同的名称(每个不同的名字借由符号链接硬链接英语hard link支持[14])调用单一 BusyBox 二进制程序来访问。

BusyBox受惠于单一可执行文件策略,如此一来省去了每个可执行文件必需有的标头(特别是ELF的可执行文件),这也让Busybox不需要便可达成代码共用。这个技巧与FreeBSD中的crunchgen[15]指令相似。与使用crunchgen创建的合并工具程序不同在于,Busybox只提供每个工具程序的简化版(例如:ls指令不提供排序功能)。

共享通用的代码,并以程序大小最优化为目标,使以BusyBox建构的系统所需要的空间远小于使用对应的完整工具所需要的空间。研究[16]比较了GNU、Busybox、asmutilsPerl实现的标准Unix指令发现特定状况下,BusyBox的运行速度会优于其他实现,但并非总是如此。

示例[编辑]

BusyBox所包含的程序只需要简单的将名称附加在第一个参数即可运行:

/bin/busybox ls

更常见的作法是,这些指令会以链接(使用硬链接英语hard link或者符号链接)至BusyBox可执行文件,BusyBox会侦测其被链接时的名称,并运行对应的指令。举例来说,只要将/bin/ls链接到/bin/busybox,即可运行

/bin/ls

命令[编辑]

  • ash - 匹配POSIX的一个简单的shell
  • awk - 将文件解析为记录及字段后,按模式匹配操作其内容
  • cat - 将多个文件首尾相连显示于标准输出
  • chmod
  • cp
  • date
  • dd
  • df - 印出文件系统的使用统计
  • dmesg
  • echo
  • egrep - 接受扩展RE的grep
  • fgrep - 接受固定字符串模式的grep
  • grep - 列出文件或标准输入中匹配模式的行
  • gunzip
  • gzip
  • kill - 关闭一个程序
  • ln
  • login
  • ls - 列出目录或文件
  • mdu
  • mkdir - 创建一个目录
  • more
  • mount 挂载存储设备
  • mv - 移动文件
  • netstat
  • ntpc
  • ntpsync
  • nvram
  • pidof
  • ping
  • ps - 印出程序状态
  • pwd - 印出工作目录
  • rm - 删除文件
  • rmdir - 移除目录
  • rstats
  • sed
  • sh
  • sleep
  • sync
  • tar
  • touch
  • umount 移除挂载的存储设备
  • uname
  • usleep
  • vi - 一个带有简单的模式提示的精简版仿vi编辑器
  • watch
  • wget - HTTP或FTP下载工具
  • zcat
  • 实际的命令列表按编译时的设置决定,在有Busybox的系统上执行busybox --list即可看到一个列表。

注释[编辑]

  1. ^ Erik Andersen's Homepage. 
  2. ^ 活跃的项目,Rob Landley的网页
  3. ^ Denys Vlasenko,BusyBox维护者
  4. ^ http://www.softwarefreedom.org/resources/2009/busybox-complaint-2009-12-14.pdf
  5. ^ BusyBox. 
  6. ^ https://play.google.com/store/apps/details?id=com.jrummy.busybox.installer&hl=zh_CN
  7. ^ https://lists.debian.org/debian-bsd/2010/05/msg00048.html
  8. ^ https://lists.debian.org/debian-bsd/2010/05/msg00048.html
  9. ^ http://portsmon.freebsd.org/portoverview.py?category=sysutils&portname=busybox
  10. ^ 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.
  11. ^ 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.
  12. ^ ash variants
  13. ^ BusyBox - The Swiss Army Knife of Embedded Linux
  14. ^ http://www-128.ibm.com/developerworks/library/l-busybox/index.html
  15. ^ crunchgen man page at freebsd.org
  16. ^ Doug Thayer, Keith Miller. 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. 16–17 April 2004. 

参看[编辑]

  • toybox - complete implementation of the standard Linux command line utilities, with minimal external dependencies. by Rob Landley.

外部链接[编辑]

Wikibooks-logo.svg
您可以在维基教科书中查找此百科条目的相关电子教程: