通用内核映像 (GKI) 发布过程

本文档介绍了适用于 Android 12 的 GKI v5.10 如何发布,包括每周、每月和带外紧急发布。本文档的目的是为 OEM 提供有关在何处获取 GKI 以及带外紧急修复过程的指南。 OEM 还可以使用GKI 开发指南详细了解如何与 Android 内核团队合作,为他们的产品优化 GKI 内核。

GKI 发布节奏

从 2021 年 7 月 14 日开始,GKI 在 KMI Freeze 后每月发布一次。下图说明了发布计划的节奏。

GKI 每月认证版本入住截止日期GKI 预加载就绪日期标签确认的?
七月
(KMI 冻结)
2021 年 7 月 14 日七月底安卓 12
AOSP 认证构建 - 7 月
是的
八月2021 年 8 月 16 日八月底安卓 12
AOSP 认证构建 - 8 月
是的
九月2021 年 9 月 17 日九月底安卓 12
AOSP 认证构建 - 9 月
是的
十月2021 年 10 月 15 日2021 年 10 月 29 日安卓 12
AOSP 认证构建 - 10 月
是的
十一月2021 年 11 月 12 日2021 年 11 月 30 日安卓 12
AOSP 认证构建 - 11 月
是的
十二月2021 年 12 月 10 日2021 年 12 月 22 日安卓 12
AOSP 认证构建 - 12 月
是的
一月2022 年 1 月 14 日2022 年 1 月 31 日安卓 12
AOSP 认证构建 - 1 月
是的
二月2022 年 2 月 14 日2022 年 2 月 28 日安卓 12
AOSP 认证构建 - 2 月
是的
行进2022 年 3 月 16 日2022 年 3 月 31 日安卓 12
AOSP 认证构建 - 3 月
是的
四月2022 年 4 月 15 日2022 年 4 月 29 日安卓 12
AOSP 认证构建 - 4 月
是的
可能2022 年 5 月 16 日2022 年 5 月 31 日安卓 12
AOSP 认证构建 - 5 月
是的
六月2022 年 6 月 15 日2022 年 6 月 30 日安卓 12
AOSP 认证构建 - 六月
是的
七月2022 年 7 月 15 日2022 年 7 月 29 日安卓 12
AOSP 认证构建 - 7 月
是的
八月2022 年 8 月 15 日2022 年 8 月 31 日安卓 12
AOSP 认证构建 - 8 月
是的
九月2022 年 9 月 16 日2022 年 9 月 30 日安卓 12
AOSP 认证构建 - 9 月
是的
十月2022 年 10 月 14 日2022 年 10 月 31 日安卓 12
AOSP 认证构建 - 10 月
是的
十一月2022 年 11 月 14 日2022 年 11 月 30 日安卓 12
AOSP 认证构建 - 11 月
是的
十二月2022 年 12 月 9 日2022 年 12 月 21 日安卓 12
AOSP 认证构建 - 12 月
是的

适用于 OEM 的 GKI 构建有效性

OEM 可以使用最近发布的 Android GKI。只要符合 Android 安全公告 (ASB) 中的 LTS 要求,OEM 就可以使用 GKI 认证的版本启动。

经认证的构建重装政策

  • 在不再符合 ASB 中的 LTS 要求后,GKI 认证的二进制文件不再支持重新旋转。例如, android12-5.10-2021-11分支 (5.10.66) 在 2022 年 11 月之后不支持重新旋转,因为android12-5.10-2021-11分支 (5.10.66) 不符合 LTS 要求ASB-2022-11。
  • 有关详细信息,请参阅紧急重新旋转过程

每周开发发布

版本使用墨鱼进行测试,以确保它们通过最低质量标准

随着更改的合并,GKI 二进制文件可用于ci.android.com的自助服务。每周构建不会被认证,但可以用作开发和测试的基准。每周构建不能用于最终用户的生产设备构建。

每月认证发布

GKI 每月版本包含经过测试的boot.img ,其中包含 Google 插入的证书,以证明二进制文件是从已知的源代码基线构建的。

每个月,都会在签入截止日期(通常是该月的第二个每周构建)之后选择一个 GKI 月度候选发布版本(未经认证)。选择每月发布候选后,该月的发布将不会接受新的更改。在关闭窗口期间,只能修复导致测试失败的错误。候选版本经过质量保证——如GKI 资格部分所述——以确保通过参考设备和墨鱼的 GSI+GKI 构建的合规性测试。

GKI 发布节奏时间表图 1. GKI 发布时间表

紧急旋转过程

紧急旋转过程图 2.紧急重启流程

OEM 可能需要为阻止该问题的技术批准 (TA) 重新设计内核。每月认证的发布版本支持 Respins,并且在美国时区的预期标准解决时间 (ESRT) 为两个工作日。

