pixel6 aosp14编译 升级内核

AOSP14编译

环境配置

Repo

1
2
curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/local/bin/repo
chmod +x /usr/local/bin/repo

Git

1
sudo apt install git

Platform tools

developer.android.com

建议使用比较新的,旧的可能不支持一些命令

Repo拉取aosp源码

1
2
3
repo init -u http://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-14.0.0_r34
#这里用了中科大的镜像源也可以之间使用google官方的https://android.googlesource.com/platform/manifest
repo --trace sync -c -j$(nproc --all) --no-tags

拉取需要的耗时很久,直到出现repo sync has finished successfully代表成功拉取

解压驱动

先在source.android.com中找到你拉取aosp版本对应的build id

我拉取的是android-14.0.0_r34,在Nexus 和 Pixel 设备的驱动程序二进制文件 | Google Play services | Google for Developers中找到对应build id的驱动文件

解压,复制其中的sh文件到aosp源码根目录下,执行

读完License后输入I ACCEPT回车

编译AOSP

设置环境

在源码根目录下执行

1
source build/envsetup.sh

选择构建目标

与之前的版本不同,aosp14使用lunch选择构建目标的规则变成了

1
lunch aosp_$device-$buildID-$version

device为设备代号

buildID取build id的前4位

version可取user userdebug eng

对应我编译的版本即是

1
lunch aosp_oriole-ap1a-userdebug

开始编译

aosp编译对内存资源的消耗巨大!

我在编译时最多消耗了约40G的内存,并且编译时建议使用纯命令行模式或者使用ssh连接,图形界面在低内存时极易崩溃

如果内存不足,请增加swap的大小以保证编译的正常进行

1
2
3
m
#直接执行m即可开始编译
#或者m -j16修改编译的线程数

编译时间取决于编译设备的性能,虚拟机可能要跑非常久,建议睡觉的时候跑

刷入编译好的aosp

编译好的文件在out/target/product/oriole目录下

1
2
3
4
adb reboot bootloader
ANDROID_PRODUCT_OUT=$aosp_PATH/out/target/product/oriole/ fastboot flashall -w
#$aosp_PATH替换为自己的源码路径
#-w代表清除用户数据

如果不识别设备请更换数据线为usb3.0

将内核升级到6.1

前提

必须是特定的build,这里的build只显示支持的最新版本

构建 Pixel 内核 | Android Open Source Project

上面编译的AP1A.240505.004正好是一个特定的版本

Repo拉取kernel源码

1
2
repo init --depth=1 --u https://android.googlesource.com/kernel/manifest -b android14-gs-pixel-6.1
repo --trace sync -c -j$(nproc --all) --no-tags

更新供应商 ramdisk

这个直接参照官网操作即可

构建 Pixel 内核 | Android Open Source Project

pixel6 的路径是 prebuilts/boot-artifacts/ramdisks/vendor_ramdisk-oriole.img

编译内核

对于5.15及以上的内核的build.sh​ 脚本已替换为 Kleaf 的新内核构建系统

1
tools/bazel run --config=fast --config=stamp //private/google-modules/soc/gs:slider_dist

刷入内核

编译后的文件在out/slider/dist目录下

1
2
3
4
5
6
adb reboot bootloader
fastboot flash boot boot.img
fastboot flash vendor_boot vendor_boot.img
fastboot flash dtbo dtbo.img
fastboot reboot fastboot
fastboot flash vendor_dlkm vendor_dlkm.img

加入SUKISU

参照github.com的workflow

注意!目前SUKISU的kernel_patch在pixel6的6.1内核无法运行(至少对我来说是这样),可以编译完成后先fastboot boot一下测试是否可用

重新编译刷入即可

如果要使用内核模块,则需要重新编译gki内核刷入后再提取boot使用apatch修补(这里使用SukiSU的kernel_patch虽然可以开机,但是在一些情况下会导致kernel panic直接死机)

1
2
repo init --depth=1 --u https://android.googlesource.com/kernel/manifest -b common-android14-6.1-2025-06
repo sync -j16

参考文档:

Pixel 6Pro AOSP源码在Docker内编译全过程

构建 Pixel 内核 | Android Open Source Project

blog.fangg3.com

AOSP代码环境配置 | kpa

GitHub - MiRinFork/GKI_SukiSU_SUSFS: 使用 SukiSU 和 SUSFS 的 GKI 内核

Guide compile kernel Raviole from sources ! [ 5.10 & 6.1 & mainline ]