Android 11 memperkenalkan konsep Kernel Generik Image dan partisi booting vendor. Partisi {i>boot<i} vendor menyimpan {i>kernel<i} modul yang kompatibel dengan GKI, dan dimuat oleh init tahap pertama. Modul Kernel sebelum rilis Android 11 juga disimpan di vendor dan partisi ODM, dan dimuat oleh proses vendor.
Untuk Android 11 atau yang lebih tinggi, kernel dan semua kernel modul dapat diperbarui secara terpisah dari partisi lainnya. Untuk mengaktifkan update untuk modul kernel yang disimpan dalam partisi vendor (tanpa vendor update partisi), pindahkan semua modul partisi vendor ke partisi baru yang disebut DLKM Vendor (modul kernel yang dapat dimuat secara dinamis). Kemudian, Anda dapat memperbaruinya partisi secara independen. Demikian pula, Anda dapat memindahkan semua modul {i>kernel<i} yang disimpan di partisi ODM ke partisi baru yang disebut ODM DLKM. Partisi ini 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
modprobe
file konfigurasi- File
modules.load
Konten odm_dlkm di /odm/lib/modules
- Modul kernel ODM
modprobe
file konfigurasi- File
modules.load
Lihat Modul Kernel Dukungan untuk informasi lebih lanjut detail tentang file konfigurasi modul kernel.
Dukungan build
Membangun vendor_dlkm
dan odm_dlkm
adalah proses yang mirip dengan membangun lainnya
partisi dinamis.
Contoh build vendor_dlkm
Build vendor_dlkm
seperti yang ditunjukkan pada contoh berikut.
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 update yang sesuai
ras. Grup update harus berupa grup tempat partisi vendor berada.
Untuk perangkat A/B dan A/B Virtual, device.mk
AB_OTA_PARTITIONS += vendor_dlkm
fstab
Tambahkan entri berikut untuk vendor_dlkm
ke fstab. Ubah tanda menurut
perangkat. Gunakan CL Add vendor_dlkm
to
CF
sebagai contoh.
vendor_dlkm /vendor_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb
contoh build odm_dlkm
Build odm_dlkm
seperti yang ditunjukkan pada contoh berikut.
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 A/B Virtual, device.mk
AB_OTA_PARTITIONS += odm_dlkm
fstab
Tambahkan entri berikut untuk odm_dlkm
ke fstab. Ubah tanda sesuai dengan
perangkat seluler. Gunakan CL Add odm_dlkm
to
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 disalin ke dalam partisi vendor_dlkm
,
mencantumkannya di BOARD_VENDOR_KERNEL_MODULES
.
Jika ingin mengganti konten modules.load
, Anda dapat menentukannya di
BOARD_VENDOR_KERNEL_MODULES_LOAD
.
Pada waktu build, modul yang tercantum dalam BOARD_VENDOR_KERNEL_MODULES
akan diinstal
dalam $ANDROID_PRODUCT_OUT/vendor_dlkm/lib/modules
. {i>symbolic link<i} adalah
yang dibuat di /vendor/lib/modules
yang mengarah ke /vendor_dlkm/lib/modules
.
Demikian pula, untuk memilih modul kernel yang ingin Anda salin ke dalam odm_dlkm
partisi, cantumkan dalam BOARD_ODM_KERNEL_MODULES
. Build platform berjalan
depmod
pada modul dan menyalin file output depmod
ke dalam image.
Build akan membuat file modules.load
dan menyimpannya dalam image.
File ini berisi semua modul yang tercantum di BOARD_ODM_KERNEL_MODULES
.
Jika ingin mengganti konten modules.load
, Anda dapat menentukannya di
BOARD_ODM_KERNEL_MODULES_LOAD
.
Pada waktu build, modul yang tercantum dalam BOARD_ODM_KERNEL_MODULES
diinstal di
$ANDROID_PRODUCT_OUT/odm_dlkm/lib/modules
. Tautan simbolis dibuat di
/odm/lib/modules
yang mengarah ke /odm_dlkm/lib/modules
.
Selalu gunakan /vendor/lib/modules
dan /odm/lib/modules
untuk vendor
dan modul kernel ODM.
Jangan pernah menggunakan /vendor_dlkm/lib/modules. Perangkat tanpa vendor_dlkm
instal partisi BOARD_VENDOR_KERNEL_MODULES
ke /vendor/lib/modules
secara langsung. Hal ini bermasalah karena /vendor_dlkm/lib/modules
tidak ada.
Jangan pernah menggunakan /odm_dlkm/lib/modules
. Perangkat tanpa partisi odm_dlkm
instal BOARD_ODM_KERNEL_MODULES
ke /odm/lib/modules
secara langsung. Ini adalah
bermasalah karena /odm_dlkm/lib/modules
tidak ada.
Pemasangan partisi dan pemuatan modul
Selama first_stage_init
, partisi vendor_dlkm
dan odm_dlkm
yang masing-masing dipasang di partisi /vendor_dlkm
dan /odm_dlkm
. Kapan
ini terjadi, symlink di /vendor/lib/modules
dan /odm/lib/modules
menjadi
yang tersedia.
Proses vendor (seperti skrip .rc
) kemudian dapat memuat modul kernel berdasarkan
pada urutan yang ditentukan dalam modules.load
. Proses vendor juga dapat memuat
modul di lain waktu, jika diperlukan.
Dokumentasi terkait
Untuk dokumentasi mengenai pembuatan partisi {i>booting<i} vendor (yang berisi RAMDisk vendor), lihat Modul Kernel Dukungan.