通用内核映像 (GKI) 项目 |
您所在的位置:网站首页 › 安卓系统核心代码怎么看的到内存 › 通用内核映像 (GKI) 项目 |
产品内核(也称为设备内核或 OEM 内核)是指您的设备上搭载的内核。在 GKI 之前,产品内核衍生自一系列上游内核变更。图 1 显示了内核补充功能如何生成产品内核(OEM/设备内核): 图 1. GKI 之前的产品内核结构。 来自 kernel.org 的 Linux 长期支持 (LTS) 内核已使用 Android 专用补丁进行修改,进而生成了 Android 通用内核 (ACK)。 供应商修改了 ACK,以添加对系统芯片 (SoC) 的支持。供应商还可以添加性能或电源优化。生成的内核称为供应商内核。 最后,原始设备制造商 (OEM) 进一步修改了供应商内核,添加了必要的设备驱动程序和自定义项。生成的内核称为产品内核。所有这些修改都会导致内核代码中有多达 50% 是树外代码,而非来自上游 Linux 内核或 ACK。在 GKI 之前,几乎所有设备都具有自定义内核,而这导致了内核碎片化问题。 碎片化的代价内核碎片化会对 Android 社区产生若干负面影响。 安全更新需要耗费大量人力Android 安全公告 (ASB) 中引用的安全补丁必须向后移植到每个设备内核中。但是,由于存在内核碎片化问题,向正常使用的 Android 设备传播安全修复的代价非常之高。 很难合并长期支持的更新长期支持 (LTS) 版本包含安全修复和其他重大 bug 修复。事实证明,使用最新的 LTS 版本是提供安全修复的最有效方式。我们发现,ASB 报告的内核安全问题中有 90% 都已在保持最新状态的 Pixel 设备上得到修复。 不过,由于设备内核中所有的自定义修改,很难仅将 LTS 修复合并到设备内核中。 妨碍 Android 平台进行版本升级由于碎片化问题,很难向正常使用的设备添加需要更改内核的 Android 新功能。Android 框架代码必须假设支持的内核版本多达 5 个,并且没有针对新的平台版本进行任何内核更改(Android 10 支持内核版本 3.18、4.4、4.9、4.14 和 4.19;在某些情况下,这些版本自 2017 年 Android 8 发布以来还未添加新功能)。 很难将内核更改贡献回上游 Linux对内核进行完所有更改后,大多数旗舰设备附带的内核版本已经至少存在 18 个月了。例如,kernel.org 于 2017 年 11 月发布了 4.14 版内核,而首批使用 4.14 版内核的 Android 手机于 2019 年春季才发布。 上游内核发布与产品发布之间的这种长时间延迟导致 Android 社区很难将所需的功能和驱动程序馈送到上游内核中。 解决碎片化问题:通用内核映像通用内核映像 (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 专用代码或板级代码。如需查看 GKI 架构的映像,请参阅内核概览。 GKI 是一项复杂的更改,将从 Android 11 平台版本中的 v5.4 内核开始,分几个阶段逐步推出。 目前存在两个 GKI 阶段: GKI 1.0 是在 Android 11 中面向搭载 5.4 内核的设备推出的。GKI 1.0 适用于所有附带 5.4 内核的设备,乃至发布时搭载 Android 12 或 Android 13 的设备。 GKI 2.0 是在 Android 12 中面向搭载 5.10 内核的设备推出的,是附带 5.10 或更高版本内核的所有设备的新标准。 GKI 1.0在 GKI 1.0 中,发布时搭载内核版本 5.4 的设备必须通过 GKI 测试(Android 11 及更高版本的平台版本)。GKI 1.0 的目标包括: 使用 GKI 内核替换产品内核时,避免供应商测试套件 (VTS) 或兼容性测试套件 (CTS) 发生性能下降问题。 减少合作伙伴为了使 AOSP 通用内核保持最新状态而进行的工作。 对于升级到新 Android 版本和发布时搭载新 Android 版本的设备,在内核中加入核心 Android 变更。 不破坏 Android 用户空间。 将硬件专用组件作为可加载模块从核心内核中分离出来。 注意:对于 GKI 1.0,defconfig 文件不包含 GKI 模块。内核映像包含支持内核中框架的配置,即使这些配置可能已作为模块提供也是如此。如需查看 GKI 1.0 文档,请参阅 GKI 1.0 部分。 GKI 2.0在 GKI 2.0 中,发布时搭载内核版本 5.10 或更高版本的设备必须附带 GKI 内核(从 Android 12 开始)。已签名的启动映像现已可用,并通过 LTS 和重大 bug 修复定期对其进行更新。由于 KMI 的二进制文件稳定性保持不变,因此您无需更改供应商映像即可安装这些启动映像。GKI 2.0 的目标包括: 在使用 GKI 内核替换产品内核时,不会引入明显的性能或能效降低问题。 使合作伙伴无需供应商参与即可提供内核安全修复和 bug 修复。 降低更新设备主要内核版本(例如,从 v5.10 更新为 2021 LTS 内核)的成本。 通过按照清晰的升级过程更新内核版本,只为每个架构维护一个 GKI 内核二进制文件。 注意:在 GKI 2.0 中,defconfig 文件包含 GKI 模块,因为部分设备上不需要某些框架(因此这些框架应被视为可选的)。GKI 2.0 代表 Android 内核的最新状态。GKI 1.0 和旧版内核 ( |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |