Проблема с запуском Linux-модуля Hello World

Я пытаюсь скомпилировать и запустить модуль «Hello World» из книги «Драйверы устройств Linux». Программа ~/ldd3/hello.c, которую я пытаюсь скомпилировать, выглядит следующим образом:

/*                                                     
 * $Id: hello.c,v 1.5 2004/10/26 03:32:21 corbet Exp $ 
 */                                                    
#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);

И 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, компиляция выглядит нормально:

root@deb:/home/deb/ldd3# make
make -C /lib/modules/4.14.86/build M=/home/deb/ldd3 modules
make[1]: Entering directory '/home/deb/src/linux-4.14.86'
  Building modules, stage 2.
  MODPOST 1 modules
make[1]: Leaving directory '/home/deb/src/linux-4.14.86'

Но когда я бегу:

root@deb:/home/deb/ldd3# insmod ./hello.ko
root@deb:/home/deb/ldd3#

сообщение «Hello World» не печатается. Я также не получаю сообщение, когда я запускаю

rmmod hello

Ты можешь сказать мне, почему? Спасибо


person korppu73    schedule 10.12.2018    source источник


Ответы (1)


Чтобы увидеть сообщения ядра, вы можете использовать dmesg. Кроме того, вы можете просмотреть системный журнал tail var/log/syslog.

person Floris Stoica-Marcu    schedule 10.12.2018