Insbesondere ist das Problem, dass beim Erstellen des Moduls im Kernelquellbaum wahrscheinlich die Datei "Modules.symvers" fehlte. Das kbuild-System warnt Sie tatsächlich davor, wenn Sie Ihr Modul erstellen. Wenn Modules.symvers fehlt, wird Folgendes angezeigt:
Warnung: Die Symbolversion dump /usr/src/linux-2.6.34-12/Modules.symvers fehlt. Module haben keine Abhängigkeiten und Modifikationen.
Wenn Ihr Kernel CONFIG_MODVERSIONS
aktiviert ist, wird er während der Modpost-Phase Ihres Treibers scripts / mod / modpost mit der Option -m ausführen . Wenn Sie mutig sind und einen Blick auf die Quelle scripts / mod / modpost.c werfen , werden Sie feststellen , dass die Option -m das Symbol _module_layout_ aus vmlinux hinzufügt. Wenn Sie jedoch keine Modules.symvers aus Ihrem Kernel haben, Sie erhalten den CRC-Wert für dieses Symbol nicht und erhalten am Ende diese Fehlermeldung.
Es gibt also zwei Möglichkeiten, dies zu umgehen.
1) Führen Sie einen vollständigen Build Ihres laufenden Kernels aus, um Modules.symvers zu generieren, und erstellen Sie dann Ihr Modul neu. [http://www.mjmwired.net/kernel/Documentation/kbuild/modules.txt[1]
51 === 2. How to Build External Modules
52
53 To build external modules, you must have a prebuilt kernel available
54 that contains the configuration and header files used in the build.
55 Also, the kernel must have been built with modules enabled. If you are
56 using a distribution kernel, there will be a package for the kernel you
57 are running provided by your distribution.
58
59 An alternative is to use the "make" target "modules_prepare." This will
60 make sure the kernel contains the information required. The target
61 exists solely as a simple way to prepare a kernel source tree for
62 building external modules.
63
64 NOTE: "modules_prepare" will not build Module.symvers even if
65 CONFIG_MODVERSIONS is set; therefore, a full kernel build needs to be
66 executed to make module versioning work.
2) Die andere Möglichkeit ist, dummem modprobe mitzuteilen, dass er den ganzen Mist einfach ignorieren und das Modul trotzdem laden soll:
modprobe -f <module>
Ich neige dazu, Option 2 zu bevorzugen :)