Qcom GKI
https://source.android.google.cn
1. 什么是GKI
通用内核映像 (GKI), 产品内核(也称为设备内核或 OEM 内核)是指您的设备上搭载的内核。在 GKI 之前,产品内核衍生自一系列上游内核变更。下图显示了内核补充功能如何生成产品内核(OEM/设备内核):
①就是内核发布的版本
②在谷歌发布中会取入对应的版本,并基于谷歌添加自己的修改后发布
③就是可以理解为一些厂商,比如qcom,qcom基于谷歌的安卓按照自己的平台添加自己的东西进行定制化
④就是制造商,比如一些车厂或手机购买了qcom平台的支持,再加入自己的定制内容
- 来自 kernel.org 的 Linux 长期支持 (LTS) 内核已使用 Android 专用补丁进行修改,进而生成了 Android 通用内核 (ACK)。
- 供应商修改了 ACK,以添加对系统芯片 (SoC) 的支持。供应商还可以添加性能或电源优化。生成的内核称为供应商内核。
- 最后,原始设备制造商 (OEM) 进一步修改了供应商内核,添加了必要的设备驱动程序和自定义项。生成的内核称为产品内核。
所有这些修改都会导致内核代码中有多达 50% 是树外代码,而非来自上游 Linux 内核或 ACK。在 GKI 之前,几乎所有设备都具有自定义内核,而这导致了内核碎片化问题。
通用内核映像 (GKI) 项目通过统一核心内核并将 SoC 和板级支持从核心内核移至可加载的供应商模块中,解决了内核碎片化问题。GKI 还为供应商模块提供稳定的内核模块接口 (KMI),因此模块和内核可以独立进行更新。GKI 内核的一些特性包括:
- GKI 内核基于 ACK 源代码构建而成。
- GKI 内核是每个架构和每个 LTS 版本的单内核二进制文件以及关联的可加载模块(目前只有适用于
android11-5.4
和android12-5.4
的 arm64)。 - GKI 内核已经过关联 ACK 支持的所有 Android 平台版本的测试。在 GKI 内核版本的生命周期内不会发生功能废弃。
- GKI 内核为给定 LTS 中的驱动程序提供了稳定版 KMI。
- GKI 内核不包含 SoC 专用代码或板级代码。