android 读取各分区大小,Android8 分区表变化和相关信息

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

来源: https://pengzhangdev.github.io/android8-partiton-table/

差异简述¶

在Android8.0之后, 就存在两套分区表, 分别对应的是A/B系统和非A/B系统.非A/B系统的分区表与之前分区表一样, 没有变化.

A/B系统的分区表, 是本文的主要描述点.

所谓的A/B系统, 是指设备上存在两套系统, 其分区名也是存在_a 和 _b 的区别.两套系统中, 只有一套为active, 运行状态, 而升级则执行在另一套系统的分区中. 从而达到, 不管升级成功与否, 总有一套系统保证能使用.

而刷机, 包括挂时的分区表中, 都不会添加后缀(_a或_b). 只有在fastboot刷机时, 或者在init挂载时, 找到active的slot, 在指定分区名字后面添加后缀并挂载. 所以, 单纯从源码或者刷机包是无法指定哪些分区被指定为A/B了.

A/B系统带来的好处是:无缝升级, 不需要再进入recovery进行升级.

双系统备份, 不管是系统升级失败, 还是被破坏, 都可以切换到另一个系统, 确保用户设备的正常使用.

分区表与其内容¶

下面主要针对pixel设备进行分析, 也就是Android8的源码中marlin设备.

刷机文件和刷机方式¶

首先我们看下android官网提供的marlin设备刷机文件. 下面是基带和bootloader的刷机文件.

android8_partitions_1.png

zip包中的文件如下.

android8_partitions_2.png

如果单纯按照之前对该zip包文件的理解, 文件名字就是对应的分区名. 然而在A/B系统中, 却并不是如此. 而是按照一定的规则查找A/B分区.

首先, 最先注意到的是两个system大小不一致, 但是这个展开来讲有点多, 我们先把A/B系统刷机的第一个规则介绍以下, 代码在后文介绍第二个规则时可以同时看到.

A/B系统fastboot刷机时, 如果没有指定slot, 则默认刷入的是active的slot, 比如如果bootloader标记为slot A 为active, 则所有分区默认刷入slot A, 也就是说boot_a, system_a 等. 但是, 如果bootloader反馈某个分区没有区分A/B, 则默认直接刷入该分区. 比如 vendor 无区分A/B, 则直接刷入vendor.

然后, 我们关注下system.img和system_other.img, 如果单纯理解为这两个image分别刷入A/B分区, 则大小也完全对应不上. 大小问题, 我们稍后再看, 先研究下system_other.img刷入哪个分区.

static struct {

char img_name[17];

char sig_name[17];

char part_name[9];

bool is_optional;

bool is_secondary;

} images[] = {

{"boot.img", "boot.sig", "boot", false, false},

{"boot_other.img", "boot.sig", "boot", true, true},

{"recovery.img", "recovery.sig", "recovery", true, false},

{"system.img", "system.sig", "system", false, false},

{"system_other.img", "system.sig", "system", true, true},

{"vendor.img", "vendor.sig", "vendor", true, false},

{"vendor_other.img", "vendor.sig", "vendor", true, true},

};

其中 is_secondary 如果为true, 则意味着输入非activ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值