Android 11 memperkenalkan konsep Generic Kernel Image dan partisi boot vendor. Partisi boot vendor menyimpan modul kernel yang kompatibel dengan GKI, dan dimuat oleh init tahap pertama. Modul Kernel sebelum rilis Android 11 juga disimpan di partisi vendor dan ODM, dan dimuat oleh proses vendor.
Untuk Android 11 atau lebih tinggi, kernel dan semua modul kernel dapat diperbarui secara independen dari partisi lainnya. Untuk mengaktifkan pembaruan untuk modul kernel yang disimpan di partisi vendor (tanpa pembaruan partisi vendor), pindahkan semua modul partisi vendor ke partisi baru yang disebut Vendor DLKM (modul kernel yang dapat dimuat secara dinamis). Anda kemudian dapat memperbarui partisi ini secara mandiri. Demikian pula, Anda dapat memindahkan semua modul kernel yang disimpan di partisi ODM ke partisi baru yang disebut ODM DLKM . Partisi ini juga dapat diperbarui secara independen.
Lokasi partisi
partisi vendor_dlkm
dan odm_dlkm
terletak di partisi super sebagai partisi dinamis lainnya.
konten vendor_dlkm di /vendor/lib/modules
- Modul kernel vendor
- file konfigurasi
modprobe
- File
modules.load
odm_dlkm isi di /odm/lib/modules
- Modul kernel ODM
- file konfigurasi
modprobe
- File
modules.load
Lihat Dukungan Modul Kernel untuk detail lebih lanjut tentang file konfigurasi modul kernel.
Membangun dukungan
Membangun vendor_dlkm
dan odm_dlkm
adalah proses yang mirip dengan membangun partisi dinamis lainnya.
contoh pembuatan vendor_dlkm
Bangun vendor_dlkm
seperti yang ditunjukkan pada contoh di bawah ini.
BoardConfig.mk
BOARD_USES_VENDOR_DLKMIMAGE := true
BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE := ext4
TARGET_COPY_OUT_VENDOR_DLKM := vendor_dlkm
BOARD_<GROUP_NAME>_PARTITION_LIST += vendor_dlkm
Ganti <GROUP_NAME>
dengan nama grup pembaruan yang sesuai. Grup pembaruan harus menjadi grup tempat partisi vendor berada.
Untuk perangkat A/B dan Virtual A/B, device.mk
AB_OTA_PARTITIONS += vendor_dlkm
fstab
Tambahkan entri berikut untuk vendor_dlkm
ke fstab. Ubah bendera sesuai perangkat. Gunakan CL Tambahkan vendor_dlkm
ke CF sebagai contoh.
vendor_dlkm /vendor_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb
contoh pembuatan odm_dlkm
Bangun odm_dlkm
seperti yang ditunjukkan pada contoh di bawah ini.
BoardConfig.mk
BOARD_USES_ODM_DLKIMAGE := true
BOARD_ODM_DLKIMAGE_FILE_SYSTEM_TYPE := ext4
TARGET_COPY_OUT_ODM_DLKM := odm_dlkm
BOARD_<group_name>_PARTITION_LIST += odm_dlkm
Untuk perangkat A/B dan Virtual A/B, device.mk
AB_OTA_PARTITIONS += odm_dlkm
fstab
Tambahkan entri berikut untuk odm_dlkm
ke fstab. Ubah bendera sesuai perangkat. Gunakan CL Tambahkan odm_dlkm
ke CF sebagai contoh.
odm_dlkm /odm_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb
Menyalin modul kernel ke dalam partisi
Untuk memilih modul kernel yang ingin Anda salin ke dalam partisi vendor_dlkm
, daftarkan modul tersebut di BOARD_VENDOR_KERNEL_MODULES
.
Jika Anda ingin mengganti isi modules.load
, Anda dapat menentukannya di BOARD_VENDOR_KERNEL_MODULES_LOAD
.
Pada waktu pembuatan, modul yang terdaftar di BOARD_VENDOR_KERNEL_MODULES
dipasang di $ANDROID_PRODUCT_OUT/vendor_dlkm/lib/modules
. Tautan simbolis dibuat di /vendor/lib/modules
yang mengarah ke /vendor_dlkm/lib/modules
.
Demikian pula, untuk memilih modul kernel yang ingin Anda salin ke dalam partisi odm_dlkm
, daftarkan di BOARD_ODM_KERNEL_MODULES
. Platform build menjalankan depmod
pada modul dan menyalin file keluaran depmod
ke dalam gambar. Build membuat file modules.load
dan menyimpannya dalam gambar. File ini berisi semua modul yang terdaftar di BOARD_ODM_KERNEL_MODULES
.
Jika Anda ingin mengganti isi modules.load
, Anda dapat menentukannya di BOARD_ODM_KERNEL_MODULES_LOAD
.
Pada waktu pembuatan, modul yang terdaftar di BOARD_ODM_KERNEL_MODULES
akan dipasang di $ANDROID_PRODUCT_OUT/odm_dlkm/lib/modules
. Tautan simbolis akan dibuat di /odm/lib/modules
yang mengarah ke /odm_dlkm/lib/modules
.
Selalu gunakan /vendor/lib/modules
dan /odm/lib/modules
untuk modul kernel vendor dan ODM.
Jangan pernah menggunakan /vendor_dlkm/lib/modules. Perangkat tanpa partisi vendor_dlkm
menginstal BOARD_VENDOR_KERNEL_MODULES
ke /vendor/lib/modules
secara langsung. Ini bermasalah karena /vendor_dlkm/lib/modules
tidak ada.
Jangan pernah menggunakan /odm_dlkm/lib/modules. Perangkat tanpa partisi odm_dlkm
menginstal BOARD_ODM_KERNEL_MODULES
ke /odm/lib/modules
secara langsung. Ini bermasalah karena /odm_dlkm/lib/modules
tidak ada.
Pemasangan partisi dan pemuatan modul
Selama first_stage_init
, partisi vendor_dlkm
dan odm_dlkm
masing-masing dipasang di partisi /vendor_dlkm
dan /odm_dlkm
. Ketika ini terjadi, symlink di /vendor/lib/modules
dan /odm/lib/modules
menjadi tersedia.
Proses vendor (seperti skrip '.rc') kemudian dapat memuat modul kernel berdasarkan urutan yang ditentukan dalam modules.load
. Proses vendor juga dapat memuat modul di lain waktu, jika perlu.
Dokumentasi terkait
Untuk dokumentasi mengenai pembuatan partisi boot vendor (yang berisi RAMDisk vendor), lihat Dukungan Modul Kernel .