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 核心和供應商模組架構:
圖 1. 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 核心開發新手,請先閱讀下列內容:
- 長期穩定核心 - 上游 LTS 核心的背景資訊,這些核心會饋送至 ACK。
- Android 常見核心 - ACK 背景資訊。
如果您是 GKI 核心開發新手,請先閱讀「GKI 開發」。