[Eisfair] Kernel-Module kompilieren

Daniel Vogel daniel_vogel at t-online.de
Sa Jul 6 00:17:18 CEST 2024


Hallo Uwe,

Am 28.06.24 um 18:24 schrieb Uwe Kunze:
>> sh ./scripts/modules-check.sh modules.order
>> make -f ./scripts/Makefile.build obj=scripts scripts/module.lds
>> make -f ./scripts/Makefile.modpost
>>    sed 's/\.ko$/\.o/' modules.order | scripts/mod/modpost    -o modules-only.symvers -i vmlinux.symvers   -T -
>> ERROR: modpost: "kmem_cache_alloc" [lib/lru_cache.ko] undefined!
>> ERROR: modpost: "kmalloc_caches" [lib/lru_cache.ko] undefined!
>> ERROR: modpost: "__kmalloc" [lib/lru_cache.ko] undefined!
>> ERROR: modpost: "kmem_cache_size" [lib/lru_cache.ko] undefined!
>> ERROR: modpost: "seq_putc" [lib/lru_cache.ko] undefined!
>> ERROR: modpost: "__x86_indirect_thunk_ecx" [lib/lru_cache.ko] undefined!
>> ERROR: modpost: "kfree" [lib/lru_cache.ko] undefined!
>> ERROR: modpost: "kmem_cache_free" [lib/lru_cache.ko] undefined!
>> ERROR: modpost: "seq_printf" [lib/lru_cache.ko] undefined!
>> ERROR: modpost: "memset" [lib/lru_cache.ko] undefined!
>> WARNING: modpost: suppressed 108156 unresolved symbol warnings because there were too many)
>> make[2]: *** [scripts/Makefile.modpost:133: modules-only.symvers] Error 1
>> make[2]: *** Deleting file 'modules-only.symvers'
>> make[1]: *** [Makefile:1826: modules] Error 2
>> make: *** [Makefile:298: vboxdrv] Error 2

das sind (zumindest in den meisten Fällen) Symbole von 
Kernel-Funktionen, die nicht aufgelöst werden können. Leider kann ich zu 
dem virtualbox Thema selbst nichts sagen, habe aber ein paar 
Beispiel-Module von hier übersetzt:

https://github.com/hamjam/lkmpg-examples/tree/master

und auch einmal gezielt z.B. den Funktionsaufruf kfree() eingebaut. Der 
Code ist zwar veraltet und musste mit MODULE_LICENSE() Informationen 
versehen werden, hat sich dann aber klaglos (und ohne Umbenennung 
irgendwelcher Dateien) übersetzen lassen.

Ich könnte mir vorstellen, dass auch dieses Problem mit der Auswertung 
der symvers Datei zu tun hat. Baust Du das Modul für die Kernel-Version, 
die gerade ausgeführt wird? In dem Fall ist kein switch_config Aufruf 
erforderlich, da dies bei der Installation automatisch geschieht.

Wenn Du mir eine Möglichkeit aufzeigst, wie ich möglichst schnell Dein 
Problem nachstellen kann, dann kann ich es mir mal anschauen.

-- 
Gruß Daniel
[eisfair-Team]



Mehr Informationen über die Mailingliste Eisfair