正在加载...

cramfs 文件系统修改方法

[ 2010/09/18 09:59 | by selboo ]

cramfs是一个只读的压缩文件系统,由linus本人亲自编写。

1、cramfs的特点
       在嵌入式的环境之下,内存和外存资源都需要节约使用。如果使用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_SIZE为4096的内核。因此,如果发现cramfs不能正常读写的时侯,可以检查一下内核的参数设置。

2.、修改cramfs 文件系统

挂载 /root/root  cramfs 文件系统 到 /mnt 目录
[root@localhost ~]# mount -o loop /root/root /mnt/

此时是不让修改的
[root@localhost ~]# touch /mnt/selboo
touch: cannot touch `/mnt/selboo': Read-only file system

压缩 /mnt 目录 解压到 /root/new
[root@localhost ~]# tar zcvf root.tgz /mnt/
[root@localhost ~]# mkdir new && mv root.tgz new/ && cd new
[root@localhost ~]#
[root@localhost new]# tar zxvf root.tgz

进入 /root/new/mnt/ 进行修改
[root@localhost new]# cd /root/new/mnt/

压缩 /root/new/mnt/ 目录
下载 cramfs 编译安装
[root@localhost  ~]# wget http://sourceforge.net/projects/cramfs/files/cramfs/1.1/cramfs-1.1.tar.gz
[root@localhost  ~]# tar zxvf cramfs-1.1.tar.gz
[root@localhost  ~]# cd cramfs-1.1
[root@localhost cramfs-1.1]# make

压缩/root/new/mnt/ /root/rootnew
[root@localhost ~]# /root/cramfs-1.1/mkcramfs /root/new/mnt/ /root/rootnew
最后编辑: selboo 编辑于2012/03/29 23:56
,
发表评论
表情
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]