首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JFFS2文件系统立即损坏(魔数位掩码0x1985未找到错误)

JFFS2文件系统立即损坏(魔数位掩码0x1985未找到错误)
EN

Stack Overflow用户
提问于 2013-04-21 15:43:32
回答 1查看 6.6K关注 0票数 4

我已经使用buildroot创建了一个使用squashfs的根文件系统。它工作得很好,现在我想创建一个覆盖文件,它将保存/home和/etc目录。

为此,我想创建一个简单的jffs2文件系统,其中包含几个文件:

代码语言:javascript
复制
jlumme@simppa:~/projects/jffs2_home$ ls -la
total 20
drwxrwxr-x 4 jlumme jlumme 4096 Apr 21 16:21 .
drwxrwxr-x 6 jlumme jlumme 4096 Apr 21 16:21 ..
drwxrwxr-x 2 jlumme jlumme 4096 Apr 21 13:45 default
drwxrwxr-x 2 jlumme jlumme 4096 Apr 21 13:45 ftp
-rw-rw-r-- 1 jlumme jlumme   24 Apr 21 15:34 test.txt

我使用的闪存芯片是SST25VF064C,所以我认为它的擦除块大小是64KB,因此我从该文件夹创建了一个文件系统映像:

代码语言:javascript
复制
mkfs.jffs2 -r jffs2_home/ -e 64 -o home.jffs2
$ ls -la
-rw-r--r--  1 jlumme jlumme   496 Apr 21 15:42 home.jffs2

(令人惊讶的是,如果我设置了-e 32,甚至-e 4,得到的二进制图像根本不会改变?)。不过,接下来,我将包含home的mtdblock调整为64KB,我的flash布局如下所示:

代码语言:javascript
复制
uboot/<0x00000000 0x40000>
kernel/<0x00040000 0x3D9000>
dtb/<0x00419000 0x10000>
rootfs/<0x00429000 0x1F7000>
home/<0x00620000 0x1E0000>

在我的主板上,我可以很好地挂载mtdblock4,并且我可以正确地读取文件内容。但是,如果我修改该文件,并尝试保存它,vi会报告:

代码语言:javascript
复制
[   77.030000] jffs2: Node totlen on flash (0xffffffff) != totlen from node ref (0x00000044)

现在,如果我卸载文件系统,然后重新挂载它,我立即开始收到抱怨:

代码语言:javascript
复制
# mount -t jffs2 /dev/mtdblock4 /home/
[   99.740000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d4070: 0xff0a instead
[   99.760000] jffs2: Empty flash at 0x001d4074 ends at 0x001d412c
[   99.770000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d412c: 0xffff instead
[   99.790000] jffs2: Empty flash at 0x001d4130 ends at 0x001d4194
[   99.790000] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x001d4194: 0xff0a instead

我想现在我的文件系统已经损坏了.我真的不明白为什么会这样..你知道我在哪里做错了吗?谢谢你所有的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-27 15:21:32

这就是我为解决这个问题所做的。

  • There chip
  1. Made的新代码http://www.linux-mtd.infradead.org/
  • There更新了较新的MTD驱动程序确保为JFFS2保留的区域已初始化为0xFF
  • (possibly optional)更准确地指定了jffs2文件系统的创建:

mkfs.jffs2 -e 64 -l -p -s 4096 -r jffs2_home/ -o home.jffs2

有了这些更改,文件系统现在可以按预期进行读写。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16129000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档