BusyBox

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

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

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

是目前BusyBox的維護者。

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

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

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

共享通用的程式碼，並以程式大小最佳化為目標，使以BusyBox建構的系統所需要的空間遠小於使用對應的完整工具所需要的空間。研究比較了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

參見

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

註釋

外部連結

 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

命令壳层
嵌入式Linux
自由電腦程式設計工具
用C編程的自由軟體
Unix软件