Tedarikçi firma ve ODM DLKM bölümleri

Android 11, Genel Çekirdek Görüntüsü ve tedarikçi önyükleme bölümü kavramlarını kullanıma sunar. Tedarikçi firma önyükleme bölümü, GKI ile uyumlu çekirdek modüllerini depolar ve ilk aşamalı init tarafından yüklenir. Android 11'in yayınlanmasından önceki çekirdek modülleri de tedarikçi ve ODM bölümlerinde depolanır ve tedarikçi süreçleri tarafından yüklenir.

Android 11 veya sonraki sürümlerde çekirdek ve tüm çekirdek modülleri, diğer bölümlerden bağımsız olarak güncellenebilir. Tedarikçiye ait bölümde depolanan çekirdek modülleri için güncellemeleri etkinleştirmek üzere (tedarikçiye ait bölüm güncellemesi olmadan) tüm tedarikçiye ait bölüm modüllerini Tedarikçi 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 bağımsız olarak da güncellenebilir.

Bölme konumu

vendor_dlkm ve odm_dlkm bölümleri, süper bölümde başka bir dinamik bölüm olarak bulunur.

/vendor/lib/modules içindeki vendor_dlkm içeriği

  • Tedarikçi çekirdek modülleri
  • modprobe yapılandırma dosyaları
  • modules.load dosyası

/odm/lib/modules içindeki odm_dlkm içeriği

  • ODM çekirdek modülleri
  • modprobe yapılandırma dosyaları
  • modules.load dosyası

Çekirdek modülü yapılandırma dosyaları hakkında daha fazla bilgi için Çekirdek Modülü Desteği başlıklı makaleyi inceleyin.

Destek oluşturma

vendor_dlkm ve odm_dlkm oluşturma işlemi, diğer dinamik bölümleri oluşturma işlemine benzer.

vendor_dlkm derleme örneği

vendor_dlkm öğesini aşağıdaki örneklerde gösterildiği gibi 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 güncelleme grubunun uygun adını yazın. Güncelleme grubu, tedarikçi firma bölümünün bulunduğu grup olmalıdır.

A/B ve sanal A/B cihazlar için device.mk

AB_OTA_PARTITIONS += vendor_dlkm

fstab

fstab dosyasına vendor_dlkm için aşağıdaki girişi ekleyin. İşaretleri cihaza göre değiştirin. Örnek olarak CL CF'ye vendor_dlkm ekleyin ifadesini kullanın.

vendor_dlkm /vendor_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb

odm_dlkm derleme örneği

odm_dlkm öğesini aşağıdaki örneklerde gösterildiği gibi 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 dosyasına odm_dlkm için aşağıdaki girişi ekleyin. İşaretleri cihaza göre değiştirin. Örnek olarak CL odm_dlkm'yi CF'ye ekle seçeneğini 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 BOARD_VENDOR_KERNEL_MODULES bölümünde 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'a yüklenir. /vendor/lib/modules adresinde, /vendor_dlkm/lib/modules adresine yönlendiren sembolik bir 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ıştırır ve depmod çıkış dosyalarını görüntüye kopyalar. Derleme, bir modules.load dosyası oluşturur ve bunu görüntüde depolar. Bu dosya, BOARD_ODM_KERNEL_MODULES içinde listelenen tüm modülleri içerir.

modules.load öğesinin 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'a yüklenir. /odm/lib/modules konumunda /odm_dlkm/lib/modules'a yönlendiren bir sembolik bağlantı oluşturulur.

Tedarikçi ve ODM çekirdek modülleri için /vendor/lib/modules ve /odm/lib/modules değerlerini her zaman kullanın.

/vendor_dlkm/lib/modules yolunu hiçbir zaman kullanmayın. vendor_dlkm bölümü olmayan cihazlar, BOARD_VENDOR_KERNEL_MODULES uygulamasını doğrudan /vendor/lib/modules ürününe yükler. /vendor_dlkm/lib/modules mevcut olmadığı için bu sorunlu.

/odm_dlkm/lib/modules ifadesini hiçbir zaman kullanmayın. odm_dlkm bölümü olmayan cihazlar, BOARD_ODM_KERNEL_MODULES uygulamasını doğrudan /odm/lib/modules konumuna yükler. /odm_dlkm/lib/modules mevcut olmadığından bu sorunludur.

Bölüm bağlama 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 monte edilir. Bu durumda /vendor/lib/modules ve /odm/lib/modules bölgelerindeki sembolik bağlantılar kullanılabilir hale gelir.

Ardından bir tedarikçi süreci (.rc komut dosyası gibi), çekirdek modüllerini modules.load içinde belirtilen sıraya göre yükleyebilir. Tedarikçi firma işlemi, gerekirse modülleri daha sonra da yükleyebilir.

Tedarikçi önyükleme bölümünün (tedarikçi RAMDisk'ini içeren) oluşturulmasıyla ilgili dokümanlar için Çekirdek Modülü Desteği başlıklı makaleyi inceleyin.