核心總覽

Android 核心是以上游的 Linux 長期支援 (LTS) 核心為基礎。在 Google,LTS 核心會與 Android 專屬修補程式合併,形成 Android Common Kernels (ACK)

ACK 是從 kernel/common 存放區建構而來。這個存放區是上游 Linux 核心的超集,包含額外的 Android 專屬修補程式。

ACK 5.10 以上版本也稱為 *通用核心映像檔 (GKI) 核心。GKI 核心支援將與硬體無關的通用核心程式碼和 GKI 模組,與硬體專屬的供應商模組分開。

核心模組介面 (KMI) 包含符號清單,可識別供應商模組所需函式和全域資料,並啟用 GKI 核心與供應商模組之間的互動。圖 1 顯示 GKI 核心和供應商模組架構:

GKI 核心和供應商模組架構。

圖 1. GKI 核心和供應商模組架構。

核心詞彙

以下是核心說明文件中使用的字詞。

核心類型

Android Common Kernel (ACK)
LTS 核心的下游核心,包含對 Android 社群而言重要的修補程式。這些修補程式尚未合併至 Linux 主線或長期 GKI 核心。

版本 5.10 以上的核心也稱為通用核心映像檔 (GKI) 核心。

Android 開放原始碼計畫 (AOSP) 核心
請參閱「Android Common Kernel」。

Android 12 功能無法向後移植到 4.19 核心;功能集與搭載 Android 11 的裝置類似,升級至 Android 12 後會使用 4.19 核心。

通用核心映像檔 (GKI) 核心

任何 5.10 以上的 ACK 核心(僅限 aarch64)。GKI 核心包含下列兩個部分:

  • 一般核心 - GKI 核心中所有裝置通用的部分。

  • GKI 模組 - Google 建構的核心模組,可在適用的裝置上動態載入。這些模組會建構為 GKI 核心的構件,並與 GKI 一併以 system_dlkm_staging_archive.tar.gz 封存檔的形式提供。GKI 模組是由 Google 使用核心建構時間金鑰組簽署,且僅與建構時使用的 GKI 核心相容。

核心模組介面 (KMI) 核心

請參閱 GKI 核心

長期支援 (LTS) 核心

支援 2 到 6 年的 Linux 核心。LTS 核心每年發布一次,是 Google 各個 Android Common Kernel 的基礎。

分支類型

ACK KMI 核心分支
建構 GKI 核心的分支。分支名稱對應至核心版本,例如 android15-6.6
Android-mainline
Android 功能的主要開發分支。上游聲明新的 LTS 核心時,系統會從 android-mainline 分支建立對應的新 GKI 核心

Linux 主線 :上游 Linux 核心的主要開發分支,包括 LTS 核心。

其他術語

認證開機映像檔
以二進位形式 (boot.img) 傳送核心,並更新到裝置上。 這個映像檔內含嵌入式憑證,因此視為已通過認證,Google 可以藉此驗證裝置出貨時搭載的內核是否通過 Google 認證。
動態可載入核心模組 (DLKM)
這個模組可在裝置啟動期間動態載入,視裝置需求而定。GKI 和供應商模組都屬於 DLKM。DLKM 會以 .ko 形式發布,可以是驅動程式,也可以提供其他核心功能。
GKI 專案
:Google 專案,可將常見的核心核心功能與供應商專屬的 SoC 和板卡支援功能分開,並載入模組,解決核心片段化問題。

通用核心映像檔 (GKI):由 Google 認證的開機映像檔,內含從 ACK 來源樹狀結構建構的 GKI 核心,適合重新整理至 Android 裝置的開機分割區。

核心模組介面 (KMI)
GKI 核心與供應商模組之間的介面,可讓供應商模組獨立於 GKI 核心更新。這個介面包含核心函式和全域資料,這些函式和資料已使用合作夥伴符號清單,識別為供應商/原始設備製造商 (OEM) 依附元件。
供應商模組
合作夥伴開發的硬體專屬模組,內含 SoC 和裝置專屬功能。供應商模組是可動態載入的核心模組類型。

後續步驟

如果您是 Android 核心開發新手,請先閱讀下列內容:

如果您是 GKI 核心開發新手,請先閱讀「GKI 開發」。