內核概述

Android 內核基於上游Linux 長期支持 (LTS) 內核,位於 .在 Google,LTS 內核與特定於 Android 的補丁相結合,形成所謂的Android 通用內核 (ACK)

較新的 ACK(5.4 及更高版本)也稱為GKI 內核,因為它們支持與硬件無關的通用核心內核代碼和與硬件無關的GKI 模塊的分離。 GKI 內核與包含片上系統 (SoC) 和板特定代碼的硬件特定供應商模塊進行交互。 GKI 內核和供應商模塊之間的交互由內核模塊接口 (KMI)啟用,該接口由標識供應商模塊所需的功能和全局數據的符號列表組成。圖 1 顯示了 GKI 內核和供應商模塊架構: GKI 內核和供應商模塊架構

圖 1. GKI 內核和供應商模塊架構

內核詞彙表

本節包含整個內核文檔中使用的術語。

內核類型

Android 通用內核 (ACK)
LTS 內核下游的內核,包括尚未合併到 Linux 主線或長期支持 (LTS) 內核中的 Android 社​​區感興趣的補丁。較新的 ACK(5.4 及更高版本)也稱為 GKI 內核,因為它們支持硬件無關的通用內核代碼和硬件無關的 GKI 模塊的分離。
Android 開源項目 (AOSP) 內核
請參閱Android 通用內核。
功能內核
保證實現平台發布功能的內核。例如,在 Android 12 中,兩個功能內核分別是 android12-5.4 和 android12-5.10。 Android 12 功能無法向後移植到 4.19 內核;該功能集類似於在 R 上啟動 4.19 併升級到 S 的設備)。
通用核心內核
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 功能的主要開發分支。當上游聲明一個新的LTS 內核時,相應的新GKI 內核將從 android-mainline 分支。
Linux 主線
上游 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映像提供。 GKI 內核模塊由 Google 使用內核構建時間密鑰對進行簽名,並且僅與構建它們的通用核心內核兼容。 GKI 內核模塊是一種多爾康
.
供應商模塊
由合作夥伴開發的特定於硬件的模塊,包含 SoC 和特定於設備的功能。供應商模塊是一種可動態加載的內核模塊。

下一步是什麼?