現(xiàn)場總線的開關(guān)量I/O模塊設(shè)計(jì):操作系統(tǒng)移植與驅(qū)動(dòng)開發(fā)
5. 4嵌入式根文件系統(tǒng)的構(gòu)建
Linux的一個(gè)最重要特點(diǎn)就是它支持許多不同的文件系統(tǒng)。這使Linux非常靈活,能夠與許多其他的操作系統(tǒng)共存。Linux支持的常見的文件系統(tǒng)有:JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等。隨著時(shí)間的推移,Linux支持的文件系統(tǒng)數(shù)還會(huì)增加。
Linux是通過把系統(tǒng)支持的各種文件系統(tǒng)鏈接到一個(gè)單獨(dú)的樹形層次結(jié)構(gòu)中,來實(shí)現(xiàn)對多文件系統(tǒng)的支持的。該樹形層次結(jié)構(gòu)把文件系統(tǒng)表示成一個(gè)整個(gè)的獨(dú)立實(shí)體。無論什么類型的文件系統(tǒng),都被裝配到某個(gè)目錄上,由被裝配的文件系統(tǒng)的文件覆蓋該目錄原有的內(nèi)容。該個(gè)目錄被稱為裝配目錄或裝配點(diǎn)。在文件系統(tǒng)卸載時(shí),裝配目錄中原有的文件才會(huì)顯露出來。
文件系統(tǒng)都會(huì)被燒錄在與某一存儲(chǔ)設(shè)備上。在嵌入式設(shè)備上很少使用大容量的ID E硬盤作為自己的存儲(chǔ)設(shè)備,嵌入式設(shè)備往往選用ROM、閃存( flash memory )等作為它的主要存儲(chǔ)設(shè)備。在嵌入式設(shè)備上選用哪種文件系統(tǒng)格式與閃存的特點(diǎn)是相關(guān)的。
本硬件平臺是以NAND Flash (閃存)作為主要的存儲(chǔ)媒介,這類存儲(chǔ)器與傳統(tǒng)存儲(chǔ)器最大的不同在于其是按扇區(qū)擦除、按位編程。Flash存儲(chǔ)介質(zhì)的這種技術(shù)特點(diǎn)使得傳統(tǒng)的Linux文件系統(tǒng)已經(jīng)不再適合在其上構(gòu)建,比如Ext2文件系統(tǒng),是專為像IDE那樣的塊設(shè)備設(shè)計(jì)的,沒有提供很好的扇區(qū)擦寫支持,不支持損耗平衡,沒有掉電保護(hù),也沒有很好的扇區(qū)管理。這些缺點(diǎn)都表明,在Flash存儲(chǔ)介質(zhì)上應(yīng)用為設(shè)備設(shè)計(jì)的傳統(tǒng)文件系統(tǒng)不是一個(gè)很好的選擇。基于這樣的原因,產(chǎn)生了很多專為Flash設(shè)備而設(shè)計(jì)的文件系統(tǒng)。
利用BusyBox構(gòu)建嵌入式根文件系統(tǒng)
Linux下的根文件系統(tǒng)目錄結(jié)構(gòu)如下:
目錄 習(xí)慣用法
/bin 用戶命令所在目錄
/dev 硬件設(shè)備文件及其它特殊文件
/etc 系統(tǒng)配置文件,包括啟動(dòng)文件等
/home 多用戶主目錄
/lib 鏈接庫文件目錄
/mnt 裝配點(diǎn),用于裝配臨時(shí)文件系統(tǒng)或其他的文件系統(tǒng)
/opt 附加的軟件套件目錄
/proc 虛擬文件系統(tǒng),用來顯示內(nèi)核及進(jìn)程信息
/root root用戶主目錄
/sbin 系統(tǒng)管理員命令目錄
/tmp 臨時(shí)文件目錄/usr用戶命令目錄
/var 監(jiān)控程序和工具程序所存放的可變數(shù)據(jù)
對于用途單一的嵌入式系統(tǒng),上邊的一些用于多用戶的目錄可以省略,例如/home、/opt、/root目錄等。而/bin、/dev、/etc、/lib、/proc、/sbin和/usr目錄,是幾乎每個(gè)系統(tǒng)必備的目錄,也是不可或缺的目錄。
制作根文件系統(tǒng),就是創(chuàng)建各種目錄,并在里面創(chuàng)建各種文件。比如在/bin、/sbin目錄下存放各種可執(zhí)行程序,在/etc目錄下存放配置文件,在/lib目錄下存放庫文件。使用Busy box制作根文件系統(tǒng),就是利用Busy box來創(chuàng)建/bin、/sbin等目錄下的可執(zhí)行的文件。
5.4.1 Buybox簡介
Buybox被非常形象地稱為嵌入式Linux系統(tǒng)中的“瑞士軍刀”,它是一個(gè)Uinx工具集。它可提供一百多種GNU常用工具、shell腳本工具等。雖然Buybox中的這些工具相對于GNU提供的完全工具有所簡化,但是它們都很實(shí)用。
Buybox在設(shè)計(jì)上就充分考慮了硬件資源受限的特殊工作環(huán)境。它采用模塊化設(shè)計(jì),使得它很容易被定制和裁剪??梢愿鶕?jù)實(shí)際的用途,裁剪出一個(gè)最精簡的工具集。
Buybox的特色是所有命令都編譯成一個(gè)文件:Buybox,其他命令工具(如sh、cp、ls等)都是指向Buybox文件的鏈接。在使用Buybox生成的工具時(shí),會(huì)根據(jù)工具的文件名鏈接到特定的處理程序。這樣,所有這些程序只需被加載一次,而所有的Buybox工具組件都可以共享相同的代碼段,這在很大程度上節(jié)省了系統(tǒng)的內(nèi)存資源也提高了應(yīng)用程序的執(zhí)行速度。
Buybox僅需要幾百KB的空間就可以運(yùn)行,這使得Buybox很適合嵌入式系統(tǒng)使用。同時(shí),Buybox的安裝腳本也使得它很容易建立基于Buybox的根文件系統(tǒng)。通常只需要添加/dev、/etc等目錄以及相關(guān)的配置腳本,就可以實(shí)現(xiàn)一個(gè)簡單的根文件系統(tǒng)。
5.4.2 Buybox的配置編譯
將Buybox的源碼從網(wǎng)站上下載到本地目錄,運(yùn)行命令:
$tarzxvf Buybox-1.1.3.tar.gz
$cd Buybox-1.1.3
$make menuconfig
在虛擬機(jī)上配置界面如圖5.3所示
典型的Buybox文件大小在動(dòng)態(tài)鏈接的情況下是300KB左右,靜態(tài)鏈接為800KB左右,用它實(shí)現(xiàn)的文件系統(tǒng)完全可以控制在1MB以下。
5.4.3根文件系統(tǒng)鏡像構(gòu)建
通常情況下根文件系統(tǒng)鏡像是系統(tǒng)構(gòu)建的最后一步。利用交叉編譯工具將應(yīng)用程序、內(nèi)核分別配置和編譯之后,把獲得的C鏈接庫、內(nèi)核模塊以及應(yīng)用程序按照FHS規(guī)則放到相應(yīng)位置,利用文件系統(tǒng)自帶的工具mkyaffs image來最終生成一個(gè)根文件系統(tǒng)鏡像file system.yaffs.
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)linux相關(guān)文章:linux教程
評論