安卓的分区一点有用知识:super、lpunpack、lpdump

我们知道这个安卓的镜像分区有很多个。

在这里插入图片描述
那么这个文章要介绍什么呢?

三个点:

一是现在的android支持动态分区,很多的东西都被放到super分区里面了,这个应该是可以配置的。然后super里面有比如system、vendor这种比较大的分区。那么就有对应的vbmeta_system、vbmeta_vendor分区去验证。

现在只有两个知识点了

1、怎么看AVB镜像的签名是否成功

看vbmeta和对应的分区。
然后对比两个的digest和salt值。

怎么看?
(注意使用你的路径)

./android/external/avb/avbtool.py info_image --image android/out/target/product/xxx/vbmeta.img

2、super镜像

这个镜像是谷歌 新推出的。

super分区也叫做dynamic动态分区,动态分区是Android的用户空间分区系统,在Android R版本开始引入,目的是为了解决system和vender等分区size不能动态调整的问题。例如物理分区表配置固定size后,如果软件版本对system,verdor分区size需要频繁调整时,需要修改物理分区表和重新编译gpt表,使用起来不是很便利。

引入super动态分区之后,将system,vendor等分区一起“打包”在super分区中,物理分区表只有super,不再单独配置system,vendor等分区的配置,其中的子分区可以动态的调整大小。编译的时候,会将system,vendor等分区的信息以metadata形式记录下来,生成super.img时会根据matadata信息进行处理
  另外super分区中的子分区,也可以通过fastbootd以fastboot的方式刷入,或者使用lpunpack解压开

super分区工作原理

动态分区时使用Linux内核中的dm-linear device-mapper模块实现的,Linear是指将device,mapper设备的线性范围映射到另一个设备的线性范围
属于LVM逻辑卷管理。

  **Super分区包含列出了每个子分区的名称和块范围的metadata元数据.**

在开机init的first stage第一阶段运行期间,会解析并验证metadata元数据并创建虚拟block设备来表示每个子分区,创建logical逻辑分区出来。在init启动的第一阶段会去加载和处理,采用和以前类似的AVB校验流程,验证通过后,super包含的几个分区全部采用hashtree类型做dm-verity验证。在运行过程中对访问的block数据进行dm-verity安全校验。校验通过过,分别挂载这几个逻辑子分区。(校验通过才挂载)

3、怎么查看super镜像

当你直接使用avbtool去查看super镜像的时候,它会打印说这个不是个vbmeta镜像。

这是因为super确实不是,哈哈,他是多个的组合。怎么查看呢?先解压就可以看到super包含了哪些镜像,然后生成几个镜像,分别查看。

下面开始看这个super怎么解压:

需要两个东西: simg2img 和 lpunpack

  • 安装:
    安装simg2img

    sudo apt-get install super.img
    

    安装lpunpack

    	lpunpack 需要自己下载源码进行编译。lpunpack 生成后是通用的,所以下载别人编译好的 lpunpack 也是可以的,但		是需要添加依赖的相关 so 库。注意工具和 so 库是配套的,请一起使用。不要自己混搭工具和 so 库。下载好的 so 库文件放入 usr/lib/ 目录下即可也可以编辑 .bashrc 文件将 so 库所在目录路径加入到 LD_LIBRARY_PATH 中,命令如下
    
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库所在目录路径
    

    或者你下载源码的话就需要:

    source build/envsetup.sh
    make lpunpack
    

    生成文件所在目录:out/host/linux-x86/bin

  • 使用:
    1、 super.img 从 Android sparse image 转换为 raw image(因为super是稀疏格式)

    simg2img super.img super.img_ext4
    

    2、从 raw image 解包出分区镜像文件

    	./lpunpack -p system super.img_ext4  system (这里 sytem 是目标目录,可以自己创建)
    

然后你就可以进入这个system的文件夹下看看生成了什么镜像,然后使用前面的avbtool看一下这个内容,验证一下。

然后你会怀疑这个解压的对不对啊?

于是你可以使用 lpdump 查看镜像的一些信息,信息里就包括了分区名称

./lpdump super.img_raw(这里是用 simg2img 转换后的文件)

在这里插入图片描述

应该还是有点用撒哈哈哈 周末愉快

参考链接:
https://blog.csdn.net/weixin_43580319/article/details/127204111
https://blog.csdn.net/u012045061/article/details/119383397

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TrustZone_Hcoco

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值