當前位置:編程學習大全網 - 編程語言 - 定制android 使用initramfs文件系統嗎

定制android 使用initramfs文件系統嗎

在制作Initramfs文件系統之前,我先簡單介紹下linux各文件系統。linux支持多種文件系統類型,包括ext2,ext3,vfat,jffs,

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

基本上按照上面的步驟就可以完成文件系統的制作.

  • 上一篇:宿遷學院互聯網金融專業好嗎?
  • 下一篇:C++的socket方法
  • copyright 2024編程學習大全網