Android 内核基于上游 Linux 长期支持 (LTS) 内核。在 Google,LTS 内核与 Android 专用补丁相结合,形成了所谓的Android 通用内核 (ACK)。
较新的 ACK(版本 5.4 及更高版本)也称为 GKI 内核。GKI 内核支持将与硬件无关的通用核心内核代码和GKI 模块与特定于硬件的供应商模块分离。
GKI 内核与包含片上系统 (SoC) 和主板专用代码的特定于硬件的供应商模块进行交互。GKI 内核与供应商模块之间的交互由内核模块接口 (KMI) 启用,该接口包含符号列表,用于识别供应商模块所需的功能和全局数据。图 1 显示了 GKI 内核和供应商模块架构

内核词汇表
本部分包含内核文档中使用的术语。
内核类型
- Android 通用内核 (ACK)
- 一种内核,它位于 LTS 内核的下游,并包含 Android 社区感兴趣但尚未合并到 Linux 主线或长期支持 (LTS) 内核中的补丁。较新的 ACK(版本 5.4 及更高版本)也称为 GKI 内核,因为它们支持分离与硬件无关的通用内核代码和与硬件无关的 GKI 模块。
- Android 开放源代码项目 (AOSP) 内核
- 请参阅Android 通用内核。
- 功能内核
- 一种内核,平台版本功能保证在此内核中实现。例如,在 Android 12 中,两个功能内核分别是 android12-5.4 和 android12-5.10。Android 12 功能无法向后移植到 4.19 内核;功能集类似于搭载 Android 11 上的 4.19 并升级到 Android 12 的设备。
- 通用核心内核
- GKI 内核中所有设备通用的部分。
- 通用内核镜像 (GKI) 内核
- 任何较新的(5.4 及更高版本)ACK 内核(目前仅限 aarch64)。此内核包含两个部分:核心 GKI 内核(包含所有设备通用的代码)和 Google 开发的 GKI 模块(可在适用的设备上动态加载)。
- 内核模块接口 (KMI) 内核
- 请参阅GKI 内核。
- 启动内核
- 一种内核,对于给定的 Android 平台版本,该内核可用于启动设备。例如,在 Android 12 中,有效的启动内核为 4.19、5.4 和 5.10。
- 长期支持 (LTS) 内核
- 一种支持 2 到 6 年的 Linux 内核。LTS 内核每年发布一次,是 Google 每个 ACK 的基础。
分支类型
- ACK KMI 内核分支
- 用于构建 GKI 内核的分支。例如,android12-5.10 和 android13-5.15。
- Android-mainline
- Android 功能的主要开发分支。当上游声明新的 LTS 内核时,相应的新 GKI 内核将从 android-mainline 分支出来。
- Linux mainline
- 上游 Linux 内核(包括 LTS 内核)的主要开发分支。
其他术语
- 已认证的启动镜像
- 以二进制形式 (
boot.img
) 交付并刷写到设备上的内核。此镜像已获得认证,因为它包含嵌入式证书,以便 Google 可以验证设备出厂时是否搭载了经过 Google 认证的内核。 - 动态可加载内核模块 (DLKM)
- 一种模块,可以在设备启动期间根据设备的需求动态加载。GKI 模块和供应商模块均为 DLKM 类型。DLKM 以
.ko
形式发布,可以是驱动程序,也可以提供其他内核功能。 - GKI 项目
- Google 项目,旨在通过将通用核心内核功能与供应商特定的 SoC 和主板支持分离到可加载模块中来解决内核碎片化问题。
- 通用内核镜像 (GKI)
- 由 Google 认证的启动镜像,其中包含从 ACK 源代码树构建的 GKI 内核,并且适合刷写到 Android 设备的启动分区。
- KMI
- 介于 GKI 内核和供应商模块之间的接口,允许供应商模块独立于 GKI 内核进行更新。此接口包含内核函数和全局数据,这些函数和全局数据已被识别为使用按合作伙伴符号列表的供应商/OEM 依赖项。
- GKI 模块
- 由 Google 构建的内核模块,可在适用的设备上动态加载。这些模块是作为 GKI 内核的工件构建的,并与 GKI 一起作为
system_dlkm_staging_archive.tar.gz
归档文件交付。GKI 模块由 Google 使用内核构建时密钥对进行签名,并且仅与构建它们的 GKI 内核兼容。 - 供应商模块
- 由合作伙伴开发的特定于硬件的模块,其中包含 SoC 和设备专用功能。供应商模块是一种动态可加载内核模块。
后续步骤?
- 如果您不熟悉 Android 内核开发,不妨先阅读以下内容
- 长期稳定内核 - 上游 LTS 内核(为 ACK 提供基础)的背景信息。
- Android 通用内核 - ACK 的背景信息。
- 如果您不熟悉 GKI 内核开发,请先阅读GKI 开发。