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 要求。舉例來說,Android 12 有針對開機標頭 v3 的 VTS 測試,可驗證執行 5.10 核心的裝置是否有必要的分區。

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

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

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

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

如何啟用 debugfs 供內部使用?

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

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

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

我有在實地測試的 GKI 1.0 相容裝置,這些裝置搭載的 5.4 版核心是與 Android 11 和 12 一同推出。有哪些核心升級選項可用?升級至 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) 1.0 發布版本版本」下載 GKI 1.0 版本。

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