Зокрема, проблема полягає в тому, що при створенні модуля у дереві джерела ядра, ймовірно, відсутній файл Modules.symvers. Система kbuild насправді попереджає вас про це під час створення модуля. Якщо Modules.symvers відсутній, ви побачите:
Попередження: відсутня версія dump /usr/src/linux-2.6.34-12/Modules.symvers; модулі не матимуть залежностей і модифікацій.
Якщо ваше ядро CONFIG_MODVERSIONS
увімкнено, то під час фази модпості побудови драйвера він запускатиме скрипти / mod / modpost з опцією -m. Якщо ви хоробрі і погляньте на джерело script / mod / modpost.c , ви побачите, що опція -m додає символ _module_layout_ з vmlinux, однак якщо у вас немає ядра Modules.symvers зі свого ядра, ви не отримаєте значення CRC для цього символу, і ви отримаєте повідомлення про помилку.
Тож існує два шляхи навколо цього.
1) запустіть повну збірку вашого запущеного ядра для створення Modules.symvers, а потім відновіть модуль. [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) Інший варіант полягає в тому, щоб сказати дурному modprobe просто ігнорувати все це лайно і просто все-таки завантажувати ваш модуль:
modprobe -f <module>
Я схильний вибирати варіант 2 :)