You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Bazel为Pixel 9a创建自定义内核编译目标以指定配置参数

解决Pixel 9a(tegu)自定义内核配置+Boot.img编译问题(Bazel)

核心思路

绕开预构建GKI依赖,直接基于自定义编译的内核Image、平台DTB,搭配官方ramdisk生成可刷入的boot.img。

步骤1:生成tegu平台专属DTB文件

无需单独寻找预构建dtb.img,可通过Bazel编译内核时同步生成:

  • 在kernel_build目标中添加dtb = True参数,编译时会自动生成对应平台的DTB文件,路径为bazel-out/aarch64-fastbuild/bin/arch/arm64/boot/dts/google/tegu.dtb

步骤2:创建独立的自定义内核编译目标

在BUILD.bazel中新增不依赖预构建GKI的目标,替代默认的kernel_images:

# 自定义内核编译目标:带16KB分页、KUNIT等配置
kernel_build(
    name = "kernel_tegu_custom",
    srcs = glob(["**"]),
    arch = "arm64",
    defconfig = "arch/arm64/configs/gki_defconfig",
    defconfig_fragments = [
        "path/to/your/custom_config.fragment",  # 存放自定义配置的片段文件
    ],
    dtb = True,  # 开启DTB编译
    extra_cflags = ["-DANDROID_GKI"],
)

# 生成可刷入的boot.img
kernel_images(
    name = "boot_img_tegu_custom",
    arch = "arm64",
    kernel = ":kernel_tegu_custom",
    dtb = ":kernel_tegu_custom.dtb",  # 指定编译生成的DTB
    ramdisk = "@aosp_ramdisk_tegu//:ramdisk.img",  # 使用适配tegu的官方ramdisk
    cmdline = "console=ttyMSM0,115200n8 androidboot.hardware=tegu androidboot.console=ttyMSM0",
    base_address = "0x00000000",
    page_size = "16384",  # 开启16KB分页后需设置为16384,默认4096
)

步骤3:编写自定义配置片段

创建custom_config.fragment文件,添加需要开启的配置项:

CONFIG_ARM64_16K_PAGES=y
CONFIG_KUNIT=y
CONFIG_KUNIT_TEST=y
# 其他你需要的条件编译选项

步骤4:编译并刷入设备

执行编译命令:

bazel build //:boot_img_tegu_custom --config=fastbuild

编译完成后,boot.img路径为bazel-out/aarch64-fastbuild/bin/boot_img_tegu_custom.img,用fastboot刷入:

fastboot flash boot bazel-out/aarch64-fastbuild/bin/boot_img_tegu_custom.img

关键注意事项

  • 确保@aosp_ramdisk_tegu//:ramdisk.img是适配Pixel 9a的官方ramdisk,可从对应版本AOSP源码中提取
  • 若未开启16KB分页,page_size需改回4096,否则设备无法正常启动
  • 遇到依赖问题时,可通过bazel query查看目标依赖链,逐步排查

内容的提问来源于stack exchange,提问作者samallen985

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 04:42:38