?很久以前就用過busybox了, 最近想在自己的這塊MC2410板上做自己的文件系統(tǒng).搜集了一些資料, 遇到了一些困難.? 現(xiàn)寫出來與大家分享其過程:
?
環(huán)境:
?host machine :Fedora 2
?target machine : MC2410 (S3C2410)? 上面跑的 Linux version 2.4.18-rmk7-pxa1 (root@Rhvd) (gcc version 2.95.2 20000516 (releas6) 內(nèi)核.
?安裝交叉編譯工具鏈, 我使用的是arm-linux-3.32 ,然后下載busybox-1.2.1,
?
?說明: linux上的軟件版本很重要,有時(shí)版本不一樣,就不能正常編譯,經(jīng)驗(yàn)之談. 我看了網(wǎng)上的人家做的一般是 arm-linux-3.32 + busybox-1.1.3 ,說是編譯沒有問題, 但結(jié)果我卻出了問題,可能我的host OS 不是Rh9吧
?順便說一句: 不知為何搞嵌入式的公司都用Rh9, 由于在網(wǎng)上現(xiàn)在很難下載到Rh9,就裝了Fedora.就不信這個(gè)邪.
?
?1: 交叉編譯busybox? ,make menuconfig
?這里需要注意的地方:
?
? 在Build Options里面
? Build busybox? as? a staic binary (no shared libs) ,我是選yes, 畢竟靜態(tài)鏈接比較簡(jiǎn)單, 先把簡(jiǎn)單的做成功再做復(fù)雜的.
? Build shared libbusybox? 沒有選
? Do you want to build BusyBox with a Cross Compiler
?填寫/usr/local/arm/3.3.2/bin/arm-linux-
?
? 在Installation Options里面可以設(shè)置安裝的路徑,即設(shè)置為新文件系統(tǒng)的根目錄。當(dāng)然也可以用缺省的 _install目錄,安裝之后再?gòu)?fù)制到新文件系統(tǒng)中去。
?
? Shells >???????????????????????????????????????????????????????????????
??????????????????? Choose your default shell (ash) >????????????????????????????
??????????????????????? /* (X) ash 選中ash,這樣生成的時(shí)候才會(huì)生成bin/sh文件
特別注意這個(gè)地方: 剛開始沒有選擇這個(gè)Choose your default shell (none) >為ash, 由于默認(rèn)是none ,結(jié)果做成的文件系統(tǒng)啟動(dòng)后出現(xiàn): sh: applet not found
其他的配置見文章最后的.config文件內(nèi)容
??????????????????
? make? TARGET_ARCH=arm all (看到網(wǎng)上的是這樣的, 剛開始我一直就是用 make ,沒有加參數(shù))
?
? make instll (將在_INSTLL生成 bin,sbin兩個(gè)文件夾和一個(gè)linuxrc文件.
?
?
? 2: 創(chuàng)建文件系統(tǒng)的啟動(dòng)腳本
?
? mkdir root_fs
? cp???? _INSTLL生成的bin,sbin兩個(gè)文件夾?? .
?
? 在這里,我沒有要生成的linuxrc, 參考了網(wǎng)上的資料, 寫了一個(gè)
linuxrc------->
#!/bin/sh
/sbin/insmod -f /lib/yaffs.o
?
?
/bin/mount? -f -t cramfs? -o remount,ro? /dev/mtdblock/3 /
?
/bin/mount -t? yaffs /dev/mtdblock/4?? /usr
?
exec /sbin/init
然后chmod 777 linuxrc? ,因?yàn)閮?nèi)核啟動(dòng)參數(shù)中init=/linuxrc,可見linuxrc肯定要是可執(zhí)行的文件.
?
?這個(gè)linxurc特別重要, 影響啟動(dòng)是否成功.
?
?由于我這里用到了YAFFS系統(tǒng), 故將yaffs.o考到root_fs/lib之下
?
?
? 我自己對(duì)照了一下原來板子提供的文件系統(tǒng)里的啟動(dòng)腳本文件,研究發(fā)現(xiàn)/etc/下面須有init.d/rcS,
? passwd,? group, fstab
? 至于是否是非要這幾個(gè)文件不可, 還有待考證.
?
? 這里只是列出我的過程:
? init.d/rcS ------->
?
?#! /bin/sh
/bin/mount -o remount,rw? /
/bin/mount -a
/bin/hostname? hjembed? (這句很明顯配置hostname 的,要不要隨你)
fstab ------->
none????????? /proc?????????? proc????? defaults??? 0?? 0
none???????? /dev/pts???????? devpts??? mode=0622???? 0??? 0
tmpfs??????? /dev/shm???????? tmpfs???? defaults????? 0??? 0
?
?
group------->
root:x:0:root
resolv.conf------->
nameserver? 202.114.88.10
nameserver? 202.114.160.10 (這里很明顯配置DNS的,要不要隨你)
3: 試驗(yàn)新的文件系統(tǒng)
./mkcramfs? root_fs? root_fs.cramfs
將root_fs.cramfs燒寫進(jìn)板子,發(fā)現(xiàn)啟動(dòng)正常,mount nfs文件系統(tǒng)也沒有問題.
?
另: 在編譯busybox-1.1.3時(shí),
評(píng)論
查看更多