Android 内核常见问题解答

本文档包含有关 Android 内核(也称为通用内核映像 (GKI) 内核)的常见问题解答。如果您不熟悉 GKI 和 GKI 内核术语,请参阅内核概述

内核模块接口 (KMI) 符号列表可以在稳定内核中更改吗?

不影响现有 KMI 的更改可以添加到冻结的内核中。这些更改包括新的导出函数和符号列表条目。如需了解详情,请参阅管理符号列表

我可以在稳定内核中更改供应商模块使用的结构吗?

作为 KMI 接口一部分的结构无法在具有冻结 KMI 的内核中更改。在 KMI 冻结之前,可以更改这些结构。

只要我不破坏二进制或源代码兼容性,我可以更改内核吗?

不影响 KMI 的更改可以按照Android 专用补丁中所述进行。

GKI 如何处理内核配置?

如需了解内核配置的相关信息,请参阅gki_defconfig 更改

如何处理对现有 GKI 模块的覆盖的上游错误修复?

如果您基于 Android 通用内核 (ACK) 中的驱动程序创建供应商模块,则由您负责确保将来自上游和 ACK 的错误修复传播到您的模块。通常,最好使用未经修改的 GKI 内核和 GKI 模块,以便 Google 持续提供这些更新。

是否有 GKI 专用测试?

供应商测试套件 (VTS) 测试,用于验证是否安装了经过认证的 GKI 版本,并强制执行每个版本的 GKI 要求。例如,有适用于 Android 12 VTS 的测试,用于测试启动标头 v3 并验证运行 5.10 内核的设备中是否存在所需分区。

如何为设备版本创建项目 defconfig 片段文件?

许多 GKI 兼容设备使用配置片段来描述除 gki_defconfig 之外构建供应商模块所需的配置选项。作为 ACK 代码库一部分的示例包括 Cuttlefish 和 DB845c。无法避免对配置选项进行一些手动检查以优化片段,但内核源中的 scripts/diffconfig 对于比较 gki_defconfiggki_defconfig+device.fragment 的结果非常有用。

modprobe 将 - 和 _ 视为等效项是否有解决方法?

modprobe man page 包含以下描述:“modprobe 智能地从 Linux 内核添加或移除模块:请注意,为方便起见,模块名称中的 _ 和 - 没有区别(会自动执行下划线转换)。”GKI 团队坚持上游标准惯例,因此供应商工具或模块命名惯例必须考虑这种遵循。

如何为内部使用启用 debugfs?

有关启用 debugfs 的详情,请参阅侵入式下游调试功能

如何解决启用特定模块配置的 GKI 内核之间的 ABI 不匹配问题?

GKI 内核和模块配置之间的 ABI 不匹配表示隐式的模块配置依赖项,其中启用模块会导致将二进制配置构建到生成的内核映像中。请联系 Android 内核团队 (kernel-team@android.com) 以确定前进方向。确定符号列表后,请在 Issue Tracker 中创建一个错误,并上传对符号列表的更改。

我有一些符合 GKI 1.0 标准的设备在现场运行 5.4 内核,这些内核随 Android 11 和 12 一起发布。有哪些内核升级选项可用?在升级到 Android 12 和 13 时,如何测试这些设备?

请参阅兼容性矩阵,获取启动版本和升级版本支持的内核版本列表。以下是两个升级示例

示例 1:用户拥有一款随附 android11-5.4 内核 (GKI 1.0) 的 Android 11 设备,在升级到 Android 12 时可以选择以下任一选项

  • 升级到 android12-5.10 GKI 2.0 内核(强烈推荐)。

  • 保留 android11-5.4 内核。

  • 升级到 android12-5.4 内核。

示例 2:用户拥有一款随附 android12-5.4android12-5.10 内核的 Android 12 设备,在升级到 Android 13 时可以选择以下任一选项

  • 升级到 android13-5.10android13-5.15 GKI 2.0 内核(强烈推荐)。

  • 保留 android12-5.4 GKI 1.0 内核。

  • 保留 android12-5.10 GKI 2.0 内核。

特别是对于 Treble 合规性测试,我们建议您执行以下操作之一

  • 将合作伙伴内核替换为经过认证的 GKI 1.0 内核(android11-5.4android12-5.4)。

  • 搭载经过认证的 GKI 2.0 内核(android12-5.10android13-5.10android13-5.15)发货,具体取决于您的选择。

您可以从通用内核映像 (GKI) 版本下载 GKI 2.0 版本。