jffs2文件系统(二)

本篇文章讲解一下如何制作jffs2文件系统,以及如何在linux下把jffs2作为根文件系统使用。

文件系统制作

制作工具:mtd_utils,可以自己安装

mkfs.jffs2 -o root-uclibc-jffs2 -r root-uclibc -e 0x10000 -s 0x1000 -n -l -X zlib
--pad=0x10000
参数简介:
-o, --output=FILE 指定生成文件的文件名.(default: stdout)
-r, -d, --root=DIR 指定需要制作的文件夹目录名.(默认: 当前文件夹)
-e, --eraseblock=SIZE 设定擦除块的大小为(默认: 64KB)
-s, --pagesize=SIZE 节点页大小(默认: 4KB)
-n, --no-cleanmarkers 指明不添加清楚标记(nand flash 有自己的校检块, 存
放相关的信息。 ) 如果挂载后会出现类似: CLEANMARKER node found at
0x0042c000 has totlen 0xc != normal 0x0 的警告, 则加上-n 就会消失。
-l, --little-endian 指定使用小端格式
-X, --enable-compressor=COMPRESSOR_NAME 指压缩格式
-p, --pad[=SIZE] 通常用 16 进制表示输出文件系统大小, 不足部分用 0xff
注意:

1. 上面的-e选项和-s一定要根据自己的实际大小设置,否则可能出现启动失败的情况

2. -X指定的压缩方式可以自己选择,不清楚使用mkfs.jffs2的帮助信息查看

uboot启动参数设置

我们这里使用的uboot版本是2013,新版本的设置类似。

zhixia# setenv bootargs console=ttyS1,115200n8 mem=68M@0x0 rmem=40M@0x4400000 nmem=20M@0x6C00000 init=/linuxrc rootfstype=jffs2 root=/dev/mtdblock3 rw mtdparts=jz_sfc:256k(boot),64k(bootenv),2560k(kernel),25M(app),-(config) lpj=11968512    
zhixia# saveenv
Erasing at 0x50000 -- 100% complete.
Write at 0x50000 -- 100% complete.
done

上面我们主要设置了rootfstype=jffs2 ,即告诉linux启动的时候以jffs2的方式挂载根文件系统。

启动日志

........
[    2.019842] jffs2: notice: (1) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[    2.037152] VFS: Mounted root (jffs2 filesystem) on device 31:3.
[    2.043702] devtmpfs: mounted
[    2.047024] Freeing unused kernel memory: 224K
[    2.296708] FAT-fs (mmcblk0): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
mdev is ok......
[RCS]: /etc/init/S11
[    2.376306] random: nonblocking pool is initialized
[    2.383939] jffs2: notice: (570) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
net.core.wmem_max = 26214400
net.core.wmem_default = 26214400
application start up
[    2.440720] @@@@@ inner codec power up@@@@@@

zhixia login:

问题记录

在使用jffs2的时候你可能会遇到一些问题,下面列出常见的问题:

1.启动出现wrong erase size

[    1.080526] jffs2: Node at 0x00007944 with length 0x00000a7c would run over the end of the erase block
[    1.090478] jffs2: Perhaps the file system was created with the wrong erase size?
[    1.090489] mmcblk0: mmc0:0001 SD32G 29.1 GiB 
[    1.103183] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00007948: 0x0a7c instead

出现这种问题一般是flash的擦除大小和制作jffs2的erase大小不一样导致,查看flash的手册看erase大小,或者看cat /proc/mtd ==》我们查到可以按sector、block、整片擦除

所以有两种解决办法:一种是改flash适配的erase_size或者改制作jffs2时的erase_size大小,为了简单可以直接修改制作jffs2文件系统时的参数。

2.启动出现jffs2: Empty flash

[  197.324942] jffs2: Empty flash at 0x013fff28 ends at 0x013fffd8
[  197.331095] jffs2: Empty flash at 0x013fffdc ends at 0x013ffff4
[  197.337488] jffs2: notice: (1) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.

