核心概述

Android 核心基於上游Linux 長期支援 (LTS) 核心。在 Google,LTS 核心與 Android 特定補丁結合,形成所謂的Android 通用核心 (ACK)

較新的 ACK(版本 5.4 及更高版本)也稱為GKI 核心。 GKI 核心支援將與硬體無關的通用核心核心程式碼和GKI 模組與特定於硬體的供應商模組分開。

GKI 核心與包含系統單晶片 (SoC) 和主機板特定程式碼的特定硬體的供應商模組進行互動。 GKI 核心和供應商模組之間的交互由內核模組介面 (KMI)實現,該介面由標識供應商模組所需的功能和全域資料的符號列表組成。圖 1 顯示了 GKI 核心和供應商模組架構:

GKI架構
圖 1. GKI 架構

內核術語表

本節包含整個核心文件中使用的術語。

內核類型

Android 通用核心 (ACK)
LTS 核心下游的內核,包含 Android 社​​群感興趣的補丁,但尚未合併到 Linux 主線或長期支援 (LTS) 核心。較新的 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 主線
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 裝置的啟動分割區。
科米
GKI 核心和供應商模組之間的接口,允許供應商模組獨立於 GKI 核心進行更新。此介面由核心函數和全域資料組成,這些函數和全域資料已使用每個合作夥伴的符號列表識別為供應商/OEM 依賴項。
GKI模組
由 Google 建構的核心模組,可以在適用的情況下動態載入到裝置上。這些模組作為GKI 內核的工件構建,並作為system_dlkm_staging_archive.tar.gz存檔與 GKI 一起交付。 GKI 模組由 Google 使用核心建置時金鑰對進行簽名,並且僅與建置它們的 GKI 核心相容。
供應商模組
由合作夥伴開發的特定硬體的模組,包含 SoC 和特定於設備的功能。供應商模組是一種可動態載入的核心模組。

下一步是什麼?