解压jffs2文件——mount jffs2文件到一个文件夹内

2023-10-28 07:18
文章标签 文件夹 解压 mount jffs2

本文主要是介绍解压jffs2文件——mount jffs2文件到一个文件夹内,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://www.rosoo.net/a/201012/10595.html

 

 

可以先把镜像文件挂载到一个目录上, 再把里边的文件拷贝出来. 不过直接用 `mount -t jffs2 -o loop' 挂载 JFFS2 镜像是不行的, 因为 `/dev/loop#' 不是一个 MTD 设备. 这儿就要用到 block2mtd 这个内核模块了.

 

版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://telltruth.blogbus.com/logs/25057536.html

在 mtd-utils 里边有 mkfs.jffs2 和 jffs2dump. 那个 mkfs.jffs2 用来把一堆输入文件打成一个 JFFS2 文件系统的镜像文件, jffs2dump 可以显示一个镜像文件里边各个文件的各个 inode 的信息. --- 但是没有一个程序可以直接把镜像文件解开, 把里边的文件提取出来.

可以先把镜像文件挂载到一个目录上, 再把里边的文件拷贝出来. 不过直接用 `mount -t jffs2 -o loop' 挂载 JFFS2 镜像是不行的, 因为 `/dev/loop#' 不是一个 MTD 设备. 这儿就要用到 block2mtd 这个内核模块了.

# make the JFFS2 image, /tmp/rootfs.jffs2, a block device
losetup /dev/loop0 /tmp/rootfs.jffs2

# convert it to a MTD device
modprobe block2mtd
echo "/dev/loop0" > /sys/module/block2mtd/parameters/block2mtd
# or
#modprobe block2mtd block2mtd=/dev/loop0
# now there should be an entry in /proc/mtd

# for /dev/mtdblock#
modprobe mtdblock
# now /dev/mtdblock0 is created automatically

# this would be done automatically when mount
#modprobe jffs2

# mount it, in read only mode so that it is not modified by accident
mount -t jffs2 -o ro /dev/mtdblock0 /mnt/jffs2
# extract files
tar -cf - -C /mnt/jffs2 . | tar xvf - -C /tmp/rootfs
# or
#rsync -av /mnt/jffs2/ /tmp/rootfs
# or whatever...

# cleanup
umount /mnt/jffs2
rmmod jffs2
rmmod mtdblock
rmmod block2mtd
losetup -d /dev/loop0
#rmmod mtd_blkdevs mtd

这些命令都得有 root 权限才行呢. 这儿假设了 /dev/loop0 没被别人占用, 而且这个 MTD 块是 /dev/mtdblock0. 用 `losetup -f' 可以看空闲的 loop 设备, 看 /proc/mtd 的内容就能知道该挂载哪个 mtdblock 了.

2008/7/20 补充:

昨天忽略了很重要的一点. 设 block2mtd 的参数, 格式是 `block2mtd=<dev>[,<erasesize>]', 这个 <erasesize> 说是可选的, 其实还是得设的.

不设的话, block2mtd 给 erasesize 的默认值是 PAGE_SIZE, 也就是 4 kiB. 这样挂载成功, 拷贝成功, 出来的文件里边却但是总是有坏的地方. 用 dmesg 看的话, 能看到好多报错.

我这里把 erasesize 设成 131072, 也就是 128 kiB 就好了. --- 这个要跟当初 mkfs.jffs2 时 -e 指定的大小一样.

modprobe block2mtd block2mtd=/dev/loop0,131072

另外今天我又知道了一个办法, 不用 block2mtd, 而是用 mtdram 的.

# default total_size is 4 MiB, which may be too small for use
# here I set it to 262144 kiB, ie 256 MiB
modprobe mtdram total_size=262144
# /proc/mtd should have an entry mtd0 now

modprobe mtdchar
# /dev/mtd0 created automatically

# write the image to /dev/mtd0
dd if=/tmp/rootfs.jffs2 of=/dev/mtd0

modprobe mtdblock
#modprobe jffs2
mount -t jffs2 -o ro /dev/mtdblock0 /mnt/jffs2
umount /mnt/jffs2

rmmod jffs2 mtdblock mtdchar mtdram mtd_blkdevs mtd

这篇关于解压jffs2文件——mount jffs2文件到一个文件夹内的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/291590

相关文章

java如何解压zip压缩包

《java如何解压zip压缩包》:本文主要介绍java如何解压zip压缩包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解压zip压缩包实例代码结果如下总结java解压zip压缩包坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

C#如何去掉文件夹或文件名非法字符

《C#如何去掉文件夹或文件名非法字符》:本文主要介绍C#如何去掉文件夹或文件名非法字符的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#去掉文件夹或文件名非法字符net类库提供了非法字符的数组这里还有个小窍门总结C#去掉文件夹或文件名非法字符实现有输入字

linux lvm快照的正确mount挂载实现方式

《linuxlvm快照的正确mount挂载实现方式》:本文主要介绍linuxlvm快照的正确mount挂载实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux lvm快照的正确mount挂载1. 检查快照是否正确创建www.chinasem.cn2.

Java 压缩包解压实现代码

《Java压缩包解压实现代码》Java标准库(JavaSE)提供了对ZIP格式的原生支持,通过java.util.zip包中的类来实现压缩和解压功能,本文将重点介绍如何使用Java来解压ZIP或RA... 目录一、解压压缩包1.zip解压代码实现:2.rar解压代码实现:3.调用解压方法:二、注意事项三、总

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

springboot上传zip包并解压至服务器nginx目录方式

《springboot上传zip包并解压至服务器nginx目录方式》:本文主要介绍springboot上传zip包并解压至服务器nginx目录方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录springboot上传zip包并解压至服务器nginx目录1.首先需要引入zip相关jar包2.然