Создание игрушечного модуля ядра Linux

создаём какую нить временную папку и заходим туда

mkdir mod; cd mod

открываем в vim е новый файл и пишем туда код на Си

vim my_mod.c

#include  // содержит объявление функций module_init и module_exit
#include // содержит объявление функции printk
#include // содержит объявление макроса MODULE_LICENSE
MODULE_LICENSE("GPL");
static int __init hello_in(void)
{
printk("Привет мир! из пространства ядра...\n");
return 0;
}
static void __exit hello_out(void)
{
printk("Пока мир, выхожу из пространства ядра...\n");
}
module_init(hello_in);
module_exit(hello_out);

сохраняем и закрываем :wq

теперь создадим Makefile для сборки модуля

echo obj-m += my_mod.o > Makefile

теперь компилируем его, текущее ядро или заголовки должны быть установлены

make -C /usr/src/linux-`uname -r` SUBDIRS=$PWD modules

в итоге в текущей папке получаем кучу файлов среди которых нужный нам модуль ядра my_mod.ko

Загружаем и выгружаем модуль в ядро:

sudo insmod my_mod.ko

sudo rmmod my_mod.ko

чтобы увидеть результат взгляните в сообщения ядра

dmesg | tail

atl1 0000:02:00.0: tx busy
Привет мир! из пространства ядра...
Пока мир, выхожу из пространства ядра..

спасибо автору http://mczim-debian.blogspot.com/2008/01/linux-kernel-module-programming.html

Комментариев 0
Нужна авторизация с помощью
Об авторе
Илья Илья

меня можно найти тут