问题原因:

This message is generated if a block of data is partially written. It is generally not a sign of any problem.  

就是分区大而制作出来的文件系统小,导致分区后面没有jffs2文件系统的节点

解决办法:制作相同分区大小的文件系统就可以了

3. Magic bitmask not found

[    1.831034] jffs2: Empty flash at 0x010d7524 ends at 0x010d7594
[    1.837221] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x010d7594: 0xff7f instead
[    1.847216] jffs2: Empty flash at 0x010d7598 ends at 0x010d779c
[    1.853350] jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x010d779c: 0xfbff instead
[    1.863321] jffs2: Empty flash at 0x010d77a0 ends at 0x010d77bc

mkfs.jffs2 -s 的参数问题 对照FLASH的大小再重新生成镜像文件过即可

4.Requested init /linuxrc failed

[    1.107416] jffs2: notice: (1) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[    1.123603] mmcblk0: mmc0:aaaa SN32G 29.7 GiB 
[    1.128943] VFS: Mounted root (jffs2 filesystem) on device 31:3.
[    1.135455]  mmcblk0: p1
[    1.138285] devtmpfs: error mounting -2
[    1.143043] Freeing unused kernel memory: 264K
[    1.147853] Kernel panic - not syncing: Requested init /linuxrc failed (error -2).
[    1.155847] Rebooting in 10 seconds..

解决办法:busybox编译时采用静态编译,这种情况遇到的较少,可以看下自己的具体原因。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/152903.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(珍藏版)Redis经典面试题32道,吊打面试官!

文章目录 Redis最新2023年面试题高级面试题及附答案解析(3)01、请用 Redis 和任意语言实现一段恶意登录保护的代码?02、Pipeline 有什么好处,为什么要用 pipeline?03、Redis 常用管理命令有哪些?04、Redis 持久化数据和缓存怎么做…

避坑指南!!在树莓派4b上安装Pycharm以及无法使用终端的问题解决!!

一、下载Pycharm–linux安装包 这里是踩的第一个坑,一开始我下载的是pycharm2023-linux版本的。后面发现缺少很多东西,安装不成功。后面下载了低版本的Pycharm才可以。我下载的是2020版本的。注意:在下载安装包时,一定要在window…

ECRS工时分析软件:全面提升生产效率和产能管理的利器

在当今高度竞争的商业环境中,企业需要不断提升生产效率和产能管理以保持竞争优势。ECRS工时分析软件作为一款专业的工具,通过自动导出各种表格和图表,全面涵盖了生产过程中的各种分析和改善活动,为企业提供了提升生产效率和产能管…

思维导图软件 Xmind mac中文版特点介绍

XMind 2022 mac是一款思维导图软件,可以帮助用户创建各种类型的思维导图和概念图。 XMind mac软件特点 - 多样化的导图类型:XMind提供了多种类型的导图,如鱼骨图、树形图、机构图等,可以满足不同用户的需求。 - 强大的功能和工具&…

基于单片机的自动变速箱电控系统

**单片机设计介绍, 基于单片机的自动变速箱电控系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的自动变速箱电控系统是一种通过单片机来控制车辆自动变速箱的系统。它借助传感器和单片机的协同工作&am…

MATLAB 模糊设计器 构建 模糊系统

系列文章目录 文章目录 系列文章目录前言一、创建 FIS 结构二、定义输入变量三、定义输出变量四、定义成员函数五、定义规则库六、设计分析七、存储和修改设计八、导出 FIS总结 前言 本例演示如何使用 Fuzzy Logic Designer 应用程序交互式创建 1 型 Mamdani 模糊推理系统&…

知乎怎么快速涨粉?15个实用方法让你迅速积累粉丝

**一、自我介绍** 大家好,我是知乎上的一个普通用户,我在这篇文章中将会分享一些关于如何涨粉的最实用的方法。我相信,只要你们按照这些方法去做,你们也会像我一样,迅速积累起大量的粉丝。 **二、方法分享** **1. 优…

