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

news2025/1/27 12:48:23

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

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

三个点:

一是现在的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/39944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

教务排课系统毕业设计,大学排课系统设计与实现,排课系统论文作品参考

功能清单 【后台管理员功能】 录入分院:录入分院名称,简介,详情 分院管理:管理已经录入分院,支持修改和删除 老师录入:录入老师姓名、联系方式、头像、老师简介 老师管理:管理所有已经录入老师…

基于Matlab模拟用于海况海洋学研究的 X 波段雷达系统(附源码)

目录 一、定义雷达系统参数 二、对海面进行建模 三、配置雷达收发器 四、生成数据多维数据集 五、处理海面回波 六、总结 七、程序 海事雷达系统在充满挑战的动态环境中运行。为了改进对感兴趣目标的检测并评估系统性能,必须了解海面返回的性质。 在本例中&a…

【操作系统】2.4 死锁

这一节也非常重要 2.4.1 死锁的概念 2.4.1 死锁的概念_StudyWinter的博客-CSDN博客 在并发环境下,各种进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象。这就是死锁,死锁发生后&#…

Jest API使用方法

如上面的知识图谱所示,一个常见的测试框架通常需要实现这些功能: ● before/after 钩子函数: 如beforeEach,afterEach, ● Mock方法: 函数Mock,时间mock等。 ● 断言: 判断一个描述是否正确,在Jest中常为 e…

你心心念念的RabbitMQ个人实践来了来了它来了

前言 MQ(Message Queue)就是消息队列,其有点有很多:解耦、异步、削峰等等,本文来聊一下RabbitMQ的一些概念以及使用。 RabbitMq 案例 Springboot整合RabbitMQ简单案例 基本概念 Exchange:消息交换机&a…

云原生系列 【基于CCE Kubernetes编排实战二】

✅作者简介: CSDN内容合伙人,全栈领域新星创作者,阿里云专家博主,阿里云问答板块版主,华为云享专家博主,掘金后端评审团成员 💕前言: 最近云原生领域热火朝天,那么云原生…

Hystirx限流:信号量隔离和线程池隔离

背景: 最近工作中要处理服务高并发的问题,大流量场景下限流熔断降级可以说是必不可少的,打算对限流做一次改造,所以要先了解一下hytrix相关内容,比如了解一下线程池隔离和信号量隔离的区别。 **信号量:**信…

[网络工程师]-应用层协议-DHCP

BOOTP是最早的主机配置协议,动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)则是在其基础上进行了改良的协议,是一种用于简化主机IP配置管理的IP管理标准。通过DHCP协议,DHCP服务器为DHCP客户…

集合学习笔记——Collection 全家桶

Collection是我们日常开发中使用频率非常高的集合,它的主要实现有List和Set,区别是List是有序的,元素可以重复;Set是无序的,元素不可以重复,我们简单看下继承关系: List的实现类主要线程不安全的ArrayList和LinkedList…

推挽输出和开漏输出-三极管-mos管

一、推挽输出 1.1推挽输出的概念 推挽(push-pull)输出是由两个MOS或者三极管组成,两个管子始终保持一个导通,另一个截止的状态。 图1 推挽电路示意图 当输入高电平时,叫做推; 上管Q1导通,下管…

【目标检测】Faster R-CNN论文的讲解

目录:Faster R-CNN论文的讲解一、前言二、回顾Fast R-CNN三、引入Faster R-CNN四、Faster R-CNN的介绍4.1 框架结构4.2 RPN如何产生候选区域的4.3 损失函数4.4 训练候选框提取网络4.5 RPN和Fast R-CNN共享特征的方法4.5.1 交替训练法4.5.2 近似联合训练法一、前言 …

C语言——学生信息管理系统

目录 功能展示 界面展示 所有功能模块: 功能1:菜单模块(显示功能菜单) 功能2:增加学生信息 功能3:输出学生信息(查看所有学习信息) 功能4:修改学生信息 功能5&a…

python3-GUI概述及应用

目录一、什么是GUI二、Python GUIPySimpleGUI概述一、PySimpleGUI简介二、PySimpleGUI特征三、输出设备hello,world猜数字一、玩家猜数字二、电脑猜数字21点游戏一、21点游戏简介二、程序代码一、什么是GUI 图形用户界面(Graphical User Interface,简称…

十六、CANdelaStudio深入-CDD与CDDT的差异(新建自定义服务)

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的CDD与CDDT的差异与新建自定义服务,欢迎…

数字图像处理(一)——什么是数字图像

一、什么是数字图像处理? 一副图像可以被定义为一个二维函数f(x,y),其中x和y是空间平面坐标,而对任意一对空间坐标(x,y)处幅值f称为图像在该点的强度或者灰度。当x和y以及灰度值f是有限的离散数值时,我们称该图像为数字图像。像素…

排序算法简述

一、概述 常见的排序算法有冒泡排序、插入排序、选择排序、快速排序、归并排序、桶排序、基数排序,这些排序各自有各自的特点。按照时间时间复杂度可以分为 O(n^2):冒泡、插入、选择排序;O(nlogn):归并、快速排序;O(n):桶排序、计数排序、基…

[附源码]java毕业设计自治小区物业设备维护管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]Python计算机毕业设计房地产销售系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

SSM+Mysql实现的共享单车管理系统(功能包含分角色,登录、用户管理、服务点管理、单车管理、分类管理、学生信息管理、单车租赁、信息统计、系统设置等)

博客目录SSMMysql实现的共享单车管理系统实现功能截图系统功能使用技术代码完整源码SSMMysql实现的共享单车管理系统 本系统一个学校共享单车管理的项目,通过线上系统化的管理,可以为后续的运营以及单车的项目运转提供极大的帮助。 (文末查看完整源码) …

【计算机视觉(CV)】基于图像分类网络VGG实现中草药识别(二)

【计算机视觉(CV)】基于图像分类网络VGG实现中草药识别(二) 作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项…