公司之前采购了一批的设备,系统版本有 Android10 ,Android12 ,因为上游厂商倒闭,因此这批设备没有上游厂商支持了。(之前会让上游厂商在 ROM 中做一些简单的定制,比如去掉/隐藏某个设置入口之类的,总是很简单的修改)
因为没有源码,所以我们要重新利用起来这批设备想到了 GSI 。
因为有之前厂商提供的签名私钥,就是 xxx.pem ,用于解锁、加密 vbmeta 和 vbmeta_system,
针对 Android10 ,我们目前已经完整实现了:
这些都完美工作。
但是在处理 Android 12 的时候,遇到了问题。
从分区上来看,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 基本上把网上能尝试的操作都试了,有点没有头绪了~
1
pagxir 145 天前
kernel 能加载么,不能就是签名不对。你可以试试不要解锁,然后生成 ota 包。进入 recovery 然后 sideload 生成的 ota 包
|
2
andforce OP @pagxir 现在用那个 xxx.pem 可以给 bootloader 解锁,签名方式与 android10 基本一致,感觉上应该是对的。
现在情况是 android10 可以,android12 不行,不行指的是上锁后会无限重启,不上锁因为 vbmeta 不验证一切都正常。 至于生成 OTA 包可能不行啊,因为我们没有源码。只有一个秘钥。 还是说使用 AOSP 源码就能生成 OTA 包? |
3
lx0758 144 天前
|
4
andforce OP @lx0758 感谢,看来 Android12 引入了新的启动引导机制,目前 Android10 成功的,我再试试 Android11 ,至于 Android12 目前没有太多思路,搞一下 Android11 试试~
|
5
pagxir 144 天前 via Android
full OTA image 可以升级整个系统,即使原来的系统坏了,只要能进 recovery 就能刷进去。
|