cramfs文件系统的特性

cramfs文件系统的特性

 

1 .cramfs的特点

CRAMFS文件系统是专门针对闪存设计的只读压缩的文件系统,其容量上限为256M,采用zlib压缩,文件系统类型可以是EXT2EXT3.

 

在嵌入式的环境之下,内存和外存资源都需要节约使用。如果使用RAMDISK方式来使用文件系统,那么在系统运行之后,首先要把外存(Flash)上的映像文件解压缩到内存中,构造起RAMDISK环境,才可以开始运行程序。但是它也有很致命的弱点。在正常情况下,同样的代码不仅在外存中占据了空间(以压缩后的形式存在),而且还在内存中占用了更大的空间(以解压缩之后的形式存在),这违背了嵌入式环境下尽量节省资源的要求。

 

使用 cramfs就是一种解决这个问题的方式。cramfs是一个压缩式的文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时侯,马上计算出该数据在cramfs中的位置,将其实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。cramfs中的解压缩以及解压缩之后的内存中数据存放位置都是由cramfs文件系统本身进行维护的,用户并不需要了解具体的实现过程,因此这种方式增强了透明度,对开发人员来说,既方便,又节省了存储空间。

 

cramfs拥有以下一些特性:

 

采用实时解压缩方式,但解压缩的时侯有延迟。

 

cramfs的数据都是经过处理、打包的,对其进先写操作有一定困难。所以cramfs不支持写操作,这个特性刚好适合嵌入式应用中使用Flash存储文件系统的场合。

 

cramfs中,文件最大不能超过16MB

 

支持组标识(gid),但是mkcramfs只将gid的低8位保存下来,因此只有这8位是有效的。

 

支持硬链接。但是cramfs并没有完全处理好,硬链接的文件属性中,链接数仍然为1.

 

cramfs的目录中,没有“.”和“..”这两项。因此,cramfs中的目录的链接数通常也仅有一个。

 

cramfs中,不会保存文件的时间戳(timestamps)信息。当然,正在使用的文件由于inode保存在内存中,因此其时间可以暂时地变更为最新时间,但是不会保存到cramfs文件系统中去。

 

当前版本的cramfs只支持PAGE_CACHE_SIZE4096的内核。因此,如果发现cramfs不能正常读写的时侯,可以检查一下内核的参数设置。

 

cramfs中,文件最大不能超过16MB(映像文件)

 

2.使用cramfs

 

可以从http://sourceforge.net/projects/cramfs/下载cramfs-1.1.tar.gz。然后执行

 

tar zxvf cramfs-1.1.tar.gz

 

进入解包之后生成cramfs-1.1目录,执行编译命令:

 

make

 

编译完成之后,会生成mkcramfscramfsck两个工具,其中mkcramfs工具是用来创建cramfs文件系统的,而cramfsck工具则用来进行cramfs文件系统的释放以及检查。

 

下面是mkcramfs的命令格式:

 

mkcramfs [-h] [-e edition] [-i file] [-n name] dirname outfile

 

mkcramfs的各个参数解释如下:

 

-h:显示帮助信息

 

-e edition:设置生成的文件系统中的版本号

 

-i file:将一个文件映像插入这个文件系统之中(只能在Linux2.4.0以后的内核版本中使用)

 

-n name:设定cramfs文件系统的名字

 

dirname:指明需要被压缩的整个目录树

 

outfile:最终输出的文件

 

 

cramfsck的命令格式:

 

cramfsck [-hv] [-x dir] file

 

cramfsck的各个参数解释如下:

 

-h:显示帮助信息

 

-x dir:释放文件到dir所指出的目录中

 

-v:输出信息更加详细

 

file:希望测试的目标文件

 

 

3.制作文件系统的Cramfs镜像

 

制作cramfs需要使用mkcramfs工具,首先 安装mkcramfs工具

apt-get install cramfsprogs

mkcramfs rootfs/ rootfs.cramfs

即可生成rootfs.cramfs

 

 

cramfs这种只读的压缩格式,linux内核是直接支持的,而yaffs必须要自己来打补丁才能让内核支持,在yaffs2的目录内执行sh patch-ker.sh c $KERNEL 就可以让内核支持yaffs格式了。至于根文件系统觉得cramfs要好些,即省空间又是只读的,对于产品来说安全性稍高一点点。

 

 

(注:源自网络,记录于此,只为便于查阅)

 

 

 

你可能感兴趣的:(linux文件系统相关,linux内核,嵌入式,工具,file,flash,存储)