一般核心映像檔 (GKI) 不得包含必要的驅動程式支援
讓裝置能夠掛接分區。如何讓裝置掛接分區
以便繼續啟動,已強化第一階段 init
來載入
ramdisk 上的核心模組。ramdisk 會分割成一般
供應商 ramdisks供應商核心模組會儲存在供應商的 ramdisk 中。
可設定核心模組的載入順序。
模組位置
ramdisk 是第一階段 init,
的檔案系統,
A/B 和虛擬 A/B 裝置上的復原/快速啟動映像檔。這是
initramfs
包含兩個 cpio 封存檔,並串連在一起
開機載入器。第一個 cpio 封存檔案 (儲存為供應商 ramdisk)
中,其中包含以下元件:
- 第一階段
init
供應商核心模組,位於/lib/modules/
。 modprobe
設定檔,位於/lib/modules/
:modules.dep
、modules.softdep
、modules.alias
,modules.options
。modules.load
檔案,用於指定要載入哪些模組 以及順序/lib/modules/
。- A/B 和虛擬 A/B 裝置的供應商復原核心模組,位於
/lib/modules/
modules.load.recovery
,代表要載入的模組;以及 按照順序為 A/B 和虛擬 A/B 裝置/lib/modules
。
第二個 cpio 封存 (GKI 隨附)
做為 boot.img 的 ramdisk 使用,並套用於
第一個包含 first_stage_init
及其依附的程式庫。
第一階段 init 載入模組
第一階段 init
從讀取模組代理設定開始
ramdisk 中來自 /lib/modules/
的檔案。接著,系統會讀取
指定的模組組合 (位於 /lib/modules/modules.load
中)
復原,/lib/modules/modules.load.recovery
),並嘗試
並按照
先前載入的檔案您要求的訂單可能抵免
可滿足硬性或軟性依附元件
建構支援、第一階段初始
如要指定要複製到供應商 ramdisk cpio 的核心模組,請列出清單
這些圖片位於「BOARD_VENDOR_RAMDISK_KERNEL_MODULES
」中。建構作業開始執行
對這些模組執行 depmod
,並放入產生的模組化設定
該檔案位於供應商 ramdisk cpio 中
建構作業也會建立 modules.load
檔案,並儲存在
供應商 ramdisk cpio。根據預設,這個存放區包含
BOARD_VENDOR_RAMDISK_KERNEL_MODULES
。如要覆寫
將該檔案使用 BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD
,如
在這個例子中:
BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := \ device/vendor/mydevice-kernel/first.ko \ device/vendor/mydevice-kernel/second.ko \ device/vendor/mydevice-kernel/third.ko
建構支援,完整版 Android
與 Android 10 以下版本相同,
Android 平台複製了 BOARD_VENDOR_KERNEL_MODULES
這些元件會建構在 /vendor/lib/modules
的廠商分區中
平台建構作業會在這些模組上執行 depmod
,並複製
depmod
會將檔案輸出至供應商分區
或 HTTP/HTTPS 位置從 /vendor
載入核心模組的機制
與 Android 先前的版本一樣一切由您作主
載入這些模組的方式和時機。不過一般是使用
init.rc
指令碼。
萬用字元與整合式核心版本
將裝置核心版本與 Android 平台版本結合的供應商
使用上述 BOARD
巨集時,可能發生問題
指定要複製到裝置的核心模組。如果廠商希望避免
在裝置的平台建構檔案中列出核心模組,可以使用萬用字元
($(wildcard device/vendor/mydevice/*.ko
)。請注意,萬用字元並未
可在整合式核心版本中運作,因為當呼叫時,
巨集是在 makefile 中展開,但核心模組尚未建構,因此巨集
沒有內容。
為解決這個問題,供應商可能要求其核心版本建立 ZIP 檔案
這個封存檔,當中包含要複製到各個分區的核心模組。
在 BOARD_*_KERNEL_MODULES_ARCHIVE
中設定該 ZIP 封存檔的路徑
其中 *
是分區的名稱 (例如
BOARD_VENDOR_KERNEL_MODULES_ARCHIVE
)。Android 平台版本
將這個 ZIP 封存檔擷取至適當位置,然後執行 depmod
單元 。
核心模組 ZIP 封存檔應制定一個規則,確保平台 您可以視需要產生封存檔
搶球
在先前的 Android 版本中,復原所需的核心模組為
(在 BOARD_RECOVERY_KERNEL_MODULES
中指定的)。在 Android 12 中,
復原所需的核心模組仍
要透過這個巨集指定什麼不過,系統會將復原核心模組複製到
供應商 ramdisk cpio,而非一般 ramdisk cpio。預設為全部
已載入 BOARD_RECOVERY_KERNEL_MODULES
中列出的核心模組
就在第一階段 init
中如果您只想要其中一部分
請在要載入的模組中指定該子集的內容
BOARD_RECOVERY_KERNEL_MODULES_LOAD
。
相關說明文件
瞭解如何建立廠商啟動分區 (其中包含廠商) 本頁提及的 ramdisk),查看 靴子 分區。