GKI ve GKI modülleri, bölümün geri kalanından bağımsız olarak güncellenebilir.
Çünkü GKI modülleri üst görüntüde ayrı bir dinamik bölümde bulunur
system_dlkm
olarak adlandırıldı. GKI modülleri, çekirdek kullanılarak Google tarafından imzalanır
anahtar çifti ve yalnızca birlikte ürettikleri GKI ile uyumludur.
GKI ve GKI modülleri arasında ABI kararlılığı yoktur; yüklemeniz gerekir.
doğru şekilde çalışmadığında, GKI ve GKI modüllerinin derlenip güncellenmesi gerekir.
birlikte.
system_dklm bölümü desteğini uygulayın
system_dlkm
bölümü, süper bölümde başka bir dinamik
bölüm. Bu bölüm şunları içerebilir:
- Google derleme zamanı imzalı çekirdek modülleri
depmod
yapı
Derleme: system_dlkm
system_dlkm
oluşturmak, başka dinamikler oluşturmaya benzer bir süreçtir
her bölüm için geçerlidir. system_dlkm
ürününü derlemenize eklemek için aşağıdaki adımları uygulayın:
BoardConfig.mk
alanına aşağıdaki girişleri ekleyin:BOARD_USES_SYSTEM_DLKMIMAGE := true BOARD_SYSTEM_DLKMIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) TARGET_COPY_OUT_SYSTEM_DLKM := system_dlkm
Bölüm listesine
system_dlkm
ekleyin:BOARD_GOOGLE_SYSTEM_DYNAMIC_PARTITIONS_PARTITION_LIST := system_dlkm
(İsteğe bağlı) A/B ve sanal A/B cihazları için aşağıdaki satırı, Cihazınız için
device.mk
dosyası:AB_OTA_PARTITIONS += system_dlkm
system_dlkm
konumuna kopyalanacak çekirdek modüllerini belirleyin
Modüllerin çalışma zamanında başarılı bir şekilde yüklenmesi için GKI ve GKI modüllerinin derlenmesi gerekir
birlikte. Bu nedenle,
hedef mimariyi seçin ve system_dlkm
bölümü için kaynak olarak bunu sağlayın
bahsedeceğim.
Android 13 için
BOARD_SYSTEM_DLKM_SRC
��ğesini, gerekli GKI modüllerini içeren klasöre yönlendirin.
oluşturmak için derleme sistemine giriş olarak cihazın çekirdek nesne dosyalarını
system_dlkm
bölümlendirmesi. Örnek:
GKI modüllerinin kaynağını bir klasörde sağlayın ve BOARD_SYSTEM_DLKM_SRC
öğesine gidin.
söz konusu klasörde bulunabilir. Örnek:
BOARD_SYSTEM_DLKM_SRC := kernel/prebuilts/5.10/arm64/system_dlkm_staging
BOARD_SYSTEM_DLKM_SRC
içinde listelenen modüller, derleme sırasında şurada yüklenir:
$ANDROID_PRODUCT_OUT/system_dlkm
.
Android 14 için
Makrolarla uygulama işlemini kolaylaştırdık
(BOARD_*_KERNEL_MODULES
) başka
*_dlkm
bölüm. Cihaz için gerekli GKI modüllerinin listesi şu şekilde olmalıdır:
BOARD_SYSTEM_KERNEL_MODULES
makrosu tarafından referans verildi. Derleme sırasında bu modüller
$ANDROID_PRODUCT_OUT/system_dlkm
içinde yüklüdür. Projedeki herhangi bir modül
system_dlkm
içindeki modüllere bağımlılığı olan vendor_dlkm
bölümü
bölüm, şunun için modules.dep
dosyasında doğru başvurular oluşturur:
vendor_dlkm
bölümü. Temsil edilen çapraz bölüm bağımlılıkları
modules.dep
tarafından, bir
tedarikçi modülü yüklendiğinde gerekli tüm GKI modülü otomatik olarak yüklenir.
Örneğin, GKI için system_dlkm
bölümüne tüm GKI modüllerini yüklemek
Önceden oluşturulmuş, arm64
çekirdek 5.15
:
BOARD_SYSTEM_KERNEL_MODULES := $(wildcard kernel/prebuilts/5.15/arm64/*.ko)
Çalışma zamanında system_dlkm
ekle
Salt okunur dosya sistemi olarak kullanılan dosya sistemine bağlı olarak
çalışma zamanında system_dlkm
bölümünü eklemek için fstab
içinde şunu ekleyin:
Salt okunur dosya sistemi olarak ext4
system_dlkm /system_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb
Salt okunur dosya sistemi olarak erofs
system_dlkm /system_dlkm erofs ro wait,logical,first_stage_mount,slotselect,avb
Bölüm ekleme ve modül yükleme
first_stage_init
sırasında system_dlkm
bölümü
Salt okunur bir dosya sistemi olarak /system_dlkm
. Başarılı bir dağda, sembolik
/system/lib/modules
konumunda /system_dlkm/lib/modules
öğesine işaret eden bağlantılar
kullanılabilir.
Ardından .rc
komut dosyası gibi bir tedarikçi firma işlemi çekirdek modüllerini yükleyebilir.
modules.load
içinde belirtilen sıraya göre. Tedarikçi firma sürecinde
yüklemek için /system/lib/modules
sembolik bağlantısını kullanın.
Gerekirse tedarikçi firma tarafından da modülleri daha sonra yükleyebilirsiniz.
SELinux
system_dlkm
bölümündeki her dosya şu dosya bağlamıyla etiketlenir:
system_dlkm_file
. GKI modülleri dosyasını system_dlkm
bölümünde yüklemek için,
modüllerin yüklenmesinden sorumlu tedarikçi firma sürecinde sepolicy
seçeneğini belirleyin.
Örneğin, Cuttlefish tarafından GKI modüllerini yüklemek için kullanılan dlkm_loader
şu adresteki politika dosyasında:
shared/sepolicy/vendor/dlkm_loader.te
:
allow dlkm_loader self:capability sys_module;
allow dlkm_loader system_dlkm_file:dir r_dir_perms;
allow dlkm_loader system_dlkm_file:file r_file_perms;
allow dlkm_loader system_dlkm_file:system module_load;
system-dlkm bölümünü doğrulama
Google, system_dlkm
bölümünü doğrulamak için bir GKI VTS test durumu sağlar. Alıcı:
testi manuel olarak çağırmak için aşağıdaki atest
komutunu kullanın:
atest -c vts_dlkm_partition_test