BusyBox

BusyBox是一個遵循GPL協議、以自由軟體形式發行的應用程式。Busybox在单一的可执行文件中提供了精简的Unix工具集,可运行于多款POSIX环境的操作系统,例如Linux(包括Android[6])、Hurd[7]、FreeBSD[8][9]等等。由於BusyBox執行檔的檔案比較小,使得它非常適合使用於嵌入式系统。作者将BusyBox稱為「嵌入式Linux的瑞士軍刀」。[10]

BusyBox
原作者布鲁斯·佩伦斯
開發者Erik Andersen[1]、Rob Landley[2]、Denys Vlasenko[3]及其他人
初始版本1999年11月4日1999-11-04[4]
穩定版本
1.32.1
(2021年1月1日2021-01-01
預覽版本
1.33.0
(2020年12月29日2020-12-29
源代码库
编程语言C
操作系统类Unix系统
文件大小2.1 MB
类型
许可协议GNU GPL第二版(1.2.3版或更新[5]
网站www.busybox.net

歷史

BusyBox最初是由布魯斯·斐倫斯在1996年為Debian GNU/Linux的軟碟安装編寫的[11],其原始構想是希望在一張軟碟上能放入一個開機系統,以作為急救盤和安裝盤。後來它變成了嵌入式Linux設備和系統和Linux發行版安裝程序的實質標準,因為每個Linux執行檔需要數KB的空間,而整合兩百多個程式的BusyBox可以節省大量空間。例如:Debian GNU/Linux的安裝光碟以BusyBox作為Shell程式。

Enrique Zanardi負責維護BusyBox並專注在Debian启动软盘安裝系統的需求直到1998年,再由負責Linux路由器计划的Dave Cinege 接手。Cinege做了一些增加:建立了一個模組化的Build環境、轉移BusyBox的目標到一般高階的嵌入式系統。當1999年LRP開發進度趨緩時,Lineo, Inc.的Erik Andersen在1999年開始正式地接手這個專案繼續維護它到2006年三月。在這段期間,Linux的嵌入式系統的市場明顯地成長,連帶使BusyBox轉趨成熟,同時擴展二者的使用群和功能。

丹尼斯·弗拉先科是目前BusyBox的維護者。

功能

BusyBox可以被自訂化以提供一個超過兩百種功能的子集。它可以提供多數詳列在單一UNIX規範裡的功能,以及許多使用者會想在Linux系統上看到的功能。BusyBox使用ash[12][13]在 BusyBox的網站上可以找到所有功能的列表。[14]

單一可執行檔

典型的電腦程式對每個應用程式都有個別的二進制執行檔)檔案。BusyBox 是一單一二進制程式,這是許多應用程式的集合,在適當參數的特定方法下,每個都可透過以不同的名稱(每個不同的名字藉由符号链接硬連結支援[15])呼叫單一 BusyBox 二進制程式來存取。

BusyBox受惠於單一可執行檔策略,如此一來省去了每個執行檔必需有的檔頭(特別是ELF的可執行檔),這也讓Busybox不需要函式庫便可達成程式碼共用。這個技巧與FreeBSD中的crunchgen[16]指令相似。與使用crunchgen建立的合併工具程式不同在於,Busybox只提供每個工具程式的簡化版(例如:ls指令不提供排序功能)。

共享通用的程式碼,並以程式大小最佳化為目標,使以BusyBox建構的系統所需要的空間遠小於使用對應的完整工具所需要的空間。研究[17]比較了GNU、Busybox、asmutilsPerl實作的標準Unix指令發現特定狀況下,BusyBox的執行速度會優於其他實作,但並非總是如此。

範例

BusyBox所包含的程式只需要簡單的將名稱附加在第一個參數即可執行:

/bin/busybox ls

更常見的作法是,這些指令會以連結(使用硬連結或者符号链接)至BusyBox可執行檔,BusyBox會偵測其被連結時的名稱,並執行對應的指令。舉例來說,只要將/bin/ls連結到/bin/busybox,即可執行

/bin/ls

命令

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

參見

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

註釋

  1. . [2010-07-28]. (原始内容存档于2010-06-13).
  2. 活躍的專案 页面存档备份,存于,Rob Landley的網頁
  3. Denys Vlasenko 页面存档备份,存于,BusyBox維護者
  4. (PDF). [2015-10-30]. (原始内容 (PDF)存档于2015-10-30).
  5. . [2015-07-15]. (原始内容存档于2015-09-01).
  6. . [2017-02-23]. (原始内容存档于2016-11-28).
  7. . [2014-03-31]. (原始内容存档于2013-01-06).
  8. . [2014-03-31]. (原始内容存档于2013-01-06).
  9. . [2014-03-31]. (原始内容存档于2014-01-02).
  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. . [2020-09-18]. (原始内容存档于2018-06-15).
  12. http://busybox.net/cgi-bin/viewcvs.cgi/trunk/busybox/shell/Config.in?rev=11083%5B%5D 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.
  13. . [2010-07-28]. (原始内容存档于2010-03-10).
  14. . [2010-07-28]. (原始内容存档于2010-06-11).
  15. . [2010-07-28]. (原始内容存档于2008-12-09).
  16. crunchgen man page 页面存档备份,存于 at freebsd.org 页面存档备份,存于
  17. Doug Thayer, Keith Miller. (PDF). . University of Minnesota, Morris. 16–17 April 2004.

外部連結

維基教科書中的相關電子:BusyBox vi
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.