wsl编译5.10GKI内核和KernelSU并刷入pixel6
拉取源码#
当前pixel6是android13,所以选择了common-android13-5.10
分支
接着就需要拉取对应分支的内核代码
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export HTTP_PROXY=
export HTTPS_PROXY=
export REPO_URL='https://gerrit-googlesource.lug.ustc.edu.cn/git-repo'
repo init -u git://mirrors.ustc.edu.cn/aosp/kernel/manifest -b common-android13-5.10
# 需要设置代理 :repo init -u https://android.googlesource.com/kernel/manifest -b common-android13-5.10
repo sync
进入内核根目录中拉取KernelSU
的代码
cd common
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -
编译源码#
接着编译内核,GKI的内核编译与低版本android内核的编译略有区别。
LTO=thin BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh
// bazel : tools/bazel build --config=fast //common:kernel_aarch64_dist
编译完成之后在out目录中会生成Image
和Image.lz4
以及包含有avdtool
签名工具的压缩包
打包boot.img镜像#
利用源码tool
目录中的mkbootimg.py
打包boot.img
。
创建tmp目录存放打包的镜像。因为google在android13
中将ramdisk
从boot.img
中移除放在其他镜像中,boot.img
中不在包含ramdisk
,但是因为mkbootimg.py
需要指定ramdisk
文件位置,所以可以创建一个空的ramdisk
放在tmp目录中。将之前编译生成的Image.lz4
重命名为kernel
放在tmp目录中。将avdtool
签名工具放在tmp目录中。
运行如下命令打包生成boot.img
./mkbootimg.py --header_version 4 --kernel ./tmp/kernel --ramdisk ./tmp/ramdisk --gki_signing_algorithm SHA256_RSA2048 --gki_signing_key ./gki/testdata/testkey_rsa2048.pem --gki_signing_signature_args '--prop foo:bar --prop gki:nice' --gki_signing_avbtool_path ./tmp/avbtool -o ./tmp/new_boot.img
刷入手机后查看KernelSU
中的内核版本
搭建内核源码开发环境#
vscode + wsl + clangd即可进行内核开发,具体参考https://github.com/amezin/vscode-linux-kernel.git
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2022-10-20 android一二代壳的实现原理
2022-10-20 android类加载源码分析