Satıcı/ODM DLKM Bölümü

Android 11, Genel Çekirdek Görüntüsü ve satıcı önyükleme bölümü kavramını tanıtıyor. Satıcının önyükleme bölümü, GKI ile uyumlu çekirdek modüllerini saklar ve ilk aşama init tarafından yüklenir. Android 11'in piyasaya sürülmesinden önceki Çekirdek Modülleri de satıcı ve ODM bölümlerinde depolanır ve satıcı işlemleri tarafından yüklenir.

Android 11 veya üzeri için çekirdek ve tüm çekirdek modülleri, diğer bölümlerden bağımsız olarak güncellenebilir. Satıcı bölümünde depolanan çekirdek modüllerine yönelik güncellemeleri etkinleştirmek için (satıcı bölümü güncellemesi olmadan), tüm satıcı bölümü modüllerini Satıcı DLKM (dinamik olarak yüklenebilir çekirdek modülü) adı verilen yeni bir bölüme taşıyın. Daha sonra bu bölümü bağımsız olarak güncelleyebilirsiniz. Benzer şekilde, ODM bölümünde saklanan tüm çekirdek modüllerini ODM DLKM adı verilen yeni bir bölüme taşıyabilirsiniz. Bu bölüm bağımsız olarak da güncellenebilir.

Bölüm 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 satıcı_dlkm içeriği

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

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

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

Çekirdek modülü yapılandırma dosyaları hakkında daha fazla ayrıntı için Çekirdek Modül Desteği'ne bakın.

Destek oluşturun

vendor_dlkm ve odm_dlkm oluşturmak, diğer dinamik bölümleri oluşturmaya benzer bir süreçtir.

satıcı_dlkm yapı örneği

vendor_dlkm aşağıdaki örnekte 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, satıcı 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

vendor_dlkm için aşağıdaki girişi fstab'a ekleyin. Bayrakları cihaza göre 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 yapı örneği

Aşağıdaki örnekte 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

odm_dlkm için aşağıdaki girişi fstab'a ekleyin. Bayrakları cihaza göre 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 belirtebilirsiniz.

Derleme sırasında, BOARD_VENDOR_KERNEL_MODULES listelenen modüller $ANDROID_PRODUCT_OUT/vendor_dlkm/lib/modules dizinine yüklenir. /vendor/lib/modules konumunda /vendor_dlkm/lib/modules adresine giden 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 yapısı, modüller üzerinde depmod çalıştırır ve depmod çıktı dosyalarını görüntüye kopyalar. Yapı, bir modules.load dosyası oluşturur ve bunu görüntüde saklar. Bu dosya BOARD_ODM_KERNEL_MODULES 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 listelenen modüller $ANDROID_PRODUCT_OUT/odm_dlkm/lib/modules dizinine yüklenecek. /odm/lib/modules konumunda /odm_dlkm/lib/modules adresine giden sembolik bir bağlantı oluşturulacaktır.

Satıcı ve ODM çekirdek modülleri için her zaman /vendor/lib/modules ve /odm/lib/modules kullanın.

Asla /vendor_dlkm/lib/modules kullanmayın. vendor_dlkm bölümü olmayan cihazlar BOARD_VENDOR_KERNEL_MODULES doğrudan /vendor/lib/modules dizinine yükler. /vendor_dlkm/lib/modules mevcut olmadığından bu sorunludur.

Asla /odm_dlkm/lib/modules kullanmayın. odm_dlkm bölümü olmayan cihazlar BOARD_ODM_KERNEL_MODULES doğrudan /odm/lib/modules dizinine yükler. /odm_dlkm/lib/modules mevcut olmadığından bu 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 bölümlerine eklenir. Bu olduğunda, /vendor/lib/modules ve /odm/lib/modules adresindeki sembolik bağlantılar kullanılabilir hale gelir.

Daha sonra bir satıcı işlemi (bir '.rc' betiği gibi), modules.load belirtilen sıraya göre çekirdek modüllerini yükleyebilir. Satıcı süreci gerekirse modülleri daha sonra da yükleyebilir.

Satıcı-önyükleme bölümünün (satıcının RAMDisk'ini içeren) oluşturulmasına ilişkin belgeler için Çekirdek Modül Desteği'ne bakın.