tiger84的笔记 https://bbs.21ic.com/?476150 [收藏] [复制] [RSS]

日志

根文件系统的制作

已有 1626 次阅读2010-1-25 16:07 |系统分类:嵌入式系统

以前的根文件是厂家自带的,用的是ramdisk。ramdisk是在启动时把一部分内存虚拟成磁盘,它有2个缺点:
(1)同时占用ram和flash;
(2)掉电不能保存数据。

于是想重新制作根文件系统,研究之后,初步打算使用cramfs+yaffs2的文件系统。
cramfs用来作根文件系统,充分利用系统资源,yaffs2用来存储一些配置参数。

cramfs优点:
(1)压缩比高
(2)占用内存少
缺点:只读。

于是加上yaffs2文件系统
优点:
(1)能更好的支持nand flash,延长nand flash寿命;
(2)资源占用少
(3)可读写
缺点:
(1)不提供日志机能,稳定性不如jffs
(2)不支持压缩,更适合存储容量大的系统

采用cramfs与yaffs2可以充分利用2者的优点,达到互补的效果。


制作cramfs文件系统时,碰到一个主要问题就是cramfs是一个只读的文件系统,而在启动的过程中,我需要创建目录和文件,怎么办呢?

先不管,直接利用原理的根文件,只是简单的把它制作成了cramfs文件。

果然,启动过程中提示read only,不能创建文件。

上网查找,发现别人都利用到了tmpfs,把一些需要写的目录都挂载成tmpfs。

于是更改,然后成功启动。

接下来就是制作yaffs2文件系统,基本上没有遇到障碍。
以下是我的MTD分区
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00400000 00020000 "u-boot"
mtd1: 00400000 00020000 "kernel-1"
mtd2: 00400000 00020000 "kernel-2"
mtd3: 00800000 00020000 "rootfs-1"
mtd4: 00800000 00020000 "rootfs-2"
mtd5: 00400000 00020000 "usr-config"
mtd6: 0e000000 00020000 "nandflash-store"

再rcS里添加了一句:
/bin/mount -t yaffs2 /dev/mtdblock5 /mnt/usr

然后就可以在/mnt/usr里面保存数据了。

唯一的疑惑是
我查看到的都是mtd0,mtd1,mtd2之类,使用的时候却需要使用mtdblock0,mtdblock1,mtdblock2.
还得再看看是怎么回事。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)