Bu sayfada, yeni bir çekirdek özelliğinin GKI modülü olarak nasıl yapılandırılacağı veya mevcut yerleşik bir çekirdek özelliğinin GKI modülü olarak nasıl yapılandırılacağı açıklanmaktadır.
Yeni bir özelliği GKI modülü olarak yapılandırma
Yeni özellik için
gki_defconfig
dosyasını düzenleyin ve gerekli çekirdek özelliğinin yapılandırma öğesinin
yerinem
(=m
) olarak ayarlayın. Bu ayarı hemarch/arm64/configs/gki_defconfig
hem dearch/x86/configs/gki_defconfig
dosyalarında yapın.Özellik için oluşturulan KO (
.ko
) dosyalarınıcommon/modules.bzl
dosyasınınCOMMON_GKI_MODULES_LIST
bölümüne ekleyin. Dosyaları sıralı olarak ekleyin. Oluşturulan tüm dosyalardan emin değilseniz derleme başarısız olur ve listeye eklenecek tüm gerekli KO dosyalarını listeler.(İsteğe bağlı) Android 15 ve sonraki sürümler için bu adımı atlayın.
Modülü korumalı bir GKI modülü olarak tanımlamak için 2. adımdaki aynı KO dosyası grubunu, çalışma zamanında ikili arama için artan düzende sıralayarak
common/android/gki_{ARCH}_protected_modules
dosyasına ekleyin.Dışa aktarma listesini,
common/android/abi_gki_protected_exports_ARCHITECTURE
'te yeni eklenen dışa aktarma işlemlerini içerecek şekilde güncelleyin. Örneğin, listeyi güncellemek içinaarch64
yerinetools/bazel run //common:kernel_aarch64_abi_update_protected_exports
çalıştırın. Korunan GKI modülü olarak tanımlanan modüllerin, resmi korumalı modül olarak kabul edilmek için Google tarafından onaylanması gerekir.2. adımda yeni eklenen KO dosyalarının çekirdeğin
out/<androidX-Y.Z>/dist/system_dlkm.img
veout/androidX-Y.Z/dist/system_dlkm_staging_archive.tar.gz
klasörüne kopyalandığından emin olun.system_dlkm_staging_archive.tar.gz
arşivindeki modüller, platform derlemesindesystem_dlkm.img
oluşturmak için giriş olarak kullanılabilir.Değişikliklerinizi incelemeye gönderin. GKI modülleri yalnızca Android çekirdek özelliği olduğundan modül dönüştürme yamalarını yayına göndermeniz gerekmez. Ancak Android Common Kernel (ACK) yamaları göndermek için diğer yönergeleri uygulamanız gerekir.
Çekirdek yerleşik özelliğini GKI modülü olarak yapılandırma
Mevcut bir yerleşik çekirdek özelliği için
gki_defconfig
dosyasını düzenleyin ve gerekli çekirdek özelliğinin yapılandırma öğesiniy
yerinem
(=m
) olarak ayarlayın. Bu ayarı hemarch/arm64/configs/gki_defconfig
hem dearch/x86/configs/gki_defconfig
dosyalarında ayarlayın.Özellik için oluşturulan KO (
.ko
) dosyalarınıcommon/modules.bzl
dosyasınınCOMMON_GKI_MODULES_LIST
bölümüne ekleyin. Dosyaları sıralı olarak ekleyin. Oluşturulan tüm dosyalardan emin değilseniz derleme başarısız olur ve listeye eklenecek tüm gerekli KO dosyalarını listeler.Modülü korumalı bir GKI modülü olarak tanımlamak için 2. adımdaki aynı KO dosyası grubunu, çalışma zamanında ikili arama için artan düzende sıralayarak
common/android/gki_{ARCH}_protected_modules
dosyasına ekleyin. Korunan dışa aktarma işlemlerinin listesini,aarch64
içincommon/android/abi_gki_protected_exports_{ARCH}
'tetools/bazel run //common:kernel_aarch64_abi_update_protected_exports
kullanarak yeni eklenen modüldekileri içerecek şekilde güncelleyin. Korunan GKI modülü olarak tanımlanan modüllerin, resmi korumalı modül olarak kabul edilmek için Google tarafından onaylanması gerekir.2. adımda yeni dönüştürülen modül KO dosyalarının çekirdeğin
out/<androidX-Y.Z>/dist/system_dlkm.img
veout/androidX-Y.Z/dist/system_dlkm_staging_archive.tar.gz
dizinine kopyalandığından emin olun.system_dlkm_staging_archive.tar.gz
arşivindeki modüller, platform derlemesindesystem_dlkm.img
oluşturmak için giriş olarak kullanılabilir.Değişikliklerinizi incelemeye gönderin. GKI modülleri yalnızca Android çekirdek özelliği olduğundan modül dönüştürme yamalarını yayına göndermeniz gerekmez. Ancak Android Common Kernel (ACK) yamaları göndermek için diğer yönergeleri uygulamanız gerekir.
Korumalı bir GKI modülünü korumasız hâle dönüştürme
- Android 14 ve önceki sürümler için: Korumalı modülden korumasız modüle dönüştürülen modülü
common/android/gki_protected_modules
adresindeki korumalı modüller listesinden kaldırın.
- Android 15 ve sonraki sürümler için: Korumalı olan modülü,
common/modules.bzl
dosyasındaCOMMON_UNPROTECTED_MODULES_LIST
listesine ekleyin.
- Android 14 ve önceki sürümler için: Korumalı modülden korumasız modüle dönüştürülen modülü
Korunan dışa aktarma işlemlerinin listesini,
aarch64
içintools/bazel run //common:kernel_aarch64_abi_update_protected_exports
değerini kullanarakcommon/android/abi_gki_protected_exports_{ARCH}
'te yeni dönüştürülen korumasız modülün dışa aktarma işlemlerini hariç tutacak şekilde güncelleyin.Değişikliklerinizi incelemeye gönderin. GKI modülleri yalnızca Android çekirdek özelliği olduğundan modül dönüştürme yamalarını yayına göndermeniz gerekmez. Ancak Android Common Kernel (ACK) yamaları göndermek için diğer yönergeleri uygulamanız gerekir.
GKI modülleri sembol ihlali çözümü hızlı kılavuzu
İmzasız modüller, GKI modülleri için geçerli olan simge korumasını ihlal ettiğinde modül yükleme sırasında iki tür hatayla karşılaşılabilir ve bu da başarısızlığa neden olur.
1. Korunan simgeyi kullanan imzasız modül
Hata:
module: Protected symbol: some_kernel_function (err -13)
Neden:
module.ko
dosyası, imzalanmamış bir tedarikçi modülüdür ve tedarikçi sembol listesinde listelenmeden, yükleme sırasında dışa aktarılan GKI modülü sembolü some_kernel_function
'ü çözmeye çalışır.
Çözüm:
module.ko
korunan bir GKI modülü değilse simge listesi güncellendiğinde some_kernel_function
tedarikçi simgesi listesine eklenerek hata çözülebilir.
Alternatif olarak module.ko
için GKI sürümünü de kullanabilirsiniz.
2. Korunan simgeyi dışa aktaran imzasız modül
Hata:
module: exports protected symbol some_kernel_function
Neden:
some_kernel_function
öğesini dışa aktaran modül korumalı bir GKI modülüdür ve module.ko
muhtemelen bu modülün imzasız özel bir sürümüdür. module.ko
, yalnızca imzalı bir GKI modülü tarafından dışa aktarılabilen some_kernel_function
öğesini dışa aktarmaya çalıştığında yükleme bu mesajla başarısız olur.
Çözüm:
İmzasız modül özel bir sürümse bu durum, some_kernel_function
dışa aktaran modülün GKI sürümü kullanılarak düzeltilebilir.