JFFS2文件系统的移植

Posted linux_farmer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JFFS2文件系统的移植相关的知识,希望对你有一定的参考价值。

Linux文件系统的移植-JFFS2

JFFS2是JFFS的后继者,由Red Hat重新改写而成。JFFS2的全名为JournallingFlash File System Version 2(闪存日志型文件系统第2版),其功能就是管理在MTD设备上实现的日志型文件系统。与其他的存储设备存储方案相比,JFFS2并不准备提供让传统文件系统也可以使用此类设备的转换层。它只会直接在MTD设备上实现日志结构的文件系统。JFFS2会在安装的时候,扫描MTD设备的日志内容,并在RAM中重新建立文件系统结构本身。

除了提供具有断电可靠性的日志结构文件系统,JFFS2还会在它管理的MTD设备上实现“损耗平衡”和“数据压缩”等特性。

JFFS2 功能如下:

?  支持NAND Flash。

?  硬连结(Hardlinks),这是JFFS 碍于文件格式所无法支援的功能。

?  压缩,有三种算法:zlib, rubin 以及 rtime.

?  更佳的效能。

缺点:

?  JFFS2挂载时需要扫描整块Flash,来确定节点的合法性以及建立必要的数据结构,这使得JFFS2挂载时间比较长。

?  JFFS2是将节点信息保存在内在中的,使得它所占用的内存量和节点数目成正比。

?  JFFS2是通过随机方式来实现磨损平衡的,它不能保证磨损平衡的确定性。

? JFFS2没有write-back机制,不能将资料暂存于缓存(cache),以致于flash I/O的动作频繁。

移植环境:

Ubuntu 16.04-64

u-boot.bin

目标板:AT91SAM9x25

交叉编译器 arm-none-linux-gnueabi-gcc 4.4.3

内核的支持

也就是说您的内核必须支持jffs2。

zlib的编译

解压zlib-1.2.11.tar.gz并进入zlib-1.2.11配置编译安装

$ tar zxf zlib-1.2.11.tar.gz

$ cd zlib-1.2.11

$ ./configure

$ make

$ make install

MTD工具编译

解压mtd-snapshot-20050519.tar.bz2 并进入mtd/util编译安装

$ tar xvf  mtd-snapshot-20050519.tar.bz2
$ cd mtd/util
$ make
$ make install

这样我们的系统里就有了mkfs.jffs2这个工具了,可以自行检查一下。

 

 

 

Jffs2文件系统镜像制作

mkfs.jffs2 -r fsmount -orootfs_new.jffs2 -e 0x20000 --pad=0x800000 -n

ü  -r选项指定输入的文件和目录路径,不指定则为当前路径

ü  -e, --eraseblock=SIZE,设定擦除块大小为SIZE,缺省为64KB,如果你使用的擦除块与MTD设备的实际擦除块大小不一致,则JFFS2表现不会很好,如果SIZE设置小于4096,则假定单位为KB。

ü  -p, --pad[=SIZE],用16進制來表示所要輸出檔案的大小,也就是root.jffs2 很重要的是, 為了不浪費flash空間, 這個值最好符合flash driver所規劃的區塊大小。如果不足则使用0xff来填充补满。

以上是关于JFFS2文件系统的移植的主要内容,如果未能解决你的问题,请参考以下文章

根文件系统制作

jz2440上内核和文件系统移植

如何配置uClinux2.6内核使其支持jffs2格式的文件系统

如何从openwrt移植软件包到entware

jffs2 Linux 文件系统上的 O_DIRECT 支持

jffs2dump 出了点问题,将 JFFS2 文件系统更改为 little-endian 文件