Android 核心常見問題

本文件包含 Android 核心 (也稱為通用核心映像檔 (GKI) 核心) 的常見問題。如果您不熟悉 GKI 和 GKI 核心術語,請參閱「核心總覽」。

是否可以在穩定核心中變更核心模組介面 (KMI) 符號清單?

不會影響現有 KMI 的變更可新增至已凍結的核心。這些變更包括新的匯出函式和符號清單項目。詳情請參閱「管理符號清單」。

我可以變更穩定版核心中供應商模組使用的結構嗎?

在凍結的 KMI 中,KMI 介面結構無法變更。在 KMI 凍結前,這些結構體可以變更。

只要不破壞二進位檔或來源相容性,是否可以變更核心?

您可以按照「Android 專屬修補程式」一節的說明,進行不會影響 KMI 的變更。

GKI 如何處理核心設定?

如要進一步瞭解核心設定,請參閱 gki_defconfig 的變更

如何處理上游錯誤修正,以便覆寫現有的 GKI 模組?

如果您要根據 Android 通用核心 (ACK) 中的驅動程式來建立供應商模組,您必須自行確保將上游和 ACK 的錯誤修正傳播至您的模組。一般來說,建議您直接使用 GKI 核心和 GKI 模組,不必修改,這樣 Google 就能持續提供這些更新。

是否有 GKI 專屬測試?

可進行供應商測試套件 (VTS) 測試,驗證是否已安裝經認證的 GKI 版本,並強制執行個別版本的 GKI 規定。舉例來說,系統會針對啟動標頭 v3 進行 Android 12 VTS 測試,並驗證搭載 5.10 核心的裝置中是否存在必要的分區。

如何為裝置版本建立專案 defconfig 片段檔案?

許多符合 GKI 規範的裝置會使用設定片段,說明建構供應商模組所需的設定選項 (除了 gki_defconfig 之外)。ACK 程式碼集的一部分範例包括 Cuttlefish 和 DB845c。 您無法避免手動檢查設定選項,以便對片段進行最佳化,但來自核心來源的 scripts/diffconfig 可用於比較 gki_defconfiggki_defconfig+device.fragment 的結果。

有沒有解決方法,讓 modprobe 將「-」和「_」視為等價?

modprobe 說明文件包含以下說明:「modprobe 會在 Linux 核心中,聰明地新增或移除模組:請注意,為了方便起見,在模組名稱中,_ 和 - 沒有差異 (會自動執行底線轉換)。」GKI 團隊遵循標準的上游慣例,因此供應商工具或模組命名慣例必須考量這項遵循情形。

如何啟用偵錯功能供內部使用?

如要進一步瞭解如何啟用 debugfs,請參閱「侵入式下游偵錯功能」。

如何解決已啟用特定模組設定的 GKI 核心之間不相符的 ABI?

GKI 核心和模組設定之間的 ABI 不相符,代表隱含的模組設定依附元件,如果啟用模組,就會在產生的核心映像檔中建構二進位設定。請與 Android 核心團隊 (kernel-team@android.com) 聯絡,以便決定後續處理方式。確定符號清單後,請在 Issue Tracker 中建立錯誤,並將變更上傳到符號清單。

在搭載 Android 11 和 12 啟動的 5.4 核心環境中,我擁有支援 GKI 1.0 的裝置。有哪些可用的核心升級選項?如何在升級至 Android 12 和 13 時測試這些裝置?

如需發布和升級版本支援的核心版本清單,請參閱相容性矩陣。以下是兩個升級範例:

範例 1:如果使用者的裝置使用 Android 11 啟動,且搭載 android11-5.4 核心 (GKI 1.0),就能在升級至 Android 12 時選擇以下任一選項:

  • 升級至 android12-5.10 GKI 2.0 核心 (強烈建議)。

  • 保留 android11-5.4 核心。

  • 升級至 android12-5.4 核心。

範例 2:如果使用者擁有搭載 Android 12 的裝置,且搭載 android12-5.4android12-5.10 核心,則可在升級至 Android 13 時選擇下列任一選項:

  • 升級至 android13-5.10android13-5.15 GKI 2.0 核心 (強烈建議)。

  • 保留 android12-5.4 GKI 1.0 核心。

  • 保留 android12-5.10 GKI 2.0 核心。

針對 Treble 法規遵循測試,建議您執行下列其中一項操作:

  • 將合作夥伴核心代碼替換為已認證的 GKI 1.0 核心代碼 (android11-5.4android12-5.4)。

  • 視您的選擇而定,可搭配認證的 GKI 2.0 核心 (android12-5.10android13-5.10android13-5.15) 出貨。

您可以從通用核心映像檔 (GKI) 發布版本下載 GKI 2.0 版本。