Android 12 分区签名如何搞?刷入 GSI 然后上锁 bootloader 无限重启

108 天前
 andforce

背景

公司之前采购了一批的设备,系统版本有 Android10 ,Android12 ,因为上游厂商倒闭,因此这批设备没有上游厂商支持了。(之前会让上游厂商在 ROM 中做一些简单的定制,比如去掉/隐藏某个设置入口之类的,总是很简单的修改)

目前现状

因为没有源码,所以我们要重新利用起来这批设备想到了 GSI 。

因为有之前厂商提供的签名私钥,就是 xxx.pem ,用于解锁、加密 vbmeta 和 vbmeta_system,

针对 Android10 ,我们目前已经完整实现了:

  1. 解锁
  2. 刷入从 aosp 源码编译得到的 system.img
  3. 使用私钥重新生成 vbmeta.img 和 vbmeta_system.img,并刷入
  4. 上锁

这些都完美工作。

遇到的问题

但是在处理 Android 12 的时候,遇到了问题。

  1. 解锁 -正常
  2. 刷入从 aosp 源码编译得到的 system.img -正常
  3. 使用私钥重新生成 vbmeta.img 和 vbmeta_system.img,并刷入 -正常
  4. 上锁 --会导致无限重启,不上锁 bootloader 的话,系统一切都是正常的。

从分区上来看,android12 比 android10 多了个 system_ext 分区,并且使用 lpunpack 解包 super.img 后,多了很多 ab

-rw-r--r-- 1 ddd ddd    271257600 7 月  29 17:39 product_a.img
-rw-r--r-- 1 ddd ddd            0 7 月  29 17:39 product_b.img
-rw-r--r-- 1 ddd ddd    654548992 7 月  29 17:39 system_a.img
-rw-r--r-- 1 ddd ddd            0 7 月  29 17:39 system_b.img
-rw-r--r-- 1 ddd ddd    343097344 7 月  29 17:39 system_ext_a.img
-rw-r--r-- 1 ddd ddd            0 7 月  29 17:39 system_ext_b.img
-rw-r--r-- 1 ddd ddd    805707776 7 月  29 17:39 vendor_a.img
-rw-r--r-- 1 ddd ddd            0 7 月  29 17:39 vendor_b.img
-rw-r--r-- 1 ddd ddd     15613952 7 月  29 17:39 vendor_dlkm_a.img
-rw-r--r-- 1 ddd ddd            0 7 月  29 17:39 vendor_dlkm_b.img 

而 android10 的 super.img 中 只有 system.img product.img 和 vendor.img 这三个。

我本身没有 bsp 或者 fwk 的开发经验,上面那些操作完全来自于网上搜索~

目前针对 Android 12 基本上把网上能尝试的操作都试了,有点没有头绪了~

3107 次点击
所在节点    Android
6 条回复
pagxir
108 天前
kernel 能加载么,不能就是签名不对。你可以试试不要解锁,然后生成 ota 包。进入 recovery 然后 sideload 生成的 ota 包
andforce
108 天前
@pagxir 现在用那个 xxx.pem 可以给 bootloader 解锁,签名方式与 android10 基本一致,感觉上应该是对的。

现在情况是 android10 可以,android12 不行,不行指的是上锁后会无限重启,不上锁因为 vbmeta 不验证一切都正常。

至于生成 OTA 包可能不行啊,因为我们没有源码。只有一个秘钥。

还是说使用 AOSP 源码就能生成 OTA 包?
lx0758
108 天前
andforce
107 天前
@lx0758 感谢,看来 Android12 引入了新的启动引导机制,目前 Android10 成功的,我再试试 Android11 ,至于 Android12 目前没有太多思路,搞一下 Android11 试试~
pagxir
107 天前
full OTA image 可以升级整个系统,即使原来的系统坏了,只要能进 recovery 就能刷进去。
andforce
107 天前
@pagxir 这应该得有之前系统的源码才行吧,单纯从 asop 的代码弄不出来 ota 的文件吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1061529

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX