Build Android Kernel for Pixel 9 Pro XL
2025-02-21 17:08:52
配置环境
macOS 下使用 orbstack 的 docker,建立镜像,建议别想着在 macOS 下编译,对于 android kernel,Google 只给了win和linux-x86平台下的工具链,如果想自己折腾的话会很麻烦,会浪费很多时间(我就是浪费了好多时间还没弄成功www)。
所以用 docker 会比较方便。
还有一件事,macOS 默认的 APFS 没有开启大小写敏感(case-sensitive),而内核编译需要大小写敏感的文件系统,因此你需要新加卷一个大小写敏感的文件系统。可以使用 disk unility 工具,如图所示。
1 | docker run -v /Volumes/Projects:/projects --platform linux/amd64 -it ubuntu:22.04 bash |
安装依赖:
1 | sudo apt-get install git repo kmod cpio ccache automake flex lzop bison gperf build-essential zip curl zlib1g-dev g++-multilib libxml2-utils bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev squashfs-tools pngcrush schedtool dpkg-dev liblz4-tool make optipng maven libssl-dev pwgen libswitch-perl policycoreutils minicom libxml-sax-base-perl libxml-simple-perl bc libc6-dev-i386 lib32ncurses5-dev libx11-dev lib32z-dev libgl1-mesa-dev xsltproc unzip device-tree-compiler python3 python2 binutils-aarch64-linux-gnu pahole gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu p7zip-full p7zip-rar |
下载 android kernel
参考这里查看你的 pixel 代号,在国内可以用 ustc 和 thu 的源,不然下载会很慢
1 | export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/' |
编译
1 | ./build_caimito.sh |
从源代码编译,不使用 prebuilt
1 | ./build_caimito.sh --config=use_source_tree_aosp |
修改内核Kconfig配置文件
1 | tools/bazel run //private/devices/google/caimito:zumapro_caimito_config -- menuconfig |
其中 menuconfig 也可以改成 nconfig, savedefconfig
编译内核模块
参考 KernelSU 的 GitHub Action 脚本