Я сделал внешний модуль Linux, и поскольку моему модулю нужен символ ядра Linux,
Я установил конфиг Modversion и сделал его. (Также сделал modules_install)
Мой модуль был сделан именно в lib/modules/(мой linux)/extra/
Но когда я вставляю свой модуль, оболочка выводит сообщение об ошибке
insmod: ERROR: could not insert module oxen_aggregator_module.ko: Invalid module format
Это содержимое dmesg
[ 341.458351] oxen_aggregator_module: version magic '3.17.8-gentoo-r1 SMP mod_unload modversions ' should be '3.17.8-gentoo-r1 SMP mod_unload '
Но мне нужен флаг modversions, потому что, если бы я не установил этот флаг, у Module.symvers было бы только 0x00000000 адресов.
Не могли бы вы помочь мне? Как я могу решить?
Мой файл Make
SRCS = oxen_aggregator_module.c
OBJS = $(SRCS:.c=.o)
obj-m += $(OBJS)
KBUILD_EXTRA_SYMBOLS={/usr/src/linux-$(shell unamr -r)/Module.symvers}
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules_install
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
$(RM) Module.markers modules.order
make
,make modules_install
,make install
в каталоге с исходным кодом). - person Tsyvarev   schedule 20.05.2015Module.symvers
ядра используется автоматически. Затем, после очистки каталога вашего модуля, попробуйте пересобрать модуль. Кстати, ваш модуль не размещен в дереве ядра, не так ли? - person Tsyvarev   schedule 01.06.2015