a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 61|回复: 0

[综合辅导] Linux认证辅导关于Linuxcramfs文件系统

[复制链接]
发表于 2012-8-4 12:07:07 | 显示全部楼层 |阅读模式
Linux认证辅导关于Linuxcramfs文件系统, @" g' M1 n) ^9 C; X8 d9 G7 ?
Linuxcramfs文件系统
$ @, v8 G" [5 X  G4 }1、cramfs的特点
. M! A- Z5 J( S! w0 W+ Q' B在嵌入式的环境之下,内存和外存资源都需要节约使用。如果使用RAMDISK方式来使用文件系统,那么在系 统运行之后,首先要把外存(Flash)上的映像文件解压缩到内存中,构造起RAMDISK环境,才可以开始运行程序。但是它也有很致命的弱点。在正常情 况下,同样的代码不仅在外存中占据了空间(以压缩后的形式存在),而且还在内存中占用了更大的空间(以解压缩之后的形式存在),这违背了嵌入式环境下尽量 节省资源的要求。, X# D) H* E' A% h% Z
使用cramfs就是一种解决这个问题的方式。cramfs是一个压缩式的文件系统,它并不需要一次性地将文件系统中的 所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时侯,马上计算出该数据在cramfs中的位置,将其实时地解压缩到内存之中,然后通 过对内存的访问来获取文件系统中需要读取的数据。cramfs中的解压缩以及解压缩之后的内存中数据存放位置都是由cramfs文件系统本身进行维护的, 用户并不需要了解具体的实现过程,因此这种方式增强了透明度,对开发人员来说,既方便,又节省了存储空间。
8 a2 K" _6 b: A) g3 {2 m5 \cramfs拥有以下一些特性:+ y! @; m2 C  S& G* X- U/ L5 J
采用实时解压缩方式,但解压缩的时侯有延迟。
! j% @2 o; }7 d2 d5 H" Vcramfs的数据都是经过处理、打包的,对其进先写操作有一定困难。所以cramfs不支持写操作,这个特性刚好适合嵌入式应用中使用Flash存储文件系统的场合。8 U" k8 K. r4 d& \: m8 q
在cramfs中,文件最大不能超过16MB。
7 M0 o( j$ ^1 ~  W支持组标识(gid),但是mkcramfs只将gid的低8位保存下来,因此只有这8位是有效的。
; o+ z+ c' C$ q: C+ c支持硬链接。但是cramfs并没有完全处理好,硬链接的文件属性中,链接数仍然为1., Y# I% {; n, g8 e
cramfs的目录中,没有“。”和“。.”这两项。因此,cramfs中的目录的链接数通常也仅有一个。) ^# ^8 D6 N& k4 O
cramfs中,不会保存文件的时间戳(timestamps)信息。当然,正在使用的文件由于inode保存在内存中,因此其时间可以暂时地变更为最新时间,但是不会保存到cramfs文件系统中去。
2 @/ Q& a0 N2 F0 G" L9 M, W当前版本的cramfs只支持PAGE_CACHE_SIZE为4096的内核。因此,如果发现cramfs不能正常读写的时侯,可以检查一下内核的参数设置。
' _4 B+ Q4 S6 n2、使用cramfs! w% o, g) D0 e! f; E
可以从http://sourceforge.net/projects/cramfs/下载cramfs-1.1.tar.gz。然后执行
; c8 q  C6 j5 \/ {  @tar zxvf cramfs-1.1.tar.gz
: v+ [: c( E, k5 `进入解包之后生成cramfs-1.1目录,执行编译命令:: d* F4 i* s9 |4 n- ?/ E( m& j
2 ^3 ~/ S6 H" E3 b2 k
4 i  t& i6 B/ Y$ \0 ~
make
  X4 E, R# b6 s& a编译完成之后,会生成mkcramfs和cramfsck两个工具,其中mkcramfs工具是用来创建cramfs文件系统的,而cramfsck工具则用来进行cramfs文件系统的释放以及检查。: @6 B& n+ C* @
mkcramfs的命令格式:4 }4 T/ ]. u8 [; O% N1 h$ c
mkcramfs [-h] [-e edition] [-i file] [-n name] dirname outfile$ M3 r: M* D5 h; g$ `, w- ?" K
mkcramfs的各个参数解释如下:) A/ R) Z" b, u
-h:显示帮助信息+ M9 {$ I6 N$ G2 Z7 h( ^6 a0 p
-e edition:设置生成的文件系统中的版本号) g! `3 B/ }% p. T$ k% x% }
-i file:将一个文件映像插入这个文件系统之中(只能在Linux2.4.0以后的内核版本中使用)  T+ a3 q! X7 a8 u( q' [& a- d
-n name:设定cramfs文件系统的名字" q# Z8 i$ T( A5 u
dirname:指明需要被压缩的整个目录树5 @( c# x+ T" G! B# r" A1 f
outfile:最终输出的文件; r( a' t: B0 R1 Z3 S" s& n
cramfsck的命令格式:
% t2 ~7 Q( F, A+ s" O8 r# _cramfsck [-hv] [-x dir] file
% M3 V5 L" z% a2 g6 }' w# ]cramfsck的各个参数解释如下:
0 ?! z! `" f" l# L* D-h:显示帮助信息
. i5 G8 c& o" U8 M-x dir:释放文件到dir所指出的目录中
/ E2 _: S3 p/ q-v:输出信息更加详细& w% @0 s2 l' q4 I( A) M9 ]( [
file:希望测试的目标文件
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-21 14:49 , Processed in 0.348719 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表