0. 背景
最近新项目,烧录的时候没有system分区了,听大佬说是被编译进了super分区; 于是决定研究一波,这里直接采用最简单粗暴的方式,直接对其进行解包,看看包含哪些东西。
img镜像文件有两种,分为raw和sparse两种格式。
raw ext4 image,即raw image,使用file可以看到它是一个完整的ext4分区镜像(包含很多全零的无效填充区),可以直接使用mount进行挂载。而sparse image是一个非常普通的data文件,是通过将raw ext4进行稀疏描述得到的,因此尺寸比较小(没有全零的无效填充区)。
1. 转换成ext4格式
1.1 simg2img
我们看下我们生成的super.img格式:
/LA.UM.8.13/out/target/product/lito$ file super.img
它会告诉你是sparse image稀疏镜像格式的,这个不能直接解包,我们要转换成可以直接挂载的ext4格式。
super.img: Android sparse image, version: 1.0, Total of 3145728 4096-byte
output blocks in 3464 input chunks.
然后我在参考链接1里面看到了使用simg2img可以转换格式,
~/android10/test/android-simg2img-master$ simg2img super.img super_ext4.img
但是我的Linux服务器没有装。
The program 'simg2img' is currently not installed. To run 'simg2img'
please ask your administrator to install the package 'android-tools-fsutils'
后来从这个github仓库里面,找到了个windows下面的工具。(请见本文参考链接2)
1.2 格式转换
把super.img放到simg2img同级目录下面,然后命令控制行进入对应目录。
simg2img.exe super.img super_ext4.img
然后就转换好了,一会把它拷贝到Linux服务器下面。
2. lpunpack
分包工具lpunpack是系统自带的,我们只需要make一下就可以了, make lpunpack编译完成之后,
我们在out/host/linux-x86/bin目录下面会找到lpunpack工具。
~/LA.UM.9.12/out/host/linux-x86/bin$ mkdir test_android10
新建立一下文件夹,然后把刚才转换到到ext4镜像文件拷贝到这个目录。
运行:
./lpunpack super_ext4_android10.img test_android10/
我发现android10的super.img解包之后是这些文件:
-rw-r--r-- 1 nigulasi nigulasi 450293760 Nov 26 14:13 product_a.img
-rw-r--r-- 1 nigulasi nigulasi 0 Nov 26 14:13 product_b.img
-rw-r--r-- 1 nigulasi nigulasi 1276358656 Nov 26 14:13 system_a.img
-rw-r--r-- 1 nigulasi nigulasi 0 Nov 26 14:13 system_b.img
-rw-r--r-- 1 nigulasi nigulasi 789164032 Nov 26 14:13 vendor_a.img
-rw-r--r-- 1 nigulasi nigulasi 0 Nov 26 14:13 vendor_b.img
然后android11的super.img文件解包之后是这些文件:
-rw-r--r-- 1 nigulasi nigulasi 1196032 Nov 26 13:47 odm_a.img
-rw-r--r-- 1 nigulasi nigulasi 0 Nov 26 13:47 odm_b.img
-rw-r--r-- 1 nigulasi nigulasi 222171136 Nov 26 13:47 product_a.img
-rw-r--r-- 1 nigulasi nigulasi 0 Nov 26 13:47 product_b.img
-rw-r--r-- 1 nigulasi nigulasi 934141952 Nov 26 13:47 system_a.img
-rw-r--r-- 1 nigulasi nigulasi 0 Nov 26 13:47 system_b.img
-rw-r--r-- 1 nigulasi nigulasi 446722048 Nov 26 13:47 system_ext_a.img
-rw-r--r-- 1 nigulasi nigulasi 0 Nov 26 13:47 system_ext_b.img
-rw-r--r-- 1 nigulasi nigulasi 141283328 Nov 26 14:12 vendor_a.img
-rw-r--r-- 1 nigulasi nigulasi 0 Nov 26 14:12 vendor_b.img
3. 参考链接
-
https://blog.youkuaiyun.com/earbao/article/details/106720426?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160639407219725271041749%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=160639407219725271041749&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-2-106720426.first_rank_ecpm_v3_pc_rank_v2&utm_term=super.img&spm=1018.2118.3001.4449
-
https://github.com/mromm/simg2img_for_win