目录
一、从设备导出分区的方法
二、从pac包中提取img镜像
三、判断img镜像类型
四、sparse格式转为raw格式
五、解包super.img
六、解析出raw格式镜像(以system_a.img为例)
下面来详细分析
一、从设备导出分区的方法
以data分区为类,其它分区(如vendor,system,cache等)类似,当出现data分区引起的无法开机、开机定屏等问题时,按以下方法把data分区导出来:
1、手机如果发生黑屏和开机定屏等,直接掉电,不要重启手机
2、打开ResearchDownload工具,load一个对应项目的PAC包,把下载项全部取消,只保留FDL1和FDL2,如下图一样;
3、勾选”Active Read Flash”, 然后按下图所示填写, File里的路径和文件名随你自己定义,size填实际要读取的data分区十六进制大小,单位是字节,本例是0x80000000;如下图所示
4、再按正常烧录步骤来工具就可以开始镜像读取了;
5、烧录完即可从路径中拿到回读的镜像文件。
二、从pac包中提取img镜像
1、选择ResearchDownload工具的Load Package按钮,在弹出的对话框中选择要提取镜像的pac包
2、打开Download Settings按钮,取得列表框中FileName项对应的目录;
3、windows文件浏览器中找到该目录,目录里面的文件就是要提取的img文件,把需要提取的img文件拷贝出来;
注意:如过super.img在ResearchDownload中显示后缀为super.img.flag,则目录下就找不到super.img,需要换较低版本的ResearchDownload加载pac包,再重复上述操作。
如果是高版本,可以将bin/BinPack.ini 修改 MaxDataLength = 0 LoadPolicy = 0
三、判断img镜像类型
在pac包里面提取出来的img镜像文件,如userdata.img,system.img,super.img,有可能是sparse格式或raw格式,如果是sparse格式要先转成raw格式才能被读取;
通过file命令来判断其格式,在linux下面执行如下命令(以system.img)为例:
1、#file system.img
-->system.img: data //如果显示是data,则为sparse格式
2、#file system.img //如果显示是类似下面的,则已经是raw格式
-->system.img: Linux rev 1.0 ext4 filesystem data,UUID=da594c53-9beb-f85c-85c5-cedf76546f7a, volume name "system" (extents) (large files)
四、sparse格式转为raw格式
如果ext4的img镜像是sparse格式,要先转换为raw格式(如果已经是raw格式可以直接跳过这一步):
通过simg2img工具转换,在windows和linux都有相应的版本,在命令行中执行如下命令:
#simg2img <sparse_image_file> <raw_image_file>
执行完之后,sparse格式的sparse_image_file 就被转换为raw格式的ext4镜像文件raw_image_file。
备注:Android源码目录sytem/core/libsparse下也有simg2img源码,可使用make simg2img指令编译,生成路径为out/host/linux-x86/bin/simg2img ,如果使用simg2img指令提示Bad magic或Invalid sparse file等信息,如下图所示,则可能说明该img不是sparse格式,可能已经是raw格式的。继续执行后续动作即可。---主要依赖out/host/linux-x86/bin/simg2img和out/host/linux-x86/lib64文件夹下面的so库文件。
五、解包super.img
super的解包需要工具lpunpack,但是默认没有编译,源码目录位于:system/extras/partition_tools/,直接 make lpunpack 之后会生成out/host/linux-86/lpunpack
1、创建解包临时目录super_temp
2、解包super.img时必须将super.img转换成raw格式,否则会报如下错误
3、解包super_raw.img到super_temp,使用指令lpunpack super_raw.img super_temp/
解包后的内容如下:
从上面图片可以看到super解包出来的img是raw格式。
六、解析出raw格式镜像(以system_a.img为例)
1、在windows通过ext4-exactor解压(以system_a.img为例子)
工具下载地址:
1) 在windows上,把附件中的ext4-exactor.rar解压到d:\盘,解压成ext4-exactor文件夹;
2) 把system_a.img拷进ext4-exactor文件夹,并在ext4-exactor文件夹中新建一个system文件夹;
3) 打开cmd 终端,然后在终端输入:ext4-exactor.exe system_a.img system 回车
命令执行完之后,system_a.img镜像中的文件就已经解压在system目录中,如下图: