Auf dieser Seite erfahren Sie, wie Sie eine neue Kernel-Funktion als GKI-Modul konfigurieren oder eine vorhandene integrierte Kernel-Funktion als GKI-Modul konfigurieren.
Konfigurieren Sie eine neue Funktion als GKI-Modul
Bearbeiten Sie für die neue Funktion
gki_defconfig
und setzen Sie das Konfigurationselement der erforderlichen Kernel-Funktion vonn
aufm
(=m
). Legen Sie diese Einstellung sowohl inarch/arm64/configs/gki_defconfig
als aucharch/x86/configs/gki_defconfig
fest.Fügen Sie die für die Funktion generierten KO-Dateien (
.ko
) zum AbschnittCOMMON_GKI_MODULES_LIST
voncommon/modules.bzl
hinzu. Fügen Sie die Dateien in sortierter Reihenfolge hinzu. Wenn Sie sich über alle generierten Dateien nicht sicher sind, schlägt der Build fehl und listet alle erforderlichen KO-Dateien auf, die der Liste hinzugefügt werden müssen.Fügen Sie denselben Satz KO-Dateien aus Schritt 2, in aufsteigender Reihenfolge für die binäre Suche zur Laufzeit sortiert, zu
common/android/gki_{ARCH}_protected_modules
um das Modul als geschütztes GKI-Modul zu kennzeichnen. Aktualisieren Sie die Liste der geschützten Exporte, um diejenigen aus dem neu hinzugefügten Modul incommon/android/abi_gki_protected_exports_{ARCH}
einzuschließen, indem Sietools/bazel run //common:kernel_aarch64_abi_update_protected_exports
füraarch64
verwenden. Module, die als geschützte GKI-Module gekennzeichnet sind, müssen weiterhin von Google als offiziell geschützte Module genehmigt werden.Stellen Sie sicher, dass neu hinzugefügte KO-Dateien aus Schritt 2 in die Dateien
out/<androidX-YZ>/dist/system_dlkm.img
undout/ androidX-YZ /dist/system_dlkm_staging_archive.tar.gz
des Kernels kopiert werden. Module im Archivsystem_dlkm_staging_archive.tar.gz
können als Eingabe zum Generieren vonsystem_dlkm.img
im Plattform-Build verwendet werden.Senden Sie Ihre Änderungen zur Überprüfung. GKI-Module sind eine Kernelfunktion, die nur für Android verfügbar ist. Daher ist es nicht erforderlich, Patches zur Modulkonvertierung vorab einzureichen. Sie müssen jedoch andere Richtlinien befolgen, um ACK-Patches (Android Common Kernel) einzureichen.
Konfigurieren Sie eine im Kernel integrierte Funktion als GKI-Modul
Bearbeiten Sie für eine vorhandene integrierte Kernel-Funktion
gki_defconfig
und setzen Sie das Konfigurationselement der erforderlichen Kernel-Funktion vony
aufm
(=m
). Legen Sie diese Einstellung sowohl inarch/arm64/configs/gki_defconfig
als aucharch/x86/configs/gki_defconfig
fest.Fügen Sie die für die Funktion generierten KO-Dateien (
.ko
) zum AbschnittCOMMON_GKI_MODULES_LIST
voncommon/modules.bzl
hinzu. Fügen Sie die Dateien in sortierter Reihenfolge hinzu. Wenn Sie sich über alle generierten Dateien nicht sicher sind, schlägt der Build fehl und listet alle erforderlichen KO-Dateien auf, die der Liste hinzugefügt werden müssen.Fügen Sie denselben Satz KO-Dateien aus Schritt 2, in aufsteigender Reihenfolge für die binäre Suche zur Laufzeit sortiert, zu
common/android/gki_{ARCH}_protected_modules
um das Modul als geschütztes GKI-Modul zu kennzeichnen. Aktualisieren Sie die Liste der geschützten Exporte, um diejenigen aus dem neu hinzugefügten Modul incommon/android/abi_gki_protected_exports_{ARCH}
einzuschließen, indem Sietools/bazel run //common:kernel_aarch64_abi_update_protected_exports
füraarch64
verwenden. Module, die als geschützte GKI-Module gekennzeichnet sind, müssen weiterhin von Google als offiziell geschützte Module genehmigt werden.Stellen Sie sicher, dass neu konvertierte Modul-KO-Dateien aus Schritt 2 in die Dateien
out/<androidX-YZ>/dist/system_dlkm.img
undout/ androidX-YZ /dist/system_dlkm_staging_archive.tar.gz
des Kernels kopiert werden. Module im Archivsystem_dlkm_staging_archive.tar.gz
können als Eingabe zum Generieren vonsystem_dlkm.img
im Plattform-Build verwendet werden.Senden Sie Ihre Änderungen zur Überprüfung. GKI-Module sind eine Kernelfunktion, die nur für Android verfügbar ist. Daher ist es nicht erforderlich, Patches zur Modulkonvertierung vorab einzureichen. Sie müssen jedoch die anderen Richtlinien befolgen, um Android Common Kernel (ACK)-Patches einzureichen.
Konvertieren Sie ein geschütztes GKI-Modul in ein ungeschütztes
Entfernen Sie das Modul, das von geschützt in ungeschützt konvertiert werden soll, aus der Liste der geschützten Module unter
common/android/gki_protected_modules
.Aktualisieren Sie die Liste der geschützten Exporte, um diejenigen aus dem neu konvertierten ungeschützten Modul im
common/android/abi_gki_protected_exports_{ARCH}
auszuschließen, indem Sietools/bazel run //common:kernel_aarch64_abi_update_protected_exports
füraarch64
verwenden.Senden Sie Ihre Änderungen zur Überprüfung. GKI-Module sind eine Kernelfunktion, die nur für Android verfügbar ist. Daher ist es nicht erforderlich, Patches zur Modulkonvertierung vorab einzureichen. Sie müssen jedoch die anderen Richtlinien befolgen, um Android Common Kernel (ACK)-Patches einzureichen.
Kurzanleitung zur Behebung von Symbolverstößen in GKI-Modulen
Wenn nicht signierte Module den für GKI-Module geltenden Symbolschutz verletzen, können beim Laden des Moduls zwei Arten von Fehlern auftreten, die zu einem Fehler führen.
1. Nicht signiertes Modul mit dem geschützten Symbol
Fehler:
module: Protected symbol: some_kernel_function (err -13)
Ursache:
Die Datei module.ko
ist ein nicht signiertes Anbietermodul und versucht, das vom GKI-Modul exportierte Symbol some_kernel_function
während des Ladens aufzulösen, ohne in der Anbietersymbolliste aufgeführt zu sein.
Auflösung:
Wenn module.ko
kein geschütztes GKI-Modul ist, wird der Fehler durch Aktualisieren der Symbolliste behoben, indem some_kernel_function
in die Anbietersymbolliste 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 die some_kernel_function
exportiert, ist ein geschütztes GKI-Modul und module.ko
ist wahrscheinlich eine nicht signierte benutzerdefinierte Version dieses Moduls. Wenn module.ko
versucht, some_kernel_function
zu exportieren, was nur von einem signierten GKI-Modul exportiert werden kann, schlägt das Laden mit dieser Meldung fehl.
Auflösung:
Dies kann durch die Verwendung der GKI-Version des Moduls behoben werden, das some_kernel_function
exportiert, wenn das unsignierte Modul eine benutzerdefinierte Version ist.