本文参考了h论坛上的帖子
必要工具
- 一台装了python的linux机器(我用的debian)
- 签名文件
- iplay20原版boot.img
- 一台已经root了的其他的设备
- AVBtool
必要文件已经上传好了下载链接在下面
https://wwi.lanzouy.com/b07hjo4uh
密码:8pvt
生成自己的vbmeta
首先,生成自己的vbmeta,生成vbmeta用到的文件都在keys下了,当然如果需要使用自己的密钥的话可以自己生成。展讯的s9863a以及s9832e vbmeta和boot等镜像修改签名的方法是一样的。生成vbmeta的命令如下:
python avbtool make_vbmeta_image --key rsa4096_vbmeta.pem --algorithm SHA256_RSA4096 --flag 0 –padding_size 16384 --chain_partition boot:1:keys/hovatek.bin --chain_partition dtbo:10:keys/dtbo.bin --chain_partition recovery:2:keys/recovery.bin --chain_partition socko:11:keys/socko.bin --chain_partition odmko:12:keys/odmko.bin --chain_partition vbmeta_system:3:keys/vbmeta_system.bin --chain_partition vbmeta_vendor:4:keys/vbmeta_vendor.bin --chain_partition l_modem:6:keys/l_modem.bin --chain_partition l_ldsp:7:keys/l_ldsp.bin --chain_partition l_gdsp:8:keys/l_gdsp.bin --chain_partition pm_sys:9:keys/pm_sys.bin --output vbmeta-sign-custom.img
这里说明一下,命令要在linux下和keys文件夹同个目录的地方执行生成,把AVBtool也丢进这个目录。之后会生成一个属于你自己的vbmeta的img文件,名字是vbmeta-sign-custom.img。以上命令参考自酷比论坛的以下命令:
python2 avbtool make_vbmeta_image –key rsa4096_vbmeta.pem –algorithm SHA256_RSA4096 –flag 0 –padding_size 16384 \
–chain_partition boot:1:keys/x_key.bin \
–chain_partition dtbo:10:keys/key_dtbo.bin \
–chain_partition recovery:2:keys/key_recovery.bin \
–chain_partition socko:11:keys/key_socko.bin \
–chain_partition odmko:12:keys/key_odmko.bin \
–chain_partition vbmeta_system:3:keys/key_vbmeta_system.bin \
–chain_partition vbmeta_vendor:4:keys/key_vbmeta_vendor.bin \
–chain_partition l_modem:6:keys/key_l_modem.bin \
–chain_partition l_ldsp:7:keys/key_l_ldsp.bin \
–chain_partition l_gdsp:8:keys/key_l_gdsp.bin \
–chain_partition pm_sys:9:keys/key_pm_sys.bin \
–output vbmeta_my.img
其中你要修改的boot.img最后签名跟里面的x_key.bin是对应的。关于bin文件的生成命令如下,如果使用我提供的可以跳过:
python avbtool extract_public_key --key hovatek.pem --output keys/hovatek.bin
其中hovatek.pem为证书文件,你可以替换成你自己的,证书生成自行查阅资料,我用的默认rsa4096_vbmeta.pem
紫光这soc要求vbmeta和boot要用的一样的证书才能过验证,所以很麻烦。
到这里为止vbmeta就搞定了,这次生成的vbmeta你可以一直以后都用下去。只要以后每次boot签名的证书和你生成vbmeta用的证书一样的就可以了。
用magisk修补boot
这里应该可以跳过,用我提供的原版boot.img丢到已经root的设备上用magisk修补boot就行可,一般会生成一个新的修补好的boot.img。
签名修补好的boot
使用上面生成vbmeta时候用的证书来生成boot,先把magisk修补后生成的文件丢进linux,然后执行以下命令:
python avbtool add_hash_footer --image magisk_patched-23016_BohEx.img --partition_name boot --partition_size 36700160 --key rsa4096_vbmeta.pem --algorithm SHA256_RSA4096
其中,magisk_patched-23016_BohEx.img为magisk修补后生成的文件,rsa4096_vbmeta.pem为使用的证书。如果偷懒的话其实以后每次只要把原版boot用magisk修补一下然后丢进linux执行一下上面的命令就可以刷入iplay20上用了。
刷入boot和vbmeta
这个应该大家都懂,iplay20进fastbootd,电脑执行命令:
fastboot --disable-verity --disable-verification flash vbmeta vbmeta_signed.img
fastboot flash boot boot-magisk-20.4-T1011s-20200513.img
vbmeta_signed.img和boot-magisk-20.4-T1011s-20200513.img分别为上面生成的vbmeta和已经自己签名好的boot,改一下名字刷入即可。
注意事项
切记,因为生成的vbmeta和原厂的不一样,所以不能用升级工具的方法刷入自己生成的vbmeta和boot,会卡住的,老老实实用命令行哈。授人以鱼不如授人以渔,大家搞起来。
PS:目前安卓12下好像USB有问题,进系统后电脑没法用adb管理iplay20.安卓12的话推荐用LineageOS,phh的aosp总感觉卡了点。
找arm64_bvS-vndklite的下就行了,刷入可以开机问题不大,记得先双清。
最后修改于 2022-03-06