BusyBox

来自Local Chinese Wikipedia
跳转到导航 跳转到搜索

Template:NoteTA 脚本错误:没有“Infobox”这个模块。脚本错误:没有“Check for unknown parameters”这个模块。

BusyBox是一个遵循GPL协议、以自由软件形式发行的应用程序。Busybox在单一的可执行文件中提供了精简的Unix工具集,可运行于多款POSIX环境的操作系统,例如Linux(包括Android[1])、Hurd[2]、FreeBSD[2][3]等等。由于BusyBox执行档的档案比较小,使得它非常适合使用于嵌入式系统。作者将BusyBox称为“嵌入式Linux的瑞士军刀”。[4]

历史[编辑]

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

Enrique Zanardi负责维护BusyBox并专注在Debian脚本错误:没有“ilh”这个模块。安装系统的需求直到1998年,再由负责脚本错误:没有“ilh”这个模块。的Dave Cinege 接手。Cinege做了一些增加:建立了一个模组化的Build环境、转移BusyBox的目标到一般高阶的嵌入式系统。当1999年LRP开发进度趋缓时,脚本错误:没有“ilh”这个模块。的Erik Andersen在1999年开始正式地接手这个专案继续维护它到2006年三月。在这段期间,Linux的嵌入式系统的市场明显地成长,连带使BusyBox转趋成熟,同时扩展二者的使用群和功能。

脚本错误:没有“ilh”这个模块。是目前BusyBox的维护者。

功能[编辑]

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

单一执行档[编辑]

典型的计算机程序对每个应用程序都有个别的二进制执行档)档案。BusyBox 是单一二进制程式,这是许多应用程序的集合,在适当参数的特定方法下,每个都可透过以不同的名称(每个不同的名字借由符号链接硬连结支援[9])呼叫单一 BusyBox 二进制程式来存取。

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

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

范例[编辑]

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

/bin/busybox ls

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

/bin/ls

命令[编辑]

实际的命令列表按编译时的设置决定,在有Busybox的系统上执行busybox --list即可看到一个列表。

页面Template:Div col/styles.css没有内容。

  • ash - 符合POSIX的一个简单的shell
  • awk - 将文件解析为记录及字段后,按模式匹配操作其内容
  • cat - 将多个文件首尾相连显示于标准输出
  • chmod - 更改文件的权限设置
  • cp - 拷贝文件或目录
  • date - 打印/设置日期时间
  • dd
  • df - 印出档案系统的使用统计
  • dmesg - 查看内核信息
  • echo - 打印指定内容
  • egrep - 接受扩展正则表达式的grep
  • fgrep - 接受固定字符串模式的grep
  • grep - 列出文件或标准输入中符合模式的行
  • gzip
  • kill - 关闭一个程序
  • ln - 创建链接
  • login - 以某个用户身份登录
  • ls - 列出目录或档案
  • mdu
  • mkdir - 建立一个目录
  • more
  • mount 挂载储存装置
  • mv - 移动档案
  • netstat - 查看 TCP/IP 连接信息
  • 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

参见[编辑]

脚本错误:没有“Portal”这个模块。

注释[编辑]

  1. Template:Cite web
  2. 2.0 2.1 Template:Cite web
  3. Template:Cite web
  4. 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.
  5. Template:Cite web
  6. http://busybox.net/cgi-bin/viewcvs.cgi/trunk/busybox/shell/Config.in?rev=11083脚本错误:没有“Unsubst”这个模块。 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.
  7. Template:Cite web
  8. Template:Cite web
  9. Template:Cite web
  10. crunchgen man page页面存档备份,存于互联网档案馆) at freebsd.org页面存档备份,存于互联网档案馆
  11. 脚本错误:没有“citation/CS1”这个模块。脚本错误:没有“Unsubst”这个模块。

外部链接[编辑]

Template:Sister

Template:Embedded systems