前期准备 什么是KernelSU 来源: https://kernelsu.org/zh_CN/guide/what-is-kernelsu.html
KernelSU 的主要特点是它是基于内核的 。 KernelSU 运行在内核空间, 所以它可以提供我们以前从未有过的内核接口。 例如,我们可以在内核模式下为任何进程添加硬件断点;我们可以在任何进程的物理内存中访问,而无人知晓;我们可以在内核空间拦截任何系统调用; 等等。
KernelSU 还提供了一个基于 overlayfs 的模块系统,允许您加载自定义插件到系统中。它还提供了一种修改 /system 分区中文件的机制。
判断是否支持 下载对应的KernelSuhttps://github.com/tiann/KernelSU/releases
安装KernelSu apk 查看设备是否支持,显示”未安装“,表示当前机器支持 KernelSU
查看设备内核版本,从设备的内核版本来看,设备的KMI ( 7__Android杂项 )版本是 5.10-android13-4,相同的KMI的内核版本是兼容的, 在uname -a 查看的信息跟kernelSU里的不一致,不理解为啥会这样。
raven:/ $ uname -a Linux localhost 5.10.107-android13-4-00020-g02b5dfab573c-ab9358130 #1 SMP PREEMPT Thu Dec 1 18:28:18 UTC 2022 aarch64 Toybox
commitID : 02b5dfab573c
选择GKI版本 https://source.android.com/docs/core/architecture/kernel/gki-android13-5_10-release-builds?hl=zh-cn
下载boot-5.10-lz4.img,然后用010 查看,可以看到对应的内核版本,跟我们的系统版本是一致的。
找到manifest_xxx.xml 然后点击对应的kernel,可以看到对应GKI 构建的目录。
往下找,找到对应的manifest_xxx.xml,并下载。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 <manifest> <remote name= "aosp" fetch= "https://android.googlesource.com/" review= "https://android.googlesource.com/" /> <default upstream= "master-kernel-build-2022" dest-branch= "master-kernel-build-2022" remote= "aosp" sync-j= "4" /> <superproject name= "kernel/superproject" remote= "aosp" revision= "common-android13-5.10-2022-10" /> <project path= "build/kernel" name= "kernel/build" revision= "28bec492db207f403d08d88886f86dd1e2984089" > <linkfile dest= "tools/bazel" src= "kleaf/bazel.sh" /> <linkfile dest= "WORKSPACE" src= "kleaf/bazel.WORKSPACE" /> <linkfile dest= "build/build.sh" src= "build.sh" /> <linkfile dest= "build/build_abi.sh" src= "build_abi.sh" /> <linkfile dest= "build/build_test.sh" src= "build_test.sh" /> <linkfile dest= "build/build_utils.sh" src= "build_utils.sh" /> <linkfile dest= "build/config.sh" src= "config.sh" /> <linkfile dest= "build/envsetup.sh" src= "envsetup.sh" /> <linkfile dest= "build/_setup_env.sh" src= "_setup_env.sh" /> <linkfile dest= "build/multi-switcher.sh" src= "multi-switcher.sh" /> <linkfile dest= "build/abi" src= "abi" /> <linkfile dest= "build/static_analysis" src= "static_analysis" /> </project> <project path= "hikey-modules" name= "kernel/hikey-modules" revision= "8864304543d16b95c9c268e4e156601ef9b499e7" upstream= "android13-5.10" dest-branch= "android13-5.10" /> <project path= "common" name= "kernel/common" revision= "19424168db55715a7ba3f00505ac9b9f19fd3705" upstream= "android13-5.10-2022-10" dest-branch= "android13-5.10-2022-10" > <linkfile dest= ".source_date_epoch_dir" src= "." /> </project> <project path= "kernel/tests" name= "kernel/tests" revision= "42a77670ce44d6e19a6fbb8b93fa0b06f009a3a4" /> <project path= "kernel/configs" name= "kernel/configs" revision= "b3cc2bc03dab303c54a9ce1f709f8ee315eb311d" /> <project path= "common-modules/virtual-device" name= "kernel/common-modules/virtual-device" revision= "7d4ffda377b256bdc3a447018b051121772883df" upstream= "android13-5.10" dest-branch= "android13-5.10" /> <project path= "prebuilts/clang/host/linux-x86" name= "platform/prebuilts/clang/host/linux-x86" clone-depth= "1" revision= "4bb6424cb1615af408ae80871131f4da8c4ddadf" /> <project path= "prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8" name= "platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8" clone-depth= "1" revision= "007101a451907c5369db5002ddf7b14dcefb7864" /> <project path= "prebuilts/boot-artifacts" name= "platform/prebuilts/boot-artifacts" revision= "45d30d07ad284018481ebb419b5d01b5de72ed02" /> <project path= "prebuilts/build-tools" name= "platform/prebuilts/build-tools" clone-depth= "1" revision= "f6813860e16b2fa1461a15e7b8a3127dfdee021a" /> <project path= "prebuilts/kernel-build-tools" name= "kernel/prebuilts/build-tools" clone-depth= "1" revision= "67705de48752ea5c9d7d679c737f6ebbc8ba7348" /> <project path= "tools/mkbootimg" name= "platform/system/tools/mkbootimg" revision= "2208a03d874255af1e4eaf6cf7c156fe1dc98943" /> <project path= "prebuilts/bazel/linux-x86_64" name= "platform/prebuilts/bazel/linux-x86_64" clone-depth= "1" revision= "6162318e6458db65f94eed6671e302c3e894b1ac" /> <project path= "prebuilts/jdk/jdk11" name= "platform/prebuilts/jdk/jdk11" clone-depth= "1" revision= "aee26c8cd89b9abb428f676caba168699cd8662f" /> <project path= "prebuilts/ndk-r23" name= "toolchain/prebuilts/ndk/r23" clone-depth= "1" revision= "93532f3052c14fbb337ff57d5732128dc7481ee6" /> <project path= "external/bazel-skylib" name= "platform/external/bazel-skylib" revision= "f1fb8167b4ed64feb494fd1ea6a8a619bbb549de" /> <project path= "build/bazel_common_rules" name= "platform/build/bazel_common_rules" revision= "ddd2d82d10e21fb4137d2db3c1b848d6f1832acc" /> <project path= "external/stardoc" name= "platform/external/stardoc" revision= "b6ef2c6b6e39087f7396aaeb13c83464dfce4a19" /> <project path= "external/python/absl-py" name= "platform/external/python/absl-py" revision= "63f98de5b158481877489ca39158ed691f7551e1" /> </manifest>
初始化manifest&同步代码 把下载的manifest_xxx.xml 复制到你要目录内,初始化 官方文档同步内核代码是
1 2 3 4 repo init -u https://android.googlesource.com/kernel/manifest mv <kernel_manifest.xml> .repo/manifests repo init -m manifest.xml repo sync
但我在同步的时候,显示找不到 manifest_91.xml,文件,于是把路径补全了,就可以同步了。
1 repo init - m /root/ aosp/kernel_android13_5_10_107/ manifest_91.xml
同步代码
同步的时候common 库的代码一直没办法获取。
1 2 3 4 5 kernel/common: fatal: Couldn't find remote ref refs/heads/android13-5 .10-2022 -10 kernel/common: sleeping 4.0 seconds before retrying fatal: Couldn't find remote ref refs/heads/android13-5 .10-2022 -10 error: Cannot fetch kernel/common from https://android.googlesource.com/kernel/common
由于在manifest.xml 中看到了android13-5.10, 所以直接用git 把 common的源代码同步到目录中
git clone https://android.googlesource.com/kernel/common -b android13-5.10
目录结构 最终可以看到完整的kernel 目录结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 total 48 drwxr -xr-x 12 root root 4096 Jan 4 07 :03 .drwxr -xr-x 8 root root 4096 Jan 3 09 :54 ..drwxr -xr-x 7 root root 4096 Jan 3 10 :28 .repolrwxrwxrwx 1 root root 6 Jan 3 10 :35 .source_date_epoch_dir -> commonlrwxrwxrwx 1 root root 34 Jan 3 10 :28 WORKSPACE -> build/kernel/kleaf/bazel.WORKSPACEdrwxr -xr-x 4 root root 4096 Jan 3 10 :28 builddrwxr -xr-x 27 root root 4096 Jan 4 07 :10 commondrwxr -xr-x 3 root root 4096 Jan 3 10 :28 common-modulesdrwxr -xr-x 5 root root 4096 Jan 3 10 :28 externaldrwxr -xr-x 3 root root 4096 Jan 3 10 :28 hikey-modulesdrwxr -xr-x 4 root root 4096 Jan 3 10 :28 kerneldrwxr -xr-x 6 root root 4096 Jan 4 07 :11 outdrwxr -xr-x 10 root root 4096 Jan 3 10 :29 prebuiltsdrwxr -xr-x 3 root root 4096 Jan 3 10 :30 tools
开始构建 Linux Kernel 是 Android 系统运行的基础,而Linux Kernel 的源码 在AOSP 中并不存在,通常存在的是与构建的内核映像,如果想对内核做一些定制化的修改,就需要下载代码并构建,Linux Kernel 像AOSP 有各种各样的分支,并不是随便选择一个分支构建就可以正常运行。编译AOSP对应的Linux Kernel版本才能避免构建过程走很多弯路。每一个AOSP构建目标都预置了预编译 的内核映像,可以从内核影像中获取相应版本的蛛丝马迹。
需要说明的是Android的内核项目同样是由repo(android.googlesource.com/kernel/mani…) 管理的,其中Linux Kernel的源码存在于kernel/common(android.googlesource.com/kernel/comm…) 目录下,其他目录是与构建相关的工具链或者脚本等,在之前旧版本Linux Kernel构建中可以直接下载kernel/common的代码使用make直接编译出内核镜像,但是随着Android GKI的推出,这套方法就行不通了。
编译 由于我的pixel 6Pro 是 arrch64 架构的,所以直接按照官网里的来
LTO=thin BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh
如果自己的不一样,要自己指定对应的GKI内核架构,在common 文件夹内可以找到大部分的内核。
由于我的计算机是64G 的,所以就没有加上 LTO=thin。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 root@4 cd0e87f2387:~/aosp/kernel_android13_5_10_107# BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh ======================================================== Setting up for build + cd common + make LLVM=1 DEPMOD=depmod DTC=/root/aosp/kernel_android13_5_10_107/build/kernel/build-tools/path/linux-x86/dtc O=/root/aosp/kernel_android13_5_10_107/out/android13-5.10 /common mrproper make[1 ]: Entering directory '/root/aosp/kernel_android13_5_10_107/out/android13-5.10/common' rm -f ./crypto/fips140.ko.rela.* make[1 ]: Leaving directory '/root/aosp/kernel_android13_5_10_107/out/android13-5.10/common' + set +x + cd + make /root//kernel_android13_5_10_107//kernel//path//dtc O=//aosp//out//common gki_defconfig make[1 ]: Entering directory GEN Makefile HOSTCC scripts//fixdep HOSTCC scripts//conf.o HOSTCC scripts//confdata.o HOSTCC scripts//expr.o LEX scripts//lexer.lex.c YACC scripts//parser.tab.[ch] HOSTCC scripts//preprocess.o HOSTCC scripts//symbol.o HOSTCC scripts//util.o HOSTCC scripts//lexer.lex.o HOSTCC scripts//parser.tab.o HOSTLD scripts//conf # # configuration written to .config # make[1 ]: Leaving directory + set +x ======================================================== Running pre-make command(s): + eval check_defconfig ++ check_defconfig ++ cd //aosp//out//common ++ make LLVM=1 DEPMOD=depmod DTC=//aosp//build//build-tools//linux-x86//root//kernel_android13_5_10_107//android13-5.10 / GEN ++ '[' arm64 ++ RES=0 ++ [[ -f /arch//configs/ ++ diff /arch//configs/ /root//kernel_android13_5_10_107//android13-5.10 //defconfig ++ 0 -ne 0 ++ return 0 + set +x ======================================================== Copying abi definition to //aosp//out//dist/ ~/aosp/kernel_android13_5_10_107/common ~/aosp/kernel_android13_5_10_107 ~/aosp/kernel_android13_5_10_107 ======================================================== Generating ABI symbol list definition in /root/aosp/kernel_android13_5_10_107/out/android13-5.10/dist/abi_symbollist Generating /root//kernel_android13_5_10_107//android13-5.10 //abi_symbollist.report ~//kernel_android13_5_10_107/ ~/aosp/ GEN # # configuration # ~/aosp/kernel_android13_5_10_107 ======================================================== Building + cd /root//kernel_android13_5_10_107//android13-5.10 / + make /root//kernel_android13_5_10_107//android13-5.10 //root//kernel_android13_5_10_107//kernel//path//dtc Image modules Image.lz4 Image.gz SYNC include//auto.conf.cmd GEN Makefile ... die__process_unit: DW_TAG_label (0xa ) @ <0x15dcf6 > not handled! die__process_unit: DW_TAG_label (0xa ) @ <0x15de2f > not handled! die__process_unit: DW_TAG_label (0xa ) @ <0x15de4c > not handled! die__process_unit: DW_TAG_label (0xa ) @ <0x15df85 > not handled! die__process_unit: DW_TAG_label (0xa ) @ <0x15df9f > not handled! die__process_unit: DW_TAG_label (0xa ) @ <0x15dfb9 > not handled! LD .tmp_vmlinux.kallsyms1 KSYMS .tmp_vmlinux.kallsyms1.S AS .tmp_vmlinux.kallsyms1.S LD .tmp_vmlinux.kallsyms2 KSYMS .tmp_vmlinux.kallsyms2.S AS .tmp_vmlinux.kallsyms2.S LD vmlinux BTFIDS vmlinux SORTTAB vmlinux SYSMAP System .map OBJCOPY arch//boot/ LZ4 /arm64//Image.lz4 GZIP arch//boot/ MODPOST GEN + set ======================================================== Checking ======================================================== Comparing + gki_modules_list=/root/aosp/kernel_android13_5_10_107/common/android/gki_system_dlkm_modules ++ sed /root//kernel_android13_5_10_107//android/ ++ tr + KMI_STRICT_MODE_OBJECTS='vmlinux ' + /root/aosp/kernel_android13_5_10_107/build/abi/compare_to_symbol_list /root//kernel_android13_5_10_107//android13-5.10 //Module.symvers //aosp//out//common/ + set ======================================================== Installing DEPMOD ======================================================== Generating ======================================================== Generating ======================================================== Copying arch/arm64/boot/Image vmlinux System .map vmlinux.symvers modules.builtin modules.builtin.modinfo arch/arm64/boot/Image.lz4 arch/arm64/boot/Image.gz ======================================================== Installing UAPI kernel headers: make: Entering directory INSTALL /root/aosp/kernel_android13_5_10_107/out/android13-5.10/kernel_uapi_headers/usr/include make: Leaving directory Copying kernel UAPI headers to /root/aosp/kernel_android13_5_10_107/out/android13-5.10/dist/kernel-uapi-headers.tar.gz ======================================================== Copying /root//kernel_android13_5_10_107//android13-5.10 //kernel-headers.tar.gz ~//kernel_android13_5_10_107/ ~/aosp/ ~/aosp/kernel_android13_5_10_107 ======================================================== Creating ======================================================== Files /root//kernel_android13_5_10_107//android13-5.10 / Creating
使用KernelSU构建内核
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 root@4cd0e87f2387:~/aosp/kernel_android13_5_10_107 ++ pwd + GKI_ROOT=/root/aosp/kernel_android13_5_10_107 + echo '[+] GKI_ROOT: /root/aosp/kernel_android13_5_10_107' [+] GKI_ROOT: /root/aosp/kernel_android13_5_10_107 + test -d /root/aosp/kernel_android13_5_10_107/common/drivers + DRIVER_DIR=/root/aosp/kernel_android13_5_10_107/common/drivers + test -d /root/aosp/kernel_android13_5_10_107/KernelSU + git clone https://github.com/tiann/KernelSU Cloning into 'KernelSU' ... remote: Enumerating objects: 12723, done . remote: Counting objects: 100% (120/120), done . remote: Compressing objects: 100% (66/66), done . remote: Total 12723 (delta 53), reused 98 (delta 39), pack-reused 12603 Receiving objects: 100% (12723/12723), 12.04 MiB | 552.00 KiB/s, done . Resolving deltas: 100% (7655/7655), done . + cd /root/aosp/kernel_android13_5_10_107/KernelSU + git stash No local changes to save ++ git status ++ grep -Po 'v\d+(\.\d+)*' ++ head -n1 + '[' '' ']' + git pull Already up to date . + '[' -z '' ']' ++ git describe --abbrev=0 --tags + git checkout v0.7.2 Note: checking out 'v0.7.2' . You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you maydo so (now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch-name> HEAD is now at afefe20 ci: fix clippy + cd /root/aosp/kernel_android13_5_10_107 + echo '[+] GKI_ROOT: /root/aosp/kernel_android13_5_10_107' [+] GKI_ROOT: /root/aosp/kernel_android13_5_10_107 + echo '[+] Copy kernel su driver to /root/aosp/kernel_android13_5_10_107/common/drivers' [+] Copy kernel su driver to /root/aosp/kernel_android13_5_10_107/common/drivers + cd /root/aosp/kernel_android13_5_10_107/common/drivers + test -d /root/aosp/kernel_android13_5_10_107/common/drivers + ln -sf ../../KernelSU/kernel kernelsu + cd /root/aosp/kernel_android13_5_10_107 + echo '[+] Add kernel su driver to Makefile' [+] Add kernel su driver to Makefile + DRIVER_MAKEFILE=/root/aosp/kernel_android13_5_10_107/common/drivers/Makefile + DRIVER_KCONFIG=/root/aosp/kernel_android13_5_10_107/common/drivers/Kconfig + grep -q kernelsu /root/aosp/kernel_android13_5_10_107/common/drivers/Makefile + printf 'obj-$(CONFIG_KSU) += kernelsu/\n' + grep -q kernelsu /root/aosp/kernel_android13_5_10_107/common/drivers/Kconfig + sed -i '/endmenu/i\source "drivers/kernelsu/Kconfig"' /root/aosp/kernel_android13_5_10_107/common/drivers/Kconfig + echo '[+] Done.' [+] Done.
重新编译一遍
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 LZ4 arch/arm64/boot/Image.lz4 GZIP arch/arm64/boot/Image.gz MODPOST modules-only.symvers GEN Module.symvers + set +x ======================================================== Checking ======================================================== Comparing + gki_modules_list=/root/aosp/kernel_android13_5_10_107/common/android/gki_system_dlkm_modules ++ sed /root//kernel_android13_5_10_107//android/ ++ tr + KMI_STRICT_MODE_OBJECTS='vmlinux ' + /root/aosp/kernel_android13_5_10_107/build/abi/compare_to_symbol_list /root//kernel_android13_5_10_107//android13-5.10 //Module.symvers //aosp//out//common/ + set ======================================================== Installing DEPMOD ======================================================== Generating ======================================================== Generating ======================================================== Copying arch/arm64/boot/Image vmlinux System .map vmlinux.symvers modules.builtin modules.builtin.modinfo arch/arm64/boot/Image.lz4 arch/arm64/boot/Image.gz ======================================================== Installing UAPI kernel headers: make: Entering directory INSTALL /root/aosp/kernel_android13_5_10_107/out/android13-5.10/kernel_uapi_headers/usr/include make: Leaving directory Copying kernel UAPI headers to /root/aosp/kernel_android13_5_10_107/out/android13-5.10/dist/kernel-uapi-headers.tar.gz ======================================================== Copying /root//kernel_android13_5_10_107//android13-5.10 //kernel-headers.tar.gz ~//kernel_android13_5_10_107/ ~/aosp/ ~/aosp/kernel_android13_5_10_107 ======================================================== Creating ======================================================== Files /root//kernel_android13_5_10_107//android13-5.10 / Creating
编译结果out 编译后的目录,可以看到多了一个out 目录和KernelSU目录,内核二进制文件、模块和相应的映像位于 out/android13-5.10/dist 目录下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 root@4cd0e87f2387:~/aosp/kernel_android13_5_10_107 total 56 drwxr-xr-x 13 root root 4096 Jan 4 03:35 . drwxr-xr-x 8 root root 4096 Jan 3 09:54 .. drwxr-xr-x 7 root root 4096 Jan 3 09:50 .repo lrwxrwxrwx 1 root root 6 Jan 3 09:25 .source_date_epoch_dir -> common drwxr-xr-x 10 root root 4096 Jan 4 03:35 KernelSU lrwxrwxrwx 1 root root 34 Jan 3 09:18 WORKSPACE -> build/kernel/kleaf/bazel.WORKSPACE drwxr-xr-x 4 root root 4096 Jan 3 09:18 build drwxr-xr-x 27 root root 4096 Jan 3 14:47 common drwxr-xr-x 3 root root 4096 Jan 3 09:18 common-modules drwxr-xr-x 5 root root 4096 Jan 3 09:18 external drwxr-xr-x 3 root root 4096 Jan 3 09:18 hikey-modules drwxr-xr-x 4 root root 4096 Jan 3 09:18 kernel -rw-r--r-- 1 root root 3823 Jan 3 08:44 manifest_91.xml drwxr-xr-x 5 root root 4096 Jan 4 03:05 out drwxr-xr-x 10 root root 4096 Jan 3 09:19 prebuilts drwxr-xr-x 3 root root 4096 Jan 3 09:19 tools
在out目录内,可以看到
刷入到手机内 1 2 3 4 5 6 7 8 9 10 E :\file\KernelSU>adb reboot bootloaderE :\file\KernelSU>fastboot flash boot boot.imgSending 'boot_a' (65536 KB) OKAY [ 2.135s] Writing 'boot_a' OKAY [ 0.081s] Finished . Total time: 2 .228 sE :\file\KernelSU>fastboot rebootRebooting OKAY [ 0.001s] Finished . Total time: 0 .007 s
查看KernelSU
开启root
root检测(检测不出来)
查看内核 1 2 3 4 5 6 7 E: \file\KernelSU>adb shellraven: / $ uname -a Linux localhost 5.10 .198 -android13-4 -0 0014-g4fb32a1f29a6-dirty raven: / $ su/system/bin /sh: su: inaccessible or not found 127|raven:/ $ suraven: /
查看 ro.debuggable
KernelSU模块 其他思考 INFO 1 在GKI 源码目录common 内,看到有debug的文件,猜测是不是编译的时候加入这个选项,就可以开启内核调试了。
GTP 回答
build.config.gki-debug.aarch64
和build.config.gki.aarch64
是Android内核构建过程中使用的两个不同的配置文件。它们的区别在于构建选项和调试功能的开启程度。build.config.gki.aarch64
是用于构建GKI(Generic Kernel Image)的配置文件,它是一个精简的、通用的内核映像。这个配置文件主要用于生产环境中构建内核,通常会关闭一些调试相关的选项,以提高性能和减小内核映像的大小。 相比之下,build.config.gki-debug.aarch64
是用于构建调试版本的GKI的配置文件。它在构建过程中包含了更多的调试选项,以支持开发和调试工作。这些调试选项可以帮助开发者进行内核的故障排除和性能分析。 具体来说,build.config.gki-debug.aarch64
可能会打开一些额外的调试选项,如内核符号表的生成、动态跟踪功能的启用、内核调试器(如KGDB)的支持等。这些选项会增加内核映像的大小,并且可能会对性能产生一些影响,但可以提供更丰富的调试信息和功能。 因此,选择使用哪个配置文件取决于你的需求。如果你正在进行生产环境的构建,并追求最佳性能和较小的内核映像大小,那么你可以使用build.config.gki.aarch64
。如果你需要进行开发、调试或故障排除工作,并且对调试功能和信息更感兴趣,那么你可以选择build.config.gki-debug.aarch64
。 请注意,在使用这些配置文件之前,你需要确认它们是否适用于你的构建环境和项目需求,并根据实际情况进行相应的配置和调整
参考 官方guidehttps://kernelsu.org/zh_CN/guide/installation.html
https://source.android.com/docs/setup/build/building-kernels?hl=zh-cn