Android 11, Genel Çekirdek Görüntüsü ve tedarikçi önyükleme bölümü kavramlarını sunar. Tedarikçi önyükleme bölümü, GKI ile uyumlu çekirdek modüllerini depolar ve ilk aşama başlatma işlemi tarafından yüklenir. Android 11'in yayınlanmasından önceki çekirdek modülleri de vendor ve ODM bölümlerinde depolanır ve vendor süreçleri tarafından yüklenir.
Android 11 veya sonraki sürümlerde çekirdek ve tüm çekirdek modülleri, bölümlerin geri kalanından bağımsız olarak güncellenebilir. Tedarikçi bölümünde depolanan çekirdek modüllerinin güncellenmesini sağlamak için (tedarikçi bölümü güncellemesi olmadan) tüm tedarikçi bölümü modüllerini Vendor DLKM (dinamik olarak yüklenebilir çekirdek modülü) adlı yeni bir bölüme taşıyın. Ardından bu bölümü bağımsız olarak güncelleyebilirsiniz. Benzer şekilde, ODM bölümünde depolanan tüm çekirdek modüllerini ODM DLKM adlı yeni bir bölüme taşıyabilirsiniz. Bu bölüm de bağımsız olarak güncellenebilir.
Bölüm konumu
vendor_dlkm
ve odm_dlkm
bölümleri, süper bölüm içinde başka bir dinamik bölüm olarak yer alır.
/vendor/lib/modules dizinindeki vendor_dlkm içerikleri
- Tedarikçi çekirdek modülleri
modprobe
yapılandırma dosyasımodules.load
dosyası
/odm/lib/modules dizinindeki odm_dlkm içerikleri
- ODM çekirdek modülleri
modprobe
yapılandırma dosyasımodules.load
dosyası
Çekirdek modülü yapılandırma dosyaları hakkında daha fazla bilgi için Kernel Module Support (Çekirdek Modülü Desteği) başlıklı makaleyi inceleyin.
Destek oluşturma
vendor_dlkm
ve odm_dlkm
oluşturma, diğer dinamik bölümleri oluşturmaya benzer bir süreçtir.
vendor_dlkm build example
Aşağıdaki örneklerde gösterildiği gibi vendor_dlkm
oluşturun.
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
<GROUP_NAME>
yerine uygun güncelleme grubu adını girin. Güncelleme grubu, tedarikçi bölümünün bulunduğu grup olmalıdır.
A/B ve Virtual A/B cihazlar için device.mk
AB_OTA_PARTITIONS += vendor_dlkm
fstab
fstab'a vendor_dlkm
için aşağıdaki girişi ekleyin. Cihaza göre değişiklik işaretlerini değiştirin. Örnek olarak CL Add vendor_dlkm
to
CF'yi kullanın.
vendor_dlkm /vendor_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb
odm_dlkm derleme örneği
Aşağıdaki örneklerde gösterildiği gibi odm_dlkm
oluşturun.
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
A/B ve sanal A/B cihazlar için device.mk
AB_OTA_PARTITIONS += odm_dlkm
fstab
fstab'a odm_dlkm
için aşağıdaki girişi ekleyin. Cihaza göre işaretleri değiştirin. Örnek olarak CL Add odm_dlkm
to
CF'yi kullanın.
odm_dlkm /odm_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb
Çekirdek modüllerini bir bölüme kopyalama
vendor_dlkm
bölümüne kopyalamak istediğiniz çekirdek modüllerini seçmek için bunları BOARD_VENDOR_KERNEL_MODULES
içinde listeleyin.
modules.load
içeriğini geçersiz kılmak istiyorsanız bunu BOARD_VENDOR_KERNEL_MODULES_LOAD
içinde belirtebilirsiniz.
Derleme sırasında, BOARD_VENDOR_KERNEL_MODULES
içinde listelenen modüller $ANDROID_PRODUCT_OUT/vendor_dlkm/lib/modules
'ye yüklenir. /vendor/lib/modules
konumunda, /vendor_dlkm/lib/modules
konumuna yönlendiren bir sembolik bağlantı oluşturulur.
Benzer şekilde, odm_dlkm
bölümüne kopyalamak istediğiniz çekirdek modüllerini seçmek için bunları BOARD_ODM_KERNEL_MODULES
içinde listeleyin. Platform derlemesi, modüllerde depmod
çalışır ve depmod
çıkış dosyalarını görüntüye kopyalar.
Derleme, bir modules.load
dosyası oluşturur ve bunu görüntüde saklar.
Bu dosya, BOARD_ODM_KERNEL_MODULES
bölümünde listelenen tüm modülleri içerir.
modules.load
içeriğini geçersiz kılmak istiyorsanız bunu BOARD_ODM_KERNEL_MODULES_LOAD
içinde belirtebilirsiniz.
Derleme sırasında, BOARD_ODM_KERNEL_MODULES
içinde listelenen modüller $ANDROID_PRODUCT_OUT/odm_dlkm/lib/modules
içine yüklenir. /odm/lib/modules
konumunda /odm_dlkm/lib/modules
konumuna yönlendiren bir sembolik bağlantı oluşturulur.
Tedarikçi ve ODM çekirdek modülleri için /vendor/lib/modules
ve /odm/lib/modules
her zaman kullanılmalıdır.
/vendor_dlkm/lib/modules asla kullanılmaz. vendor_dlkm
bölümü olmayan cihazlar, BOARD_VENDOR_KERNEL_MODULES
'ı doğrudan /vendor/lib/modules
'a yükler. /vendor_dlkm/lib/modules
mevcut olmadığından bu durum sorunludur.
Hiçbir zaman kullanmayın /odm_dlkm/lib/modules
. odm_dlkm
bölümü olmayan cihazlar
BOARD_ODM_KERNEL_MODULES
'ı doğrudan /odm/lib/modules
'a yükleyin. /odm_dlkm/lib/modules
mevcut olmadığından bu durum sorunludur.
Bölüm montajı ve modül yükleme
first_stage_init
sırasında vendor_dlkm
ve odm_dlkm
bölümleri sırasıyla /vendor_dlkm
ve /odm_dlkm
dizinlerine bağlanır. Bu durumda /vendor/lib/modules
ve /odm/lib/modules
konumlarındaki sembolik bağlantılar kullanılabilir hâle gelir.
Daha sonra bir satıcı süreci (ör. .rc
komut dosyası), çekirdek modüllerini modules.load
içinde belirtilen sıraya göre yükleyebilir. Gerekirse satıcı süreci, modülleri daha sonra da yükleyebilir.
İlgili belgeler
Tedarikçi RAMDisk'ini içeren bir tedarikçi önyükleme bölümü oluşturmayla ilgili dokümanlar için Kernel Module Support (Çekirdek Modülü Desteği) başlıklı makaleye bakın.