解开jfffs2镜像文件方法
来源:互联网 发布:数据产业链包括什么? 编辑:程序博客网 时间:2024/05/16 12:53
在 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 jffs2rmmod 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
- 解开jfffs2镜像文件方法
- 解开 JFFS2 文件系统镜像
- 解开 JFFS2 文件系统镜像
- 解开 JFFS2 文件系统镜像
- UltraISO制作虚拟镜像文件方法
- 如何解开initrd文件!
- 递归解开dsc文件
- 网站镜像-文件镜像方法介绍-数据库镜像提问?
- .tar.gz的解开方法
- 制作img镜像文件的5种方法
- windows 7 .iso镜像文件 安装方法
- 制作img镜像文件的5种方法
- nrf51822 创建DFU的镜像文件方法
- linux挂载本地镜像文件的方法
- 制作img镜像文件的5种方法
- 镜像文件
- 光盘镜像文件
- 镜像文件
- 杭州还不错的IT公司,想跳槽了,不知道下一站在哪里
- 冯诺依曼解决的一个抛硬币问题
- 第一周项目2拓展
- 矩形脉冲频谱分析
- auto_ptr 详解
- 解开jfffs2镜像文件方法
- android 发送广播 接收广播 动态广播接收
- Windows 7系统安装MySQL5.5.21图解
- mysql 之utf8
- android 天气。。待整理
- Linux 文件访问--- 系统调用
- MFC中OnTimer的应用
- 今天是个好日子
- IOS社区网站