VB.net WebBrowser网页元素抓取分析方法

在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…

文件包含_常见文件包含情况

文件包含系列 相关函数 分类 实践 包含实现的场景

亲测:你这些网站都不知道,哪来时间去摸鱼?

一些我常用且好用的在线工具 Postcat - 在线API 开发测试工具 postcat.com/ API 开发测试工具 Postcat 是一个强大的开源、免费的、跨平台(Windows、Mac、Linux、Browsers...)的 API 开发测试工具,支持 REST、Websocket 等协议&#xff08…

美联储暂停加息 黄金代理要“笑嘻嘻”?

在11月的议息会议上,美联储再次宣布暂停加息。这是继九月份以后,美联储再次做同样的决定,目前已经实现了2连停。停止加息意味着美元资产的吸引度下降,美元指数将会受压,现货黄金价格因为美元的走弱可能上涨&#xff0c…

前端安全策略保障

文章目录 前言后台管理系统网络安全XSSCSRFSQL注入 后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:前端系列文章 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出…

Ubuntu 安装VMware Tools选项显示灰色,如何安装VMware Tools

只要你的网络没问题,你直接执行这几个命令,重启ubuntu虚拟机即可、 sudo dpkg --configure -a sudo apt-get autoremove open-vm-tools sudo apt-get install open-vm-tools sudo apt-get install open-vm-tools-desktop

SpringJDBC模板类JdbcTemplate

Spring JdbcTemplate使用JdbcTemplate完成增删改查环境准备新增修改删除查询一个对象批量添加批量修改和批量删除使用德鲁伊连接池(之前数据源是用我们自己写的) JdbcTemplate JdbcTemplate是Spring提供的一个JDBC模板类,是对JDBC的封装&…

文本格式清理工具 TextSoap mac中文版软件特色

TextSoap mac是一款文本格式清理工具。TextSoap可以帮助用户清除掉text文档内的文字格式,还可以将文档内的url转换成超链接,简单方便,是你日常办公不可缺少的工具。 TextSoap for mac软件特色 1、清洁界面 2、集成文本编辑器 3、100多个内…

免费分享!全国河流断面水质监测数据

随着人类活动的不断增加,河流的水质受到严重污染,为了保护河流生态环境,需要对河流断面水质进行监测。全国河流断面水质监测数据是反映全国河流污染状况的重要指标之一,通过对数据的分析,可以了解不同地区河流污染情况…

【Pytorch笔记】7.torch.nn (Convolution Layers)

我们常用torch.nn来封装网络,torch.nn为我们封装好了很多神经网络中不同的层,如卷积层、池化层、归一化层等。我们会把这些层像是串成一个牛肉串一样串起来,形成网络。 先从最简单的,都有哪些层开始学起。 Convolution Layers -…

功能测试+自动化测试代码覆盖率统计

Jacoco 是一个开源的覆盖率工具。Jacoco 可以嵌入到 Ant 、Maven 中,并提供了 EclEmma Eclipse 插件,也可以使用 Java Agent 技术监控 Java 程序。很多第三方的工具提供了对 Jacoco 的集成,如 sonar、Jenkins、IDEA。 Jacoco 包含了多种尺度的覆盖率计数…

csapp attack lab phase4

csapp attack lab phase4 每个gadget由一系列指令字节组成,最后一个字节为0xc3,编码为ret指令。 举个例子: 48 89 c7 是指令 movq %rax, %rdi, 对应的地址是0x400f15 0x3 也就是0x400f18, 是开始的指令位置。 例如: ret编码为0…

线程安全与同步

线程安全问题是什么 多个线程同时操作同一个共享资源的时候可能会出现业务安全问题,称为线程安全问题。 取钱模型演示 需求:小明和小红是一对夫妻,他们有一个共同的账户,余额是10万元。 如果小明和小红同时来取钱,而…
最新文章