busybox

busybox

BusyBox 是一個集成了三百多個最常用Linux命令和工具的軟體。BusyBox 包含了一些簡單的工具,例如ls、cat和echo等等,還包含了一些更大、更複雜的工具,例grep、find、mount以及telnet。有些人將 BusyBox 稱為 Linux 工具里的瑞士軍刀。簡單的說BusyBox就好像是個大工具箱,它集成壓縮了 Linux 的許多工具和命令,也包含了 Android 系統的自帶的shell。

簡介


BusyBox 將許多具有共性的小版本的UNIX工具結合到一個單一的可執行文件。這樣的集合可以替代大部分常用工具比如的GNU fileutils , shellutils等工具,BusyBox提供了一個比較完善的環境,可以適用於任何小的嵌入式系統。

發源


BusyBox 最初是由 Bruce Perens 在 1996 年為Debian GNU/Linux安裝盤編寫的。其目標是在一張軟盤上創建一個可引導的 GNU/Linux 系統,這可以用作安裝盤和急救盤。

編譯安裝


#make defconfig
#make
#make install
編譯好后在busybox目錄下生成子目錄_install,裡面的內容:
drwxr-xr-x 2 root root 4096 11月 24 15:28 bin
rwxrwxrwx 1 root root 11 11月 24 15:28linuxrc -> bin/busybox
drwxr-xr-x 2 root root 4096 11月 24 15:28 sbin
其中可執行文件busybox在需要製作文件系統映像燒入板子的情況下,busybox應放在根文件系統目錄下的bin中,其他的都是指向他的符號鏈接.

交叉編譯


要實現交叉編譯,需要設置好交叉編譯器前綴,可以使用以下命令設置前綴:
#make CROSS_COMPILE=arm-linux-uclibcgnueabi-
或者,可以由環境變數設置CROSS_COMPILE的值,CROSS_COMPILE的默認值不是可執行文件的前綴。

配置


busybox的配置程序和linux內核菜單配置方式簡直一模一樣。熟悉用make menuconfig方式配置linux內核的朋友很容易上手.
#cp busybox-1.00.tar.gz /babylinux
#cd /babylinux
#tar xvfz busybox-1.00.tar.gz
#cd busybox-1.00
#make menuconfig
下面是需要編譯進busybox的功能選項。
General Configuration應該選的選項
Show verbose applet usage messages
Runtime SUID/SGID configuration via /etc/busybox.conf
Build Options
Build BusyBox as a static binary (no shared libs)
這個選項是一定要選擇的,這樣才能把busybox編譯成靜態鏈接的可執行文件,運行時才獨立於其他函數庫。否則必需要其他庫文件才能運行,在單一個linux內核不能使它正常工作.
Installation Options
Don't use /usr
這個選項也一定要選,否則make install 后busybox將安裝在原系統的/usr下,這將覆蓋掉系統原有的命令。選擇這個選項后,make install後會在busybox目錄下生成一個叫_install的目錄,裡面有busybox和指向它的鏈接.
其它選項都是一些linux基本命令選項,自己需要哪些命令就編譯進去,一般用默認的就可以了,配置好後退出並保存。

使用技巧


可以這樣用busybox
#busybox ls
他的功能就相當運行ls命令
最常用的用法是建立指向busybox的鏈接,不同的鏈接名完成不同的功能.
#ln -s busybox ls
#ln -s busybox rm
#ln -s busybox mkdir
然後分別運行這三個鏈接:
#./ls
#./rm
#./mkdir
就可以分別完成了ls rm 和mkdir命令的功能。雖然他們都指向同一個可執行程序busybox,但是只要鏈接名不同,完成的功能就不同,很多linux網站都提供busybox的源代碼下載。
android busybox
android busybox