Всем добрый день! Пытаюсь добавить новый модуль в ядро ubuntu по иструкции из книги Linux Device Drivers.
Не получается как вы догадались.
текст модуля (имя файла W.c)
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE(«Dual BSD/GPL»);
static int hello_init(void)
{ printk(KERN_ALERT «Hello, world\n»);
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT «Goodbye, cruel world\n»);
}
module_init(hello_init);
module_exit(hello_exit);
Текст make файла:
obj-m += W.o all: make -C /lib/modules/5.15.0-58-generic/build M=$(shell pwd) modules clean: make -C /lib/modules/5.15.0-58-generic/build M=$(shell pwd) clean
uname -r возвращает 5.15.0-58-generic
В папке usr/src следующее: linux-headers-5.15.0-46-generic linux-headers-5.4.0-137-generic linux-headers-5.15.0-58-generic linux-hwe-5.15-headers-5.15.0-58 linux-headers-5.4.0-137
sudo make отрабатывает.
sudo insmod W.ko выдает ошибку insmod: ERROR: could not insert module ./W.ko: Invalid module format dmesg | tail -1 выдает следующее: [ 5747.495112] module: x86/modules: Skipping invalid relocation target, existing value is nonzero for type 1, loc 00000000eabb6063, val ffffffffc097501d
Помогите разобраться что не так