歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

BusyBox的移植及注意事項

引子:做了兩年嵌入式開發,一直想把學到和自己的一些收獲記錄下來,也方便自己查找,今天開始,慢慢把自己凌亂的東西整理下來,順便當溫習。

關於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)

其他的選項根據需要配置。

配置完成後保存並
$make
$make install
接下來可用編譯出的寫過制作根文件系統,更多參見

《構建基本的嵌入式Linux根文件系統》:http://www.linuxidc.com/Linux/2011-10/44733.htm

Copyright © Linux教程網 All Rights Reserved