通用內核映像 (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 總能在更新日誌中找到問題描述和解決方案。