@mtrue

Почему простейший модуль linux kernel ломается с ошибкой Invalid parameters при загрузке insmod?

Пытаюсь собрать и загрузить в ядро простейший hello world модуль для linux kernel. Компиляция проходит успешно, но вот insmod постоянно ломается с сообщением об ошибке:
$ sudo insmod hello.ko
insmod: ERROR: could not insert module hello.ko: Invalid parameters


Но ведь в моем модуле нет никаких параметров :(
Я перепробовал миллион разных hello world-ов, и которые используют /proc, и printk, и даже /dev. Все равно результат один - Invalid parameters.

Мое окружение:
$ uname -r
3.16.0-4-amd64


Я установил все возможные заголовки kernel:
linux-headers-3.16.0-4-all
linux-headers-3.16.0-4-all-amd64
linux-headers-3.16.0-4-amd64
linux-headers-3.16.0-4-common
linux-headers-amd64


Код модуля:
#include <linux/module.h>   /* Needed by all modules */
#include <linux/kernel.h>   /* Needed for KERN_INFO */

int init_module(void)
{
    printk(KERN_INFO "Hello world 1.\n");
    return 0;
}

void cleanup_module(void)
{
    printk(KERN_INFO "Goodbye world 1.\n");
}

MODULE_LICENSE("GPL");


Makefile:
obj-m += hello.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean


Вывод команды `make`:
make -C /lib/modules/3.16.0-4-amd64/build M=/home/user/c.driver/driver-1 modules
make[1]: Entering directory '/usr/src/linux-headers-3.16.0-4-amd64'
Makefile:10: *** mixed implicit and normal rules: deprecated syntax
make[1]: Entering directory `/usr/src/linux-headers-3.16.0-4-amd64'
CC [M] /home/user/c.driver/driver-1/hello.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/user/c.driver/driver-1/hello.mod.o
LD [M] /home/user/c.driver/driver-1/hello.ko
make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-4-amd64'


UPD: Аналогичная ситуация и с Ubuntu 14.04.
  • Вопрос задан
  • 802 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы