У меня есть простой модуль Linux, который я хочу собрать и вставить в ядро, но у меня возникли проблемы с частью «sudo insmod <module_name>».
Ubuntu работает на хосте Win10 через VirtualBox.
Два других друга проделали те же шаги, и у них это сработало.
У одного версия ядра 5.11.0-40, а у другого такая же, как у меня, 5.11.0-41.
Модуль linux_module.c выглядит так:
#include <linux/kernel.h>
#include <linux/module.h>
MODULE_LICENSE("GPL");
__init int init_module(пусто)
{
printk (KERN_INFO "Привет, мир из linux_module\n");
вернуть 0;
}
__exit недействительным cleanup_module (недействительным)
{
}
Makefile:
объект-м =
obj-m += linux_module.o
KVERSION = $(имя оболочки -r)
модули все:
make -C /lib/modules/$(KVERSION)/сборка модулей M=$(PWD)
чистый:
make -C /lib/modules/$(KVERSION)/build M=$(PWD) очистить
Использование «сделать все» возвращает мне это:
make -C /lib/modules/5.11.0-41-generic/build M=/home/soberflow/Documents/BS/KernelModule/LinuxModule модули
make[1]: Вход в каталог '/usr/src/linux-headers-5.11.0-41-generic'
CC [M] /home/soberflow/Documents/BS/KernelModule/LinuxModule/linux_module.o
MODPOST /home/soberflow/Documents/BS/KernelModule/LinuxModule/Module.symvers
CC [M] /home/soberflow/Documents/BS/KernelModule/LinuxModule/linux_module.mod.o
LD [M] /home/soberflow/Documents/BS/KernelModule/LinuxModule/linux_module.ko
make[1]: Выход из каталога '/usr/src/linux-headers-5.11.0-41-generic'
Я получаю следующую ошибку:
insmod: ОШИБКА: не удалось вставить модуль linux_module.ko: неверный формат модуля
С 'modprobe <имя_модуля>' он говорит следующее:
modprobe: FATAL: модуль linux_module.ko не найден в каталоге /lib/modules/5.11.0-41-generic
Кто-нибудь знает, в чем проблема?