Создание игрушечного модуля ядра 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

похожие страницы

  1. Установка VirtulaBox на Ubuntu с нестандартным ядром
  2. Установка Slackware13 на LVM
  3. Перенос ядра из другого дистрибутива
  4. Установка WiFi карты D-Link DWA-525 в Ubuntu 10.04
  5. Сравнение производительности Linux, Windows и MacOS

#1:

Инклудов не видать. Исправьте в тексте поста "" & "" на "<" & ">"

ответить  2009-10-28 22:57:49