利用busybox1.1.3 進行簡單的檔案系統的建立主要參考的是《linux系統移植開發文件中的步驟》我用的是NFS方式進行檔案系統的掛載,所以首先要配置好主機上的nfs檔案系統,然後將板子上的啟動引數設定好。我的板子上是sbc2410,bootloader是vivi。編譯環境是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
不用其他的配置或者檔案,重啟板子,這個系統就成功的掛載上了,這也算一個比較最簡單的檔案系統了。如果想要增加功能可以在這個基礎上進行。