解压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

相关文章

一文教你Python引入其他文件夹下的.py文件

《一文教你Python引入其他文件夹下的.py文件》这篇文章主要为大家详细介绍了如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式,有需要的小伙伴可以根据需求进行选择... 目录1. 使用sys.path动态添加路径2. 使用相对导入(适用于包结构)3. 使用pythonPATH环境

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打

linux如何复制文件夹并重命名

《linux如何复制文件夹并重命名》在Linux系统中,复制文件夹并重命名可以通过使用“cp”和“mv”命令来实现,使用“cp-r”命令可以递归复制整个文件夹及其子文件夹和文件,而使用“mv”命令可以... 目录linux复制文件夹并重命名我们需要使用“cp”命令来复制文件夹我们还可以结合使用“mv”命令总

Python重命名文件并移动到对应文件夹

《Python重命名文件并移动到对应文件夹》在日常的文件管理和处理过程中,我们可能会遇到需要将文件整理到不同文件夹中的需求,下面我们就来看看如何使用Python实现重命名文件并移动到对应文件夹吧... 目录检查并删除空文件夹1. 基本需求2. 实现代码解析3. 代码解释4. 代码执行结果5. 总结方法补充在

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

mac中资源库在哪? macOS资源库文件夹详解

《mac中资源库在哪?macOS资源库文件夹详解》经常使用Mac电脑的用户会发现,找不到Mac电脑的资源库,我们怎么打开资源库并使用呢?下面我们就来看看macOS资源库文件夹详解... 在 MACOS 系统中,「资源库」文件夹是用来存放操作系统和 App 设置的核心位置。虽然平时我们很少直接跟它打交道,但了

Python在固定文件夹批量创建固定后缀的文件(方法详解)

《Python在固定文件夹批量创建固定后缀的文件(方法详解)》文章讲述了如何使用Python批量创建后缀为.md的文件夹,生成100个,代码中需要修改的路径、前缀和后缀名,并提供了注意事项和代码示例,... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5.

Python使用pysmb库访问Windows共享文件夹的详细教程

《Python使用pysmb库访问Windows共享文件夹的详细教程》本教程旨在帮助您使用pysmb库,通过SMB(ServerMessageBlock)协议,轻松连接到Windows共享文件夹,并列... 目录前置条件步骤一:导入必要的模块步骤二:配置连接参数步骤三:实例化SMB连接对象并尝试连接步骤四:

如何将文件夹里的PHP代码放到一个文件里

find ./dir -name "*.php" -exec 'cat' {} \; > dir.out