引子:做了兩年嵌入式開發,一直想把學到和自己的一些收獲記錄下來,也方便自己查找,今天開始,慢慢把自己凌亂的東西整理下來,順便當溫習。
關於busybox的移植,網上有很多資料,這裡只是做了個簡單的移植到CSKY CPU上得介紹並整理自己使用過程中遇到的問題。
嵌入式系統由於存儲空間的限制,使得其對程序大小有嚴格的限制。特別是在制作根文件系統時,更要注意。而使用BusyBox就可以大大的簡化根文件系統的制作。編譯安裝後的BusyBox只有一個二進制可執行文件busybox,它實現了幾乎所有常用、必須的應用程序(比如init,shell,getty,ls,cp等等),而這些應用程序都以符號鏈接的形式存在。對用戶來說,執行命令的方法並沒有改變,命令行調用會作為一個參數傳給busybox,即可完成相應的功能。使用BusyBox制作的根文件系統既可以節省大量的空間,還節省了大量的交叉編譯的工作。
登陸BusyBox的官方網站(BusyBox http://www.linuxidc.com/Linux/2011-08/40704.htm )下載源碼包。下面以busybox-1.10.4版本為例說明編譯和安裝BusyBox的過程。
一、配置、編譯和安裝Busybox-1.10.4
$tar -xjvf busybox-1.9.1.tar.bz2
修改Makefile文件:
$ vi Makefile
......(第174行附近)
#ARCH ?=$(SUBARCH)
#CROSS_COMPILE ?=
改為
ARCH =ckcore
CROSS_COMPILE =ckcore-elf-
然後make menuconfig進行配置,在原有的基礎上修改如下:
Busybox Settings --->
Installation Options --->
[*] Don't use/usr
(/home/hujs/rootfs)BusyBox installation prefix
Build Options-à
[ ] Build with Large File Support(for accessing files > 2 GB) (不要選擇,不然會使用C庫中stat64、lseek64等函數代替stat、seek,使得文件目錄相關命令的布道正確的統計信息)
Busybox Library Tuning --->
[*] Support for /etc/networks
[*] Additional editing keys
[*] vi-style line editing commands
(15) History size
[*] History saving
[*] Tab completion
[*] Username completion
[*] Fancy shell prompts
Login/Password Management Utilities --->選項全部N掉,後面單獨使用TinyLogin。(因為集成的好像不是很好用,網上這樣說)
Linux Module Utilities --->
[N] Support version 2.2.x to 2.4.x Linux kernels
Shells --->
--- Ash Shell Options (由於Ash使用vfork,在linux2.6內核中使用不流暢,故不用ash。一般使用bash,busybox沒有集成bash,要網上單獨下載編譯。也可使用busybox自帶的msh、hsh或lsh)
其他的選項根據需要配置。《構建基本的嵌入式Linux根文件系統》:http://www.linuxidc.com/Linux/2011-10/44733.htm