基于s3c2410的CramFS根文件系統(tǒng)的移植
4.2、拷貝需要加入的其他文件和鏈接庫
(1)、Busybox 是 Debian GNU/Linux 的大名鼎鼎的 Bruce Perens 首先開發(fā)的。Busybox 編譯出一個(gè)單個(gè)的獨(dú)立執(zhí)行程序,就叫做 busybox。但是它可以根據(jù)配置,執(zhí)行 ash shell的功能,以及幾十個(gè)各種小應(yīng)用程序的功能。這其中包括有一個(gè)迷你的vi編輯器,系統(tǒng)不可或缺的/sbin/init程序,以及其他諸如 ifconfig, halt, reboot, mkdir, mount, ln, ls, echo, cat等等。而所有這一切功能卻只有區(qū)區(qū)1M左右的大小,Busybox已經(jīng)成為構(gòu)建嵌入式Linux文件系統(tǒng)的必備軟件。
首先我們從官方網(wǎng)站(http://www.busybox.org/)上下載BusyBox 的版本1.0.0。
#tar xvfz busybox-1.00.tar.gz
#cd busybox-1.00
#make menuconfig
下面是需要編譯進(jìn)busybox的功能選項(xiàng),其他的可以根據(jù)需要自選。
Build Options
[*] Build BusyBox as a static binary (no shared libs)
這個(gè)選項(xiàng)是一定要選擇的,這樣才能把busybox編譯成靜態(tài)鏈接的可執(zhí)行文件,運(yùn)行時(shí)才獨(dú)立于其他函數(shù)庫,否則必需要其他庫文件才能運(yùn)行,在單個(gè)linux內(nèi)核不能使他正常工作。
[*] Do you want to build BusyBox with a Cross Compiler
選擇你自己定義的交叉編譯環(huán)境。
Installation Options
[*] don’t use /usr
這個(gè)選項(xiàng)也一定要選,否則make install 后busybox將安裝在原系統(tǒng)的/usr下,這將覆蓋系統(tǒng)原有的命令。選擇這個(gè)選項(xiàng)后,make install后會(huì)在busybox目錄下生成一個(gè)叫_install的目錄,里面有busybox和指向他的鏈接。
其他選項(xiàng)都是一些linux基本命令選項(xiàng),自己需要哪些命令就編譯進(jìn)去,一般用默認(rèn)的就可以了,配置好后退出并保存。編譯BusyBox,如果能成功編譯BusyBox,就將編譯好的busybox 復(fù)制到CramFS文件系統(tǒng)的/bin 目錄下,然后創(chuàng)建常用命令的建立快捷方式。建立快捷方式很簡(jiǎn)單,只要建一個(gè)符號(hào)鏈接,比方ln -s /bin/busybox /bin/ls,那么,執(zhí)行/bin/ls的時(shí)候,busybox 就會(huì)執(zhí)行l(wèi)s的功能,也會(huì)按照ls的方式處理命令行參數(shù)。
(2)、拷貝一些管理員控制程序到/sbin目錄下,最重要的就是要包含一個(gè)init命令,可以使用busybox提供的系統(tǒng)工具。比如 ln -s /bin/busybox /sbin/init,這樣我們就有了系統(tǒng)運(yùn)行不可或缺的 /sbin/init 程序了。
(3)、拷貝應(yīng)用程序運(yùn)行時(shí)所需要的庫到/lib,庫文件可以從PC機(jī)上的交叉編譯工具安裝目錄下拷貝,如libc- 2.2.2.so、libcryt-2.2.2.so、libm-2.2.2.so、libutil-2.2.2.so等,為部分相應(yīng)庫建立快捷方式,提供一些應(yīng)用程序按快捷方式名稱調(diào)用。值得注意的是C庫要采用C庫的版本glibc, glibc位于/lib/libc.so.6。
4.3、利用mkcramfs工具生成cramfs壓縮文件系統(tǒng)
一般情況下都要把已經(jīng)規(guī)劃好的目錄結(jié)構(gòu)轉(zhuǎn)換成一個(gè)映象文件,創(chuàng)建Cramfs文件系統(tǒng)需要mkcramfs工具,mkcramfs能把相應(yīng)的Cramfs目錄樹壓縮成為單一的映象文件,這個(gè)映象文件就是我們需要移植的文件系統(tǒng)。Mkcramfs的命令格式為:
Mkcramfs [-h] [--e edition] [-I file] [-n name] DirName OutFile
#mkcramfs root cramfs.Img
用以上的命令就可以生成我們需要的cramfs文件系統(tǒng)映象文件,我們可以發(fā)現(xiàn)原本為2.36Mbytes大小的目錄內(nèi)容,被壓縮成一個(gè)1.08Mbytes的CramFS文件系統(tǒng)映象文件,通過vivi或測(cè)試程序?qū)⑵鋵懭隖lash中就可以驗(yàn)證是否移植成功。
五、小結(jié)
CramFS是一個(gè)壓縮格式的文件系統(tǒng),如果系統(tǒng)存儲(chǔ)資源比較緊張的話,采用CramFS作為嵌入式Linux系統(tǒng)的根文件系統(tǒng)是一個(gè)不錯(cuò)的選擇。
創(chuàng)新點(diǎn):
由于嵌入式系統(tǒng)的內(nèi)存資源比較緊張, 采用CramFS作為嵌入式Linux系統(tǒng)的根文件系統(tǒng)是一種解決內(nèi)存資源緊張的比較可行的方法。本文討論了在嵌入式Linux系統(tǒng)中構(gòu)建CramFS文件系統(tǒng)的詳細(xì)過程,為解決內(nèi)存資源緊張?zhí)峁┮环N參考。
參考文獻(xiàn):
1、 李巖、榮盤祥,基于S3C44B0X嵌入式Uclinux系統(tǒng)的原理及應(yīng)用[M],清華大學(xué)出版社,2005。
2、 ARM 9 Linux實(shí)驗(yàn)教程,深圳市英蓓特信息技術(shù)有限公司[M],2005。
3、 王集森、劉昊、胡晨,嵌入式Linux中多文件系統(tǒng)的構(gòu)建[J],單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2005 12,12-15頁。
4、 周宏霖,CramFS在Linux嵌入式環(huán)境的應(yīng)用,http://www.lee-1.com/hlchou/LinuxCramFS.htm
5、 郝淑鳳等,基于ARM的uCLinux啟動(dòng)引導(dǎo)實(shí)現(xiàn)的分析[J],微計(jì)算機(jī)信息,2005,8-2,50-52頁
作者簡(jiǎn)介:
盧劍翔(1978-),男,廣西玉林人,西南科技大學(xué)在讀碩士研究生;主要研究方向:嵌入式操作系統(tǒng)。
劉成安(1965-),男,西南科技大學(xué)副教授,碩士生導(dǎo)師;主要研究方向:嵌入式系統(tǒng)開發(fā)與應(yīng)用。
胡和智(1976-),男,陜西商南人,河北工業(yè)大學(xué)廊坊分院教師,主要研究方向:集成電路設(shè)計(jì)與制造。
劉振剛(1981-),男,山東青島,西南科技大學(xué)在讀碩士研究生;主要研究方向:控制理論與控制工程。
評(píng)論