KonaBess 中文文档 下载 App

Boot 镜像与 dtb 文件详解:调校的物理载体

Android Boot 镜像是什么

Boot 镜像是 Android 设备启动时加载的第一个系统镜像,类似于 PC 上的引导扇区。它包含以下几个核心组件:

boot.img 结构
├── Boot Header(头部)
├── Kernel(内核主体)
├── Ramdisk(临时根文件系统)
├── Second Bootloader(二级引导,可选)
└── Device Tree Blob(dtb)← KonaBess 主要修改这里

你的手机每次正常开机,都会从存储里读取 boot.img,然后加载其中的 kernel 和 dtb。dtb 就是"告诉内核硬件长什么样、各组件参数多少"的那张配置表。

dtb 文件的角色

Device Tree 的设计理念是将硬件描述从驱动代码中剥离。这样做的好处是:

高通骁龙平台的 GPU 相关参数就在 dtb 的 qcom,kgsl-3d0 节点下(KGSL 是 Qualcomm Graphics System Layer,高通的 GPU 驱动框架)。

GPU 频率表在 dtb 里长什么样

反编译 dtb 后,GPU DVFS 表大致是这样的结构:

qcom,kgsl-3d0 {
    // GPU 支持的所有频率档位
    qcom,gpu-freq-table = <
        305000000  // 305 MHz
        450000000  // 450 MHz
        600000000  // 600 MHz
        750000000  // 750 MHz
        825000000  // 825 MHz
        905000000  // 905 MHz(峰值)
    >;

    // 每个频率档对应的电压(单位 uV)
    qcom,gpu-voltage-table = <
        305000000 700000   // 305MHz → 0.70V
        450000000 750000   // 450MHz → 0.75V
        600000000 800000   // 600MHz → 0.80V
        750000000 850000   // 750MHz → 0.85V
        825000000 900000   // 825MHz → 0.90V
        905000000 950000   // 905MHz → 0.95V
    >;
};

KonaBess 做的事情就是:

  1. 读取这张表
  2. 展示成可视化界面
  3. 用户改完数值后写回
  4. 重新编译打包

为什么改 dtb 就能生效

因为 Android 内核启动时,GPU 驱动会直接读取 dtb 里的频率表和电压表来初始化。驱动不会去验证这些数值是不是"厂商原厂设的"——它只信 dtb 里写什么。

所以一旦你刷入了修改过 dtb 的 boot.img,GPU 驱动下次启动就会按你改过的频率和电压来工作。不需要 Magisk 模块、不需要 Xposed hook,纯粹是内核原生行为。

Vendor Boot 的情况

某些新机型(Android 12+)会把 dtb 拆到 vendor_boot.img 而不是 boot.img。KonaBess 会自动检测这个情况,优先处理 vendor_boot。两者的 dtb 修改逻辑完全一样,只是文件位置不同。