利用busybox1.1.3進行簡單的檔案系統的建立主要參考的是《linux系統移植開發文件中的步驟》我用的是NFS方式進行檔案系統的掛載,所以首先要配置好主機上的nfs檔案系統,然後將板子上的啟動引數設定好。我的板子上是sbc2410bootloadervivi。編譯環境是arm-linux-3.3.2

首先是構建根檔案系統:

#mkdir nfsd

#pwd

/home/bz/

#cd nfsd

#

nfsd中建立linux目錄樹

#mkdir bin dev etc home lib mnt proc sbin sys tmp root usr

#mkdir mnt/etc

#mkdir usr/bin usr/lib usr/sbin

#touch linuxrc

#tree

(其中的linuxrc是一個啟動指令碼,是一個shell指令碼檔案。對於簡單的檔案系統可以不用建立,因為在busybox生成的過程中會生成一個linuxrc檔案將你生成的覆蓋,但是系統能夠正常的執行)

http://www.busybox.net/downloads/busybox-1.1.3.tar.bz2/ 下載busybox-1.1.3到目錄當中,並且解壓。

進入解壓後的目錄中,配置BUSYBOX

#make menuconfig

##########################################

#####################

 Busybox Settings >

 General Configuration >

 * Support for devfs

 Build Options >

 * Build BusyBox as a static binary (no

shared libs)

/* busybox編譯為靜態連線,少了啟動時找動

態庫的麻煩 */

 * Do you want to build BusyBox with a

Cross Compiler?

 (/usr/local/arm/3.4.1/bin/arm-linux-)(按

enter鍵修改)

 Cross Compiler prefix

/* 指定交叉編譯工具路徑 */

 Init Utilities >

 * init

 * Support reading an inittab file

/* 支援init讀取/etc/inittab配置檔案,一定要選上 */

 Shells >

 Choose your default shell (ash) >(注意括號中的應該是ash,而不是none)

/* (X) ash 選中ash,這樣生成的時候才會生成

bin/sh檔案* 看看我們前頭的linuxrc指令碼的頭一句:

* #!/bin/sh 是由bin/sh來解釋執行的

*/

* ash

##########################################

#########################################

另外,按照他的這種方法做出來的檔案系統,運

行的時候 shell 並不好有,沒有歷史記錄、自

動補全、刪除字元的功能,下面介紹如何為它添

加這些功能:

 Shells —>

   Bourne Shell Options                

   【 】   Hide message . interactive shell

startup                   

   【 】   Standalone shell                 

   *   command line editing             

   *     vi-style line editing commands 

      (15)    history size                

   *     history saving                 

   *     tab completion                 

   *       username completion          

   【 】     Fancy shell prompts

##########################################

#########################################

 Coreutils >

* cp

* cat

* ls

* mkdir

* echo (basic SuSv3 version taking no options)

* env

* mv

* pwd

* rm

* touch

Editors >

* vi

Linux System Utilities >

* mount

* umount

*support mounting NFS file system

* Support loopback mounts

* Support for the old /etc/mtab file

Networking Utilities >

*inetd

/*支援inetd 超級伺服器

inetd的配置檔案為/etc/inetd.conf檔案*/

##########################################

################

 Linux Module Utilities  —>

 * insmod                 

 * rmmod                                  

* lsmod                  

 *   lsmod pretty output for 2.6.x Linux kernels                     

 * modprobe                               

 *   Multiple options parsing    

   Options common to multiple modutils 

*   Support tainted module checking with new kernels             

【 】   Support version 2.2.x to 2.4.x Linux kernels //此項一定不選!!!

*   Support version 2.6.x Linux kernels 

##########################################

##############################

編譯並且安裝Busybox

#make TARGET_ARCH=arm CROSS=arm-linux-

PREFIX=/home/bz/nfsd/ all install

PREFIX 指明安裝的路徑:就是我們根檔案系統所在的路徑。

(只要install busybox ,我們的根檔案系統下先前建立好的linuxrc就會被覆蓋為一個同名的二進位制檔案,所以事先備份好自己的linuxrc ,在安裝完busybox之後,將linuxrc複製回去就好,這裡就用它自己生成的linuxrc檔案)。

下面在在etc下建立目錄init.d

cd init.d

建立指令碼rcS

內容如下:

#!/bin/sh

儲存,並修改rcS的許可權,否則會出現Cannot run ‘/etc/init.d/rcS’:Permission denied的錯誤:

chmod 775 rcS

etc目錄下編寫掛載表fstab

proc /proc proc defaults 0 0

sysfs /sys sysfs defaults  0 0

none /dev/pts devpts mod=0622 0 0

tmpfs /dev/shm tmpfs defaults 0 0

不用其他的配置或者檔案,重啟板子,這個系統就成功的掛載上了,這也算一個比較最簡單的檔案系統了。如果想要增加功能可以在這個基礎上進行。