ESRT 定义为交付包含修复程序的经过认证的 GKI 二进制文件所需的时间,前提是它已获得 GKI 团队的批准并由受影响的 OEM 审核。 ESRT 仅为估计值,不应被解释为保证。

需要重新调整 TA 阻塞修复的 OEM 需要执行以下操作:

  1. 问题跟踪器中提交错误并立即联系您的 Google 联系人。
    • 如果您已经有修复程序,则该错误应指向 AOSP 中提交的补丁程序,以便 Google 可以对其进行审核。如果提交补丁不可行,请将补丁作为文本文件附加到问题跟踪器中的错误。
    • 如果您还没有修复,则该错误必须包含尽可能多的信息,包括内核版本号和日志,以便 Google 可以帮助调试该问题。
  2. 就修复达成一致后,Google GKI 团队代码审查 (CR+2) 更改并测试回归。测试开始 ESRT 倒计时,并在二进制文件发布到ci.android.com时结束。

GKI资质

GKI 构建的类型质量执法笔记
每周墨鱼测试
  • 引导
  • VTS 的子集
  • CTS 的子集
  • 未认证。仅用于测试和
    设备调出。
  • 不能用于启动设备。
每月(已认证)墨鱼测试
  • 引导
  • VTS
  • 中旅
参考硬件测试
  • 引导
  • VTS
  • 中旅
    旋转(认证)墨鱼测试
    • 引导
    • VTS
    • CTS 的子集
    参考设备测试
    • 引导
    • VTS
    • 建立在 GKI 认证的构建之上。
    • 建造合格后通过认证。

    从哪里获得构建工件

    所有版本的工件都可以从ci.android.com获得。

    您可以在Android 持续集成仪表板上找到更多关于 CI 的信息,包括测试结果。

    常见问题

    是否可以基于已发布的 GKI 构建新的 GKI 二进制文件?

    是的,这被称为重新旋转。只要发布的 GKI 构建(请求重新旋转)符合 Android 安全公告 (ASB) 中的 LTS 要求,就支持重新旋转过程。

    是否可以复制 GKI 二进制文件?

    是的,参考下面的例子。

    GKI 2.0
    5.10 kernel prebuilts from build 7364300
    https://ci.android.com/builds/submitted/7364300/kernel_aarch64/latest
    

    要重现该示例,请下载manifest_$id.xml并执行以下命令:

    repo init -u https://android.googlesource.com/kernel/manifest
    mv manifest_7364300.xml .repo/manifests
    repo init -m manifest_7364300.xml --depth=1
    repo sync
    # build the GKI images
    # You may want to use LTO=thin to build faster for development
    BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh
    # (optional) build virtual platform modules
    BUILD_CONFIG=common-modules/virtual-device/build.config.virtual_device.aarch64 build/build.sh
    

    您可以从out/.../dist检索您的 GKI 工件副本。

    GKI 二进制文件(包括紧急自旋补丁)是否构建在

    最新的代码库?

    不可以。Respins 仅包含在已选择的每月认证内核之上的补丁程序。这些重新发布包含 OEM 使用相应的基本月度版本在任何给定时间报告的所有启动阻止错误修复。请参阅以下示例,了解这种情况是如何发生的。

    • OEM1 和 OEM2 决定从 2021 年 11 月开始使用 GKI 二进制版本。
    • OEM1 和 OEM2 发现需要补丁支持的问题。这些补丁可能不同,也可能相同。
    • 在 2021 年 11 月二进制文件之上的重新旋转具有由 OEM1 和 OEM2 在重新旋转窗口期间报告的启动阻止修复,但仅此而已。
    • 第二个项目符号中提到的问题也包含在随后的 GKI 月度版本中。

    10 月的 repin 包含所有 OEM 提交的补丁,但其他 OEM 补丁

    影响我们,因为它们没有经过我们产品的专门测试。是否可以只包含我们的补丁?

    这是不可能的。 “每个 OEM”重新旋转路径当前不可扩展。取而代之的是,GKI 团队仔细检查了重新构建构建的每一个更改,并在创建新构建之前使用所有可用硬件测试这些更改。如果 GKI 团队发现问题特定于 OEM/设备/型号,则 GKI 团队可以确保更改添加的代码仅在受影响的设备/型号/SKU 上执行。

    统一重新旋转的主要好处是,使用相同版本库的每台设备都可以相互受益,特别是如果他们发现的错误是通用的并且适用于所有用户。在运营商测试中发现的核心内核错误就是这个概念的一个具体例子。

    在某些情况下,Google 会提供有关 OEM 补丁和问题场景的具体信息,以便 OEM 可以评估在其产品中实施补丁的影响和风险?

    在了解问题并收集所有详细信息之前,Google 永远不会对重新构建版本添加更改。这可以在更改日志(提交消息)中看到。谷歌没有透露它影响的具体设备,但 OEM 总能在更新日志中找到问题描述和解决方案。