当前位置:嗨网首页>书籍在线阅读

14-CramFS

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

19.6.2 CramFS

在嵌入式Linux环境中,许多人会采用RAMDISK来储存文件系统的内容,RAMDISK的含义是在启动时,把一部份内存虚拟成磁盘,并且把之前准备好的文件系统映像文件解压缩到该RAMDISK环境中。假设压缩后的文件系统映像为8MB,存放于Flash,解压缩后为16MB,如果采用RAMDISK,将需要8MB的Flash和16MB的RAM空间,而采用CramFS后,就不再需要消耗16MB的RAM空间。

CramFS是Linus Torvalds参与开发的文件系统,在linux/fs/cramfs中可以找到CramFS的源代码。CramFS是一种压缩的只读文件系统,当浏览Flash中的目录或读取文件时,CramFS文件系统会动态地计算出压缩后的数据所储存的位置,并实时地解压缩到内存中,对于用户来说,使用CramFS与RAMDISK感觉不出使用上的差异性。

CramFS工具的下载地址为http://sourceforge.net/projects/cramfs/,通过如下命令可以创建CramFS文件系统映像:

mkcramfs my_cramfs/ cramfs.img (my_cramfs是我们要创建映像的目录)

如下命令将生成的cramfs.img映像复制到Flash的第一个分区并mount到/mnt/nor目录:

cp cramfs.img /dev/mtd1

mount -cramfs /dev/mtdblock1 /mnt/nor

很多时候,工程中需要基于已有的文件系统映像添加、删除一些文件后建立新的文件系统映像,这时候并不需要完全重新操作,可用如下的方法。

(1)将映像以loop方式挂载到某目录。

mkdir tmpdir

mount rootfs.cramfs tmpdir -o loop

cd tmpdir

(2)压缩被挂载的文件系统。

tar -cvf ../rootfs.tar ./ 将tmpdir中的内容打包放在其父目录下

umount tmpdir

(3)解压缩文件系统到新目录。

mkdir rootfs

tar -xvf rootfs.tar -C rootfs

(4)修改新目录(这里是rootfs)中的内容,以符合新的需要。

(5)重新创建映像文件。

mkcramfs rootfs rootfs.cramfs