Plus précisément, le problème est que lorsque vous avez créé votre module, l'arborescence des sources du noyau manquait probablement le fichier Modules.symvers. Le système kbuild vous en avertit lorsque vous créez votre module. Si Modules.symvers est manquant, vous verrez:
Avertissement: le vidage de la version du symbole /usr/src/linux-2.6.34-12/Modules.symvers est manquant; les modules n'auront ni dépendances ni modifications.
Si votre noyau est CONFIG_MODVERSIONS
activé, alors pendant la phase modpost de construction de votre pilote, il exécutera scripts / mod / modpost avec l'option -m. Si vous êtes courageux et jetez un oeil à la source scripts / mod / modpost.c , vous verrez que l'option -m ajoute le symbole _module_layout_ de vmlinux, cependant si vous n'avez pas Modules.symvers de votre noyau, vous n'obtiendrez pas la valeur CRC pour ce symbole et vous vous retrouverez avec ce message d'erreur.
Il y a donc deux façons de contourner cela.
1) exécutez une version complète de votre noyau en cours d'exécution pour générer Modules.symvers, puis reconstruisez votre module. [http://www.mjmwired.net/kernel/Documentation/kbuild/modules.txt 3/10]
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) L'autre option est de dire à stupide modprobe d'ignorer toutes ces conneries et de charger votre module de toute façon:
modprobe -f <module>
J'ai tendance à privilégier l'option 2 :)