加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cramfs 安装

发布时间:2020-12-15 06:31:41 所属栏目:百科 来源:网络整理
导读:cramfs文件系统 1、cramfs的特点 在嵌入式的 环境 之下,内存和外存资源都需要节约使用。如果使用RAMDISK方式来使用文件系统,那么在系统运行之后,首先要把外存(Flash)上的映像文件解压缩到内存中,构造起RAMDISK环境,才可以开始运行程序。但是它也有很致
cramfs文件系统
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
可以从 http://sourceforge.net/projects/cramfs/下载cramfs-1.1.tar.gz。然后执行
tar zxvf cramfs-1.1.tar.gz
进入解包之后生成cramfs-1.1目录,执行编译命令:
make
编译完成之后,会生成mkcramfs和cramfsck两个工具,其中cramfsck工具是用来创建cramfs文件系统的,而mkcramfs工具则用来进行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:希望测试的目标文件

有时候需要制作cramfs 格式的文件系统,而这个工具对单个文件有16MB 限制,我们
提供了没有这个限制的mkcramfs 工具,将这个文件复制到/usr/local/bin 目录下即可。之后在
终端中输入mkcramfs 测试,如果输出下面的内容便表面可以使用了:
(UBUNTU下 要另行安装?)

figo@figo-desktop:~$ mkcramfs
usage: mkcramfs [-h] [-e edition] [-i file] [-n name] dirname outfile
-h print this help

?-E make all warnings errors (non-zero exit status)
-e edition set edition number (part of fsid)
-i file insert a file image into the filesystem (requires >= 2.4.0)
-n name set name of cramfs filesystem
-p pad by 512 bytes for boot code
-s sort directory entries (old option,ignored)
-v be more verbose
-z make explicit holes (requires >= 2.3.39)
dirname root of the directory tree to be compressed
outfile output file

如果显示没有权限时看下面:

mkcramfs guogec2410_demo.cramfs
最开始按用户手册提示是在任意目录下,运行时提示没有mkcramfs这个命令
后来在网上查说是要在/usr/bin下,又把这些文件复制到这个目录下运行,提示
bash: /usr/bin/mkcramfs: 权限不够
解决方法:修改mkcramfs的权限。

查看权限:ls -l mkcramfs
最初显示-rwr--r--意义如下:
最初那三个 rw- 代表的是所有者(user)R怶巾f?o屣??
然后那三个 rw- 代表的是组群(group) 靀炊脪孈d??
最后那三个 r-- ? 代表的是其他人(other) f?#?`頏??
p?后面那9位数: a??Zㄗ??
? ? r 表示文件可以被读(read) 醲宂?W価 ?
? ? w 表示文件可以被写(write)碨? X?棆 ?
? ? x 表示文件可以被执行(如果它是程序的话)肛Y3牗皍遻 ?
? ? - 表示相应的权限还没有被授予 肕?e瀘5??
如上例,mkcramfs不能运行
在终端输入:v`? n葈 ?
  chmod o+w xxx.xxx ?;觗??
  表示给其他人授予写xxx.xxx这个文件的权限 拄d?#=鮛?
镣 ` * ??
  chmod go-rw xxx.xxx 欱<QQ驗錄??
  表示删除xxx.xxx中组群和其他人的读和写的权限 阀#L 枅徰E?
瑀t?臀-猞@ ?
其中: k榺乃襰 ??
u 代表所有者(user) L 卥T?堆?
g 代表所有者所在的组群(group) 瀐? 娸x P?
o 代表其他人,但不是u和g (other) 餬/藂?
a 代表全部的人,也就是包括u,g和o 旤 扄?跁N?
枿洽┮Y ??
其中:rwx也可以用数字来代替 哼?镆譽-"?
? ? ? r------------4 ? YyZ?< ?
? ? w -----------2 b12T谂q鞶 ?
? ? x ------------1 乓癮咆, ?
? ? - ------------0 蠎 芚[#倃 ?
彂v?X c + ?
行动: f缲螥IT???
? + 表示添加权限 澳,sf/iz??
??- 表示删除权限 嫕r;c藜6Nd ?
? = 表示使之成为唯一的权限
用chmod a+x mkcramfs后,在/usr/bin下用
mkcramfs guo guo.cramfs成功
http://hi.baidu.com/liaolihome/blog/item/40018faf936666fdfbed5017.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读