Linux 挂载 JFFS2 文件系统¶
1. 引言¶
假如手中已经有一个外部 Flash 设备,如何让它在 Linux 中像普通文件系统一样使用?本文将详细介绍如何在 Linux 上挂载 JFFS2 文件系统,包括必要的工具、操作步骤以及内核配置要求。
2. 所需工具¶
挂载 JFFS2 文件系统涉及以下工具: - flash_erase:擦除 MTD 设备 - mkfs.jffs2:创建 JFFS2 文件系统镜像 - nandwrite:将 JFFS2 镜像写入 MTD 设备 - mount:挂载 JFFS2 文件系统 - adb push(可选):通过 ADB 传输文件到设备
以上工具如果系统不存在可以考虑进行移植源码:
移植源码过程中可能存在一些依赖库比如:zlib, lzo
编译步骤省略,最终可以得到:
3. 操作步骤¶
3.1 确保 MTD 设备可用¶
首先,确认 MTD 设备是否正确识别:
如果输出类似如下:
说明 MTD 设备已识别。
3.2 擦除 MTD 设备¶
注意:擦除操作会清空所有数据,需谨慎执行。
3.3 生成 JFFS2 镜像(可选)¶
如果已有 JFFS2 镜像,可跳过此步骤,否则可以创建:
参数说明:
-d:指定要打包的根文件系统目录-o:输出 JFFS2 镜像文件-e:擦除块大小(需与 Flash 设备匹配)-s:扇区大小-c:块数
3.4 写入 JFFS2 镜像¶
3.5 挂载 JFFS2¶
- 创建挂载点:
- 确保 MTD 设备节点存在:
- 挂载:
- 验证挂载:
4. 可能遇到的问题及解决方法¶
4.1 mount: wrong fs type¶
- 检查内核是否启用了 JFFS2:
如果未启用,可在内核配置中打开:
举例子没有开启CONFIG_JFFS2_FS 是不行的!
4.2 No such device¶
- 确保 MTD 设备正确识别:
4.3 MTD partition not found¶
- 可能 MTD 分区未正确配置,检查
输出:
5. 总结¶
整个过程如下:
- 确认 MTD 设备 (
cat /proc/mtd) - 擦除 Flash (
flash_erase /dev/mtd0 0 0) - 创建 JFFS2 镜像 (
mkfs.jffs2) - 写入 Flash (
nandwrite -p /dev/mtd0 jffs2.img) - 挂载 JFFS2 (
mount -t jffs2 /dev/mtdblock0 /mnt/qspi)
在这些过程中需要注意的是,对于一个新的Fash 设备是需要格式化,另外也需要创建镜像写入Falsh,当然可以是空的镜像。