ramfs,nfs等,為了對各類文件系統進行統壹管理,linux引入了虛擬文件系統vfs(virtual file system),為各類文件系統提供壹個統壹的應用編程接口。
文件系統類型主要有如下:
根據存儲設備的硬件特性,系統需求,不同的文件系統類型有不同的應用場合。在嵌入式linux應用中,主要的存儲設備為ram和flash,常用的基於存儲設備的文件系統類型包括:jffs2,yaffs,cramfs,ramdisk,ramfs等。
基於flash的文件系統
Flash(閃存)作為嵌入式系統的主要存儲媒介,主要有nor和nand兩種技術。flash存儲器的擦寫次數是有限的,nand閃存還有特殊的硬件接口和讀寫時序。因此,必須針對flash的硬件特性設計符合應用要求的文件系統。
jffs2:主要用於nor型flash,特點是可讀寫,支持數據壓縮的日誌型文件系統。
yaffs/yaffs2:主要用於nand型flash,支持跨平臺。
cramfs:只讀的壓縮文件系統。可用於兩種flash。
ramdisk:基於ram的文件系統。是將壹部分固定大小的內存當做塊設備來用。它並非是壹個實際的文件系統,而是壹種將實際的文件系統裝入內存的機制。將壹些經常訪問而又無需更改的文件通過ramdisk放在內存中,可以明顯的提高系統的性能。
initramfs:基於ram的文件系統。initramfs出現在2.6內核中,它類似於tmpfs,是壹種基於內存的文件系統,它的使用不需要創建內存塊設備。增加文件到ramfs會自動配置更多的內存,並刪除或截去文件以釋放內存。(若ramdisk沒有滿,已被占用的額外的內存也不能用來做其它事情,若ramdisk滿了,但其它仍有閑置的內存,也必須重新格式化以後才能擴展使用)
nfs:是由sun開發的壹種在不同機器之間通過網絡***享文件的技術。在嵌入式linux系統的開發調試階段,可以利用該技術在主機上建立基於nfs的根文件系統,掛載到嵌入式設備,可以很方便的修改根文件系統的內容。
Initramfs文件系統其實就是壓縮的ramdisk文件系統,估計大家很少又聽說過的,我也壹樣,但是我這次調試板子的時候用的NFS文件系統,發現固化文件系統時,沒有什麽好選擇的,u-boot不能直接支持yaffs2,需添加補丁;ramdisk不能直接固化到flash上,jffs2和cramfs都需要其他工具制作,最後找到了Initramfs文件系統。Inittamfs是將ramdisk文件文件系統被編譯到內核中,其實就是ramdisk文件系統(Inital ramdisk filesystem)。在制作initramfs文件系統時,我們首先需要制作ramdisk文件系統,這個挺簡單的,資料也挺齊全的,我這裏簡單介紹下:
1、創建根文件系統的目錄
mkdir rootfs
cd rootfs
mkdir bin dev etc lib proc sbin sys usr mnt tmp var
mkdir usr/bin usr/lib usr/sbin lib/modules
2、創建設備文件
cd /dev
mknod -m 666 console c 5 1
mknod -m 666 null c 3 1
cd ..
3、安裝/etc
tar etc.tar.gz -c /xxx/rootfs
這步我就不提供資源了,我也是在國嵌上找到找到的,感興趣的自己可以找找看,裏面東西堵都不是很難。
4、編譯內核模塊
進入Linux內核目錄(linux-2.6.30.4)
make modules 註意:最好將內核根目錄下的Makefile文件中的ARCH改成arm CROSS-COMPILE改成arm-linux-,因為很多地方會用到這些兩個環境變量,同時在宿主機上編譯驅動程序時,如果沒有修改這兩個變量,會報奇怪的錯誤:/pengrui18/article/details/12044369
5、安裝內核模塊
make modules_install INSTALL_MOD_PATH=/xxx/rootfs
6、配置busybox
進入busybox目錄執行make menuconfig
a、進入Busybox Setting->
build options->
[]"Build busybox as a static binary"//動態鏈接
Cross Compile prefix(arm-linux-)
Installation Option->
[*]Don't usr/usr//避免busybox安裝至宿主系統的usr,目錄下
Busybox Installation Prefix(/xxx/rootfs)//安裝位置
其他選項默認
7、編譯、安裝busybox
make
make install
基本上按照上面的步驟就可以完成文件系統的制作.