Ab dem 27. März 2025 empfehlen wir, android-latest-release anstelle von aosp-main zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Auf dieser Seite erfahren Sie, wie Sie eine neue Kernelfunktion als GKI-Modul oder eine vorhandene integrierte Kernelfunktion als GKI-Modul konfigurieren.
Neue Funktion als GKI-Modul konfigurieren
Bearbeiten Sie für die neue Funktion gki_defconfig und legen Sie das Konfigurationselement der erforderlichen Kernelfunktion von n auf m (=m) fest. Legen Sie diese Einstellung sowohl in arch/arm64/configs/gki_defconfig als auch in arch/x86/configs/gki_defconfig fest.
Fügen Sie die für die Funktion generierten KO-Dateien (.ko) dem Bereich COMMON_GKI_MODULES_LIST von common/modules.bzl hinzu. Fügen Sie die Dateien in sortierter Reihenfolge hinzu. Wenn Sie sich nicht sicher sind, ob alle generierten Dateien vorhanden sind, schlägt der Build fehl und alle erforderlichen KO-Dateien werden aufgelistet, die der Liste hinzugefügt werden müssen.
Fügen Sie für Android 14 dieselben KO-Dateien aus Schritt 2 in aufsteigender Reihenfolge für die binäre Suche zur Laufzeit in common/android/gki_{ARCH}_protected_modules ein, um das Modul als geschütztes GKI-Modul zu kennzeichnen.
Aktualisieren Sie für Android 14 und 15 die Liste der Exporte, sodass sie die neu hinzugefügten Exporte in common/android/abi_gki_protected_exports_ARCHITECTURE enthält. Wenn Sie beispielsweise die Liste aktualisieren möchten, führen Sie tools/bazel run //common:kernel_aarch64_abi_update_protected_exports für aarch64 aus.
Achten Sie darauf, dass die neu hinzugefügten KO-Dateien aus Schritt 2 in die out/<androidX-Y.Z>/dist/system_dlkm.img und out/androidX-Y.Z/dist/system_dlkm_staging_archive.tar.gz des Kernels kopiert werden.
Module im system_dlkm_staging_archive.tar.gz-Archiv können als Eingabe verwendet werden, um die system_dlkm.img im Plattformbuild zu generieren.
Reichen Sie Ihre Änderungen zur Überprüfung ein. GKI-Module sind eine nur für Android verfügbare Kernelfunktion. Daher müssen keine Patches zur Modulkonvertierung eingereicht werden. Für das Einreichen von Android Common Kernel (ACK)-Patches gelten jedoch andere Richtlinien.
Eine integrierte Kernelfunktion als GKI-Modul konfigurieren
Bearbeiten Sie für eine vorhandene integrierte Kernelfunktion gki_defconfig und ändern Sie das Konfigurationselement der erforderlichen Kernelfunktion von y in m (=m). Legen Sie diese Einstellung sowohl in arch/arm64/configs/gki_defconfig als auch in arch/x86/configs/gki_defconfig fest.
Fügen Sie die für die Funktion generierten KO-Dateien (.ko) dem Abschnitt COMMON_GKI_MODULES_LIST von common/modules.bzl hinzu. Fügen Sie die Dateien in sortierter Reihenfolge hinzu. Wenn Sie sich nicht sicher sind, ob alle generierten Dateien vorhanden sind, schlägt der Build fehl und alle erforderlichen KO-Dateien werden aufgelistet, die der Liste hinzugefügt werden müssen.
Fügen Sie für Android 14 dieselben KO-Dateien aus Schritt 2 in aufsteigender Reihenfolge für die binäre Suche zur Laufzeit in common/android/gki_{ARCH}_protected_modules ein, um das Modul als geschütztes GKI-Modul zu kennzeichnen.
Aktualisieren Sie für Android 14 und 15 die Liste der geschützten Exporte, um die Exporte aus dem neu hinzugefügten Modul in common/android/abi_gki_protected_exports_{ARCH} einzubeziehen. Verwenden Sie dazu tools/bazel run
//common:kernel_aarch64_abi_update_protected_exports anstelle von aarch64.
Achten Sie darauf, dass die neu konvertierten KO-Dateien des Moduls aus Schritt 2 in die out/<androidX-Y.Z>/dist/system_dlkm.img und out/androidX-Y.Z/dist/system_dlkm_staging_archive.tar.gz des Kernels kopiert werden.
Module im system_dlkm_staging_archive.tar.gz-Archiv können als Eingabe verwendet werden, um die system_dlkm.img im Plattformbuild zu generieren.
Reichen Sie Ihre Änderungen zur Überprüfung ein. GKI-Module sind eine nur für Android verfügbare Kernelfunktion. Daher müssen keine Patches zur Modulkonvertierung eingereicht werden. Sie müssen jedoch die anderen Richtlinien einhalten, um Android Common Kernel (ACK)-Patches einzureichen.
Geschütztes GKI-Modul in nicht geschütztes Modul umwandeln
Fügen Sie für Android 15 und höher das Modul, das von geschützt zu ungeschützt konvertiert wird, der Liste COMMON_UNPROTECTED_MODULES_LIST in der Datei common/modules.bzl hinzu.
Entfernen Sie unter Android 14 das Modul, das von geschützt zu nicht geschützt konvertiert werden soll, aus der Liste der geschützten Module unter common/android/gki_protected_modules.
Aktualisieren Sie für Android 14 und 15 die Liste der geschützten Exporte, um diejenigen aus dem neu konvertierten ungeschützten Modul in der common/android/abi_gki_protected_exports_{ARCH} auszuschließen. Verwenden Sie dazu tools/bazel run
//common:kernel_aarch64_abi_update_protected_exports anstelle von aarch64.
Reichen Sie Ihre Änderungen zur Überprüfung ein. GKI-Module sind eine nur für Android verfügbare Kernelfunktion. Daher müssen keine Patches zur Modulkonvertierung eingereicht werden. Sie müssen jedoch die anderen Richtlinien einhalten, um Android Common Kernel (ACK)-Patches einzureichen.
Kurzanleitung zur Behebung von Symbolverstößen bei GKI-Modulen
Wenn unsignierte Module gegen den für GKI-Module geltenden Symbolschutz verstoßen, können beim Laden des Moduls zwei Arten von Fehlern auftreten, die zu einem Fehler führen.
Die Datei module.ko ist ein nicht signiertes Anbietermodul und versucht, das aus dem GKI-Modul exportierte Symbol some_kernel_function beim Laden aufzulösen, ohne in der Symbolliste des Anbieters aufgeführt zu sein.
Lösung:
Wenn module.ko kein geschütztes GKI-Modul ist, wird der Fehler durch Aktualisieren der Symbolliste behoben, indem some_kernel_function in die Symbolliste des Anbieters aufgenommen wird.
Alternativ können Sie die GKI-Version von module.ko verwenden.
2. Unsigniertes Modul, das das geschützte Symbol exportiert
Fehler:
module: exports protected symbol some_kernel_function
Ursache:
Das Modul, das some_kernel_function exportiert, ist ein geschütztes GKI-Modul und module.ko ist wahrscheinlich eine signaturlose benutzerdefinierte Version dieses Moduls. Wenn module.ko versucht, some_kernel_function zu exportieren, das nur von einem signierten GKI-Modul exportiert werden kann, schlägt das Laden mit dieser Meldung fehl.
Lösung:
Wenn das signaturlose Modul eine benutzerdefinierte Version ist, kann das Problem durch Verwendung der GKI-Version des Moduls behoben werden, das some_kernel_function exportiert.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 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."]]