cramfs 根文件系统的制作(by liukun321咕唧咕唧)

来源:互联网 发布:java生成可执行文件 编辑:程序博客网 时间:2024/06/10 03:57
由于cramfs是只读文件系统,个人感觉现在用的并不广泛,所以直到现在也没用过cramfs。最近有个项目要求必须用它,顺着就写了下面的东西。 
 
1、首先配置内核,打开对cramfs的支持:
 File systems  --->[*] Miscellaneous filesystems  --->
<*>   Compressed ROM file system support (cramfs) 

2.编译cramfs制作工具
从http://sourceforge.net/projects/cramfs/下载cramfs-1.1.tar.gz。然后执行

#tar zxvf cramfs-1.1.tar.gz

#make
编译完成之后,会生成mkcramfs和cramfsck两个可执行文件,其中mkcramfs工具是用来创建cramfs文件系统的,而cramfsck工具则用来进行cramfs文件系统的释放以及检查。可以将这两个文件拷贝到/usr/local/bin目录下,方便使用.

PS:
===============================================================
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.压缩rootfs根文件系统生成 cramfs

#mkcramfs ./rootfs ./cramfs

4.在uboot下如下操作,将镜像写入nandflash
  [Liuk@Micro2440] # tftp 30000000  cramfs
  [Liuk@Micro2440] # nand erase 560000  4000000
  [Liuk@Micro2440] # nand write.jffs2 30000000  560000 3000000
 
PS:
如果你使用了qtopia:
由于cramfs是只读文件系统,在运行QT时会出现如下错误:
[root@FriendlyLEG /]# ./opt/Qtopia/bin/qpe
could not open for writing `/Settings/qpe_new.conf'
QCopChannel::send: Must construct a QApplication before using QCopChannel

这个/Settings/ 所在的目录为/root/Settings/
所以在启动时应将/root 目录挂载为 ramfs,这样我们就可以进行读写了,在挂载之前我将cp /root/Settings/ /tmp
,其中/tmp 也被挂载为 ramfs。然后再执行cp /tmp/Setting  /root 这个操作。整个过程被添加在/etc/init.d/rcS 脚本文件中。
/bin/mount -n -t ramfs none /tmp
 
/bin/cp -rf /root/Settings /tmp
/bin/mount -n -t ramfs none /root
/bin/cp -rf /tmp/Settings /root
 
修改后QT就可以正常启动了,但是新的配置不会被保存,QT只能加载存于nandflash中的配置。
原创粉丝点击