27 Mart 2025'ten itibaren AOSP'yi derlemek ve AOSP'ye katkıda bulunmak için aosp-main yerine android-latest-release kullanmanızı öneririz. Daha fazla bilgi için AOSP'de yapılan değişiklikler başlıklı makaleyi inceleyin.
Çekirdek özelliklerini GKI modülleri olarak yapılandırma
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
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 öğesini n yerine m (=m) olarak ayarlayın. Bu ayarı hem arch/arm64/configs/gki_defconfig hem de arch/x86/configs/gki_defconfig dosyalarında yapın.
Özellik için oluşturulan KO (.ko) dosyalarını common/modules.bzl dosyasının COMMON_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.
Android 14 için, modülü korumalı bir GKI modülü olarak tanımlamak üzere 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 içine ekleyin.
Android 14 ve 15 için 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çin tools/bazel run //common:kernel_aarch64_abi_update_protected_exports for aarch64 komutunu çalıştırın.
2. adımda yeni eklenen KO dosyalarının çekirdeğin out/<androidX-Y.Z>/dist/system_dlkm.img ve out/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 derlemesinde system_dlkm.img oluşturmak için giriş olarak kullanılabilir.
Değişikliklerinizi incelemeye gönderin. GKI modülleri yalnızca Android'e özel bir çekirdek özelliği olduğundan modül dönüştürme yamalarını yayına göndermeniz gerekmez. Ancak Android Ortak Çekirdek (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 öğesini y yerine m (=m) olarak ayarlayın. Bu ayarı hem arch/arm64/configs/gki_defconfig hem de arch/x86/configs/gki_defconfig dosyalarında ayarlayın.
Özellik için oluşturulan KO (.ko) dosyalarını common/modules.bzl dosyasının COMMON_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.
Android 14 için, modülü korumalı bir GKI modülü olarak tanımlamak üzere 2. adımdaki aynı KO dosya grubunu, çalışma zamanında ikili arama için artan düzende sıralayarak common/android/gki_{ARCH}_protected_modules içine ekleyin.
Android 14 ve 15 için, aarch64 için tools/bazel run
//common:kernel_aarch64_abi_update_protected_exports değerini kullanarak common/android/abi_gki_protected_exports_{ARCH}'te yeni eklenen modüldekileri içerecek şekilde korunan dışa aktarma işlemlerinin listesini güncelleyin.
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 ve out/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 derlemesinde system_dlkm.img oluşturmak için giriş olarak kullanılabilir.
Değişikliklerinizi incelemeye gönderin. GKI modülleri yalnızca Android'e özel bir ç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 15 ve sonraki sürümlerde, korumalıdan korunmasız olarak dönüştürülen modülü common/modules.bzl dosyasındaki COMMON_UNPROTECTED_MODULES_LIST listesine ekleyin.
Android 14 ve 15 için, aarch64 için tools/bazel run
//common:kernel_aarch64_abi_update_protected_exports kullanarak common/android/abi_gki_protected_exports_{ARCH}'te yeni dönüştürülmüş korumasız modülün dışında kalacak şekilde korunan dışa aktarma listesini güncelleyin.
Değişikliklerinizi incelemeye gönderin. GKI modülleri yalnızca Android'e özel bir ç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.
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 öğesini dışa aktaran modülün GKI sürümü kullanılarak düzeltilebilir.
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-27 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-27 UTC."],[],[],null,["# Configure kernel features as GKI modules\n\nThis page covers how to configure a new kernel feature as a GKI module or\nconfigure an existing built-in kernel feature as a GKI module.\n| **Note:** Changes that result in a new GKI module or that change the protection status of a GKI module must be approved by Google.\n\nConfigure a new feature as a GKI module\n---------------------------------------\n\n1. For the new feature, edit `gki_defconfig` and set the required kernel\n feature's config item from `n` to `m` (`=m`). Set this setting in both\n `arch/arm64/configs/gki_defconfig` and `arch/x86/configs/gki_defconfig`.\n\n2. Add the KO (`.ko`) files generated for the feature\n to the `COMMON_GKI_MODULES_LIST` section of `common/modules.bzl`. Add the\n files in a sorted order. If you're unsure of all the files generated,\n the build fails and lists all the necessary KO files to be added to the list.\n\n3. For Android 14, add the same set of KO files from step 2, sorted in ascending\n order for binary search at runtime, to\n `common/android/gki_{ARCH}_protected_modules` to designate the module as a\n protected GKI module.\n\n4. For Android 14 and 15, update the list of exports so that it includes the\n newly-added exports in `common/android/abi_gki_protected_exports_`\u003cvar translate=\"no\"\u003eARCHITECTURE\u003c/var\u003e. For example, to update the list, run\n `tools/bazel run //common:kernel_aarch64_abi_update_protected_exports` for\n `aarch64`.\n\n5. Make sure newly added KO files from step 2 are copied to the kernel's\n `out/\u003candroidX-Y.Z\u003e/dist/system_dlkm.img` and\n `out/`\u003cvar translate=\"no\"\u003eandroidX-Y.Z\u003c/var\u003e`/dist/system_dlkm_staging_archive.tar.gz`.\n Modules in the `system_dlkm_staging_archive.tar.gz` archive can be used as\n input to generate the `system_dlkm.img` in the platform build.\n\n6. Submit your changes for review. GKI modules are an Android-only kernel\n feature, so module conversion patches aren't required to be submitted\n upstream. However, you must follow other guidelines to submit\n [Android Common Kernel (ACK) patches](/docs/core/architecture/kernel/kernel-code#ack-patches).\n\nConfigure a kernel built-in feature as a GKI module\n---------------------------------------------------\n\n1. For an existing built-in kernel feature, edit `gki_defconfig` and set the\n required kernel feature's config item from `y` to `m` (`=m`). Set this\n setting in both `arch/arm64/configs/gki_defconfig` and\n `arch/x86/configs/gki_defconfig`.\n\n2. Add the KO (`.ko`) files generated for the feature to the\n `COMMON_GKI_MODULES_LIST` section of `common/modules.bzl`. Add the files\n in a sorted order. If you're unsure of all the files generated,\n the build fails and lists all the necessary KO files to be added to the list.\n\n3. For Android 14, add the same set of KO files from step 2, sorted in ascending\n order for binary search at runtime, to\n `common/android/gki_{ARCH}_protected_modules` to designate the module as a\n protected GKI module.\n\n4. For Android 14 and 15, update the list of exports that are protected to\n include ones from the newly added module in\n `common/android/abi_gki_protected_exports_{ARCH}` using `tools/bazel run\n //common:kernel_aarch64_abi_update_protected_exports` for `aarch64`.\n\n5. Make sure newly converted module KO files from step 2 are copied to the\n kernel's `out/\u003candroidX-Y.Z\u003e/dist/system_dlkm.img` and\n `out/`\u003cvar translate=\"no\"\u003eandroidX-Y.Z\u003c/var\u003e`/dist/system_dlkm_staging_archive.tar.gz`.\n Modules in the `system_dlkm_staging_archive.tar.gz` archive can be used as\n input to generate the `system_dlkm.img` in the platform build.\n\n6. Submit your changes for review. GKI modules are an Android-only kernel\n feature, so module conversion patches aren't required to be submitted\n upstream. However, you must follow the other guidelines to submit\n [Android Common Kernel (ACK)\n patches](/docs/core/architecture/kernel/kernel-code#ack-patches).\n\nConvert a protected GKI module to unprotected\n---------------------------------------------\n\n1. For Android 15 and higher, add the module being converted from protected to\n unprotected to the `COMMON_UNPROTECTED_MODULES_LIST` list in\n `common/modules.bzl` file.\n\n2. For Android 14, remove the module being converted from protected to\n unprotected from the list of protected modules at\n `common/android/gki_protected_modules`.\n\n3. For Android 14 and 15, update the list of exports that are protected to\n exclude ones from the newly converted unprotected module in the\n `common/android/abi_gki_protected_exports_{ARCH}` using `tools/bazel run\n //common:kernel_aarch64_abi_update_protected_exports` for `aarch64`.\n\n4. Submit your changes for review. GKI modules are an Android-only kernel\n feature, so module conversion patches aren't required to be submitted\n upstream. However, you must follow the other guidelines to submit\n [Android Common Kernel (ACK)\n patches](/docs/core/architecture/kernel/kernel-code#ack-patches).\n\nGKI modules symbol violation resolution quick guide\n---------------------------------------------------\n\nWhen unsigned modules violate the symbol protection in place for GKI modules,\ntwo types of errors may be encountered during module loading, resulting in\nfailure.\n\n### 1. Unsigned module using the protected symbol\n\n**Error:**\n\n`module: Protected symbol: some_kernel_function (err -13)`\n\n**Cause:**\n\nThe `module.ko` file is an unsigned vendor module and attempts to resolve the\nGKI module exported symbol `some_kernel_function` during loading, without\nbeing listed in the vendor symbol list.\n\n**Resolution:**\n\nIf `module.ko` is not a protected GKI module, updating the symbol list will\nresolve the error by including `some_kernel_function` in the vendor symbol list.\nAlternatively, use the GKI version of `module.ko`.\n\n### 2. Unsigned module exporting the protected symbol\n\n**Error:**\n\n`module: exports protected symbol some_kernel_function`\n\n**Cause:**\n\nThe module exporting the `some_kernel_function` is a protected GKI module, and\n`module.ko` is likely an unsigned custom version of that module. When\n`module.ko` tries to export `some_kernel_function`, which can only be exported\nby a signed GKI module, loading fails with this message.\n\n**Resolution:**\n\nThis can be corrected by using the GKI version of the module that exports\n`some_kernel_function`, if the unsigned module is a custom version."]]