Oneplus 10 pro刷GKI过程:
-
build kernel,生成boot.img(以下shell指令都是在源码根目录下执行)
download
common-android12-5.10-2022-09
branchrepo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/kernel/manifest/ -b common-android12-5.10-2022-09 repo sync -j8
修改配置文件:
root@zcos-System-Product-Name:/mnt/android/download# repo diff project common/ diff --git a/Makefile b/Makefile index 590527068664..b74d69884c29 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ VERSION = 5 PATCHLEVEL = 10 SUBLEVEL = 117 -EXTRAVERSION = +EXTRAVERSION = YYY #此处是添加内核版本名称信息,方便区分修改内核的不同版本 NAME = Dare mighty things # *DOCUMENTATION* diff --git a/build.config.gki.aarch64 b/build.config.gki.aarch64 index 9e70748400a1..9be4d1c118d6 100644 --- a/build.config.gki.aarch64 +++ b/build.config.gki.aarch64 @@ -35,6 +35,12 @@ android/abi_gki_aarch64_transsion FILES="${FILES} arch/arm64/boot/Image.lz4 " +BOOT_IMAGE_HEADER_VERSION=4 + +AVB_SIGN_BOOT_IMG=1 +AVB_BOOT_PARTITION_SIZE=0xc000000 #此处为boot parrtition大小,也是生成boot.img的大小,查询后知道一加10pro boot partition 大小为192Mb +AVB_BOOT_KEY=/mnt/android/download/tools/mkbootimg/tests/data/testkey_rsa2048.pem #此处路径我写的绝对路径,需要根据你自身电脑环境进行修改 /mnt/android/download 是我kernel源码所在根目录 +AVB_BOOT_ALGORITHM=SHA256_RSA2048 TRIM_NONLISTED_KMI=${TRIM_NONLISTED_KMI:-1} KMI_SYMBOL_LIST_STRICT_MODE=${KMI_SYMBOL_LIST_STRICT_MODE:-1}
添加
ramdisk
文件:# 从Android官网处下载boot.img,解包后的到ramdisk wget https://dl.google.com/android/gki/gki-certified-boot-android12-5.10-2022-09_r1.zip unzip gki-certified-boot-android12-5.10-2022-09_r1.zip tools/mkbootimg/unpack_bootimg.py --boot_img boot-5.10.img ###执行结果 boot magic: ANDROID! kernel_size: 46698804 ramdisk size: 1380082 os version: 12.0.0 os patch level: 2022-11 boot image header version: 4 command line args: boot.img signature size: 4096 ls out ###执行结果 boot_signature kernel ramdisk #解包后就是这三个文件 mv out/ramdisk gki-ramdisk.lz4
building kernel
BUILD_BOOT_IMG=1 SKIP_VENDOR_BOOT=1 KERNEL_BINARY=Image GKI_RAMDISK_PREBUILT_BINARY=gki-ramdisk.lz4 BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh #编译成功后,生成的boot.img在out/android12-5.10/dist 目录下 file out/android12-5.10/dist/boot.img #到此已经生成boot.img 可以用于刷机,下面内容是一些验证信息,可看可不看。 ###查看boot.img文件信息,执行结果 boot.img: Android bootimg, kernel (0x150ef2) #解包boot.img 查看内部信息 tools/mkbootimg/unpack_bootimg.py --boot_img out/android12-5.10/dist/boot.img ###执行结果 boot magic: ANDROID! kernel_size: 46698804 ramdisk size: 1380082 os version: 0.0.0 os patch level: 2000-00 boot image header version: 4 command line args: boot.img signature size: 4096 ll out #看日期清楚这三个文件是刚刚解包boot.img得到的,覆盖了第一次解包官方boot.img的文件 -rw-r--r-- 1 root root 4096 10月 12 20:14 boot_signature -rw-r--r-- 1 root root 46698804 10月 12 20:14 kernel -rw-r--r-- 1 root root 1380082 10月 12 20:14 ramdisk
-
将生成的boot.img 刷入手机boot分区内
#确保电脑有adb和fastboot环境,且手机处于unlock状态(解锁bl---bootloader)。切记解锁bl之前,进入手机开发者模式打开OEM解锁处于打开状态,一旦解锁bl,该功能按钮将不能再操作,除非重新锁上bl。 #手机进入开发者模式,且USB调试打开 adb reboot bootloader fatsboot reboot fastboot fastboot flash boot boot.img路径 fastboot reboot