基于S3C2440的busybox的移植 yaffs根文件系統(tǒng)制作
操作系統(tǒng):Linux2.6.28.7
交叉編譯工具:arm-linux-gcc-3.4.1
飛凌公司默認(rèn)的文件系統(tǒng),不具有文件延伸功能,比如在/dev下有mmcblk0p1這個(gè)文件,在掛載SD卡驅(qū)動(dòng)時(shí),需要敲入命令mount /dev/mmcblk0p1,如果具有延伸功能,在敲入mm后,可以直接按TAB鍵,如果/dev目錄下只有一個(gè)以mm形狀的文件,將會(huì)自動(dòng)補(bǔ)全后面的字符。初步推斷該功能應(yīng)該為busybox集成,從網(wǎng)上下載busybox-1.9.2.tar.bz2,計(jì)劃安裝該版本的busybox。
第一步:下載busybox源代碼:http://busybox.net/downloads/busybox-1.9.2.tar.bz2
解壓:
tar jxf busybox-1.9.2.tar.bz2
第二步:修改makefile中的174行的arch和編譯工具鏈頭:
ARCH ?= arm
CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux-
第三步:make menuconfig.修改編譯配置選項(xiàng),參考如下設(shè)置:
其他使用默認(rèn)設(shè)置。
第四步:編譯busybox
make install
在busybox/_install目錄下會(huì)生成busybox文件。同時(shí),在解壓的當(dāng)前目錄也會(huì)存在該文件。
第五步:修改busybox的文件屬性
chmod 777 busybox
必須要修改屬性,否則可能造成無(wú)法啟動(dòng)文件系統(tǒng)。
第六步:將新生成的busybox替換掉原來(lái)的文件,在文件系統(tǒng)根目錄的bin目錄下。
第七步:替換busybox所需要的庫(kù)文件。這一步很關(guān)鍵,使用不同版本的交叉編譯工具編譯出來(lái)的busybox,所使用的庫(kù)是不同的。FL2440提供的busybox使用的3.3.2的交叉編譯工具,這里我們使用的3.4.1的版本,因此有必要替換掉原來(lái)的lib文件。如果不替換,啟動(dòng)系統(tǒng)時(shí)將出現(xiàn)如下錯(cuò)誤:
Failed to execute /linuxrc. Attempting defaults...
busybox使用的庫(kù)在如下路徑:
/usr/local/arm/3.4.1/arm-linux/lib
這里因交叉編譯環(huán)境安裝路徑不同而有所差異。將該目錄下的*.so,*.so.*,*.a,全拷備到根文件系統(tǒng)的lib目錄下,有文件重命名的直接覆蓋,刪除里面一些不必要的庫(kù)文件,如*jpeg*等,否則會(huì)出現(xiàn)壓縮的文件系統(tǒng)過(guò)大而燒不進(jìn)去的現(xiàn)象。
第八步:使用mkyaffs2image工具制作文件系統(tǒng):
./mkyaffs2image qte_yaffs qte.yaffs
第九步:擦除開(kāi)發(fā)板上的rootfs文件系統(tǒng)分區(qū),重新下載新生成的文件系統(tǒng),重啟開(kāi)發(fā)板。
第十步:這時(shí)已經(jīng)能夠正常進(jìn)入控制臺(tái),但是彈出如下錯(cuò)誤提示:
mdev: /etc/mdev.conf: No such file or directory
在文件系統(tǒng)的etc下新建一個(gè)空文件mdev.conf,另外修改/etc/init.d下的rcS文件的最后一行為exec /usr/etc/rc.touch,以支持觸摸屏,默認(rèn)為支持鼠標(biāo)。
第十一步:再次制作文件系統(tǒng),同第八步,然后擦除rootfs文件系統(tǒng)分區(qū),重新下載最新的文件系統(tǒng),重啟開(kāi)發(fā)板。這時(shí)一切正常。
第十二步:嘗試掛載SD卡驅(qū)動(dòng),或者使用busybox提供的相關(guān)命令,這次已經(jīng)具備敲命令按TAB鍵延伸的功能了。
注:
制作過(guò)程中可能遇到文件系統(tǒng)大于64M,由于fl2440內(nèi)存64M,不可能下載下來(lái),所以可以先刪除/usr目錄下有關(guān)圖片等文件,燒完之后,再copy回去即可。硬件平臺(tái):FL2440
操作系統(tǒng):Linux2.6.28.7
交叉編譯工具:arm-linux-gcc-3.4.1
飛凌公司默認(rèn)的文件系統(tǒng),不具有文件延伸功能,比如在/dev下有mmcblk0p1這個(gè)文件,在掛載SD卡驅(qū)動(dòng)時(shí),需要敲入命令mount /dev/mmcblk0p1,如果具有延伸功能,在敲入mm后,可以直接按TAB鍵,如果/dev目錄下只有一個(gè)以mm形狀的文件,將會(huì)自動(dòng)補(bǔ)全后面的字符。初步推斷該功能應(yīng)該為busybox集成,從網(wǎng)上下載busybox-1.9.2.tar.bz2,計(jì)劃安裝該版本的busybox。
第一步:下載busybox源代碼:http://busybox.net/downloads/busybox-1.9.2.tar.bz2
解壓:
tar jxf busybox-1.9.2.tar.bz2
第二步:修改makefile中的174行的arch和編譯工具鏈頭:
ARCH ?= arm
CROSS_COMPILE ?= /usr/local/arm/3.4.1/bin/arm-linux-
第三步:make menuconfig.修改編譯配置選項(xiàng),參考如下設(shè)置:
其他使用默認(rèn)設(shè)置。
第四步:編譯busybox
make install
在busybox/_install目錄下會(huì)生成busybox文件。同時(shí),在解壓的當(dāng)前目錄也會(huì)存在該文件。
第五步:修改busybox的文件屬性
chmod 777 busybox
必須要修改屬性,否則可能造成無(wú)法啟動(dòng)文件系統(tǒng)。
第六步:將新生成的busybox替換掉原來(lái)的文件,在文件系統(tǒng)根目錄的bin目錄下。
第七步:替換busybox所需要的庫(kù)文件。這一步很關(guān)鍵,使用不同版本的交叉編譯工具編譯出來(lái)的busybox,所使用的庫(kù)是不同的。FL2440提供的busybox使用的3.3.2的交叉編譯工具,這里我們使用的3.4.1的版本,因此有必要替換掉原來(lái)的lib文件。如果不替換,啟動(dòng)系統(tǒng)時(shí)將出現(xiàn)如下錯(cuò)誤:
Failed to execute /linuxrc. Attempting defaults...
busybox使用的庫(kù)在如下路徑:
/usr/local/arm/3.4.1/arm-linux/lib
這里因交叉編譯環(huán)境安裝路徑不同而有所差異。將該目錄下的*.so,*.so.*,*.a,全拷備到根文件系統(tǒng)的lib目錄下,有文件重命名的直接覆蓋,刪除里面一些不必要的庫(kù)文件,如*jpeg*等,否則會(huì)出現(xiàn)壓縮的文件系統(tǒng)過(guò)大而燒不進(jìn)去的現(xiàn)象。
第八步:使用mkyaffs2image工具制作文件系統(tǒng):
./mkyaffs2image qte_yaffs qte.yaffs
第九步:擦除開(kāi)發(fā)板上的rootfs文件系統(tǒng)分區(qū),重新下載新生成的文件系統(tǒng),重啟開(kāi)發(fā)板。
第十步:這時(shí)已經(jīng)能夠正常進(jìn)入控制臺(tái),但是彈出如下錯(cuò)誤提示:
mdev: /etc/mdev.conf: No such file or directory
在文件系統(tǒng)的etc下新建一個(gè)空文件mdev.conf,另外修改/etc/init.d下的rcS文件的最后一行為exec /usr/etc/rc.touch,以支持觸摸屏,默認(rèn)為支持鼠標(biāo)。
第十一步:再次制作文件系統(tǒng),同第八步,然后擦除rootfs文件系統(tǒng)分區(qū),重新下載最新的文件系統(tǒng),重啟開(kāi)發(fā)板。這時(shí)一切正常。
第十二步:嘗試掛載SD卡驅(qū)動(dòng),或者使用busybox提供的相關(guān)命令,這次已經(jīng)具備敲命令按TAB鍵延伸的功能了。
注:
制作過(guò)程中可能遇到文件系統(tǒng)大于64M,由于fl2440內(nèi)存64M,不可能下載下來(lái),所以可以先刪除/usr目錄下有關(guān)圖片等文件,燒完之后,再copy回去即可。
評(píng)論