BusyBox
原作者 | 布魯斯·佩倫斯 |
---|---|
開發者 | Erik Andersen[1]、Rob Landley[2]、Denys Vlasenko[3]及其他人 |
首次釋出 | 1999年11月4日[4] |
目前版本 | |
原始碼函數庫 | |
程式語言 | C |
作業系統 | 類Unix系統 |
檔案大小 | 2.1 MB |
類型 | |
特許條款 | 僅GNU GPL第二版(1.2.3版或更新[7]) |
網站 | www |
BusyBox是一個遵循GPL協定、以自由軟件形式發行的應用程式。Busybox在單一的可執行檔案中提供了精簡的Unix工具集,可執行於多款POSIX環境的作業系統,例如Linux(包括Android[8])、Hurd[9]、FreeBSD[9][10]等等。由於BusyBox執行檔的檔案比較小,使得它非常適合使用於嵌入式系統。作者將BusyBox稱為「嵌入式Linux的瑞士軍刀」。[11]
歷史
[編輯]BusyBox最初是由布魯斯·斐倫斯在1996年為Debian GNU/Linux的軟碟安裝編寫的[12],其原始構想是希望在一張軟碟上能放入一個開機系統,以作為急救盤和安裝盤。後來它變成了嵌入式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。[13][14]在 BusyBox的網站上可以找到所有功能的列表。[15]
單一執行檔
[編輯]典型的電腦程式對每個應用程式都有個別的二進制(執行檔)檔案。BusyBox 是單一二進制程式,這是許多應用程式的集合,在適當參數的特定方法下,每個都可透過以不同的名稱(每個不同的名字藉由符號連結或硬連結支援[16])呼叫單一 BusyBox 二進制程式來存取。
BusyBox受惠於單一執行檔策略,如此一來省去了每個執行檔必需有的檔頭(特別是ELF的執行檔),這也讓Busybox不需要函數庫便可達成程式碼共用。這個技巧與FreeBSD中的crunchgen[17]指令相似。與使用crunchgen建立的合併工具程式不同在於,Busybox只提供每個工具程式的簡化版(例如:ls指令不提供排序功能)。
共用通用的程式碼,並以程式大小最佳化為目標,使以BusyBox建構的系統所需要的空間遠小於使用對應的完整工具所需要的空間。研究[18]比較了GNU、Busybox、asmutils及Perl實作的標準Unix指令發現特定狀況下,BusyBox的執行速度會優於其他實作,但並非總是如此。
範例
[編輯]BusyBox所包含的程式只需要簡單的將名稱附加在第一個參數即可執行:
/bin/busybox ls
更常見的作法是,這些指令會以連結(使用硬連結或者符號連結)至BusyBox執行檔,BusyBox會偵測其被連結時的名稱,並執行對應的指令。舉例來說,只要將/bin/ls連結到/bin/busybox,即可執行
/bin/ls
命令
[編輯]實際的命令列表按編譯時的設置決定,在有Busybox的系統上執行busybox --list
即可看到一個列表。
- 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
參見
[編輯]註釋
[編輯]- ^ Erik Andersen's Homepage. [2010-07-28]. (原始內容存檔於2010-06-13).
- ^ 活躍的專案 (頁面存檔備份,存於互聯網檔案館),Rob Landley的網頁
- ^ Denys Vlasenko (頁面存檔備份,存於互聯網檔案館),BusyBox維護者
- ^ 存档副本 (PDF). [2015-10-30]. (原始內容 (PDF)存檔於2015-10-30).
- ^ BusyBox 1.36.1 (stable).
- ^ https://busybox.net/news.html.
- ^ BusyBox. [2015-07-15]. (原始內容存檔於2015-09-01).
- ^ 存档副本. [2017-02-23]. (原始內容存檔於2016-11-28).
- ^ 9.0 9.1 存档副本. [2014-03-31]. (原始內容存檔於2013-01-06).
- ^ 存档副本. [2014-03-31]. (原始內容存檔於2014-01-02).
- ^ 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.
- ^ 存档副本. [2020-09-18]. (原始內容存檔於2018-06-15).
- ^ 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. [2010-07-28]. (原始內容存檔於2010-03-10).
- ^ BusyBox - The Swiss Army Knife of Embedded Linux. [2010-07-28]. (原始內容存檔於2010-06-11).
- ^ 存档副本. [2010-07-28]. (原始內容存檔於2008-12-09).
- ^ crunchgen man page (頁面存檔備份,存於互聯網檔案館) at freebsd.org (頁面存檔備份,存於互聯網檔案館)
- ^ 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.[永久失效連結]
外部連結
[編輯]- 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