Примерот е тестиран на Linux kernel 2.6.27-14, дистрибуција Ubuntu 8.10
Најпрвен креираме zdravo_narode.c датотеката која треба да ја има следната структура:
#include <linux/module.h> // оваа библиотека е задолжителна и потребна за сите модули
#include <linux/kernel.h> // библиотека потребна за KERN_ALERT
int init_module(void)
{
printk("Zdravo narode!\n");
return 0;
// доколку функцијата init_module врати вредност 0, тоа значи дека модулот не може да се вчита во јадрото.
}
void cleanup_module(void)
{
printk(KERN_ALERT "Zbogum narode!\n");
}
Откако ќе ја креираме zdravo_narode.c датотеката, креираме Makefile датотека со следната структура:
obj-m := zdravo_narode.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
Следен чекор е компајлирање на модулот и негово вметнување во јадрото. За компајлирање на модулот ќе ја користиме make командата која компајлирањето го врши според правилата дефинирани во Makefile датотеката. Отворете Terminal и насочете се кон својот работен директориум каде што ги имате дефинирано zdravo_narode.c и Makefile датотеките и тука извршете ја командата make. Доколку сѐ поминало во најдобар ред треба да добиете порака слична на оваа:
make -C /lib/modules/2.6.27-14-generic/build SUBDIRS=/home/viktor/Desktop/zdravo_narode modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.27-14-generic'
Building modules, stage 2.
MODPOST 1 modules
make[1]: Leaving directory `/usr/src/linux-headers-2.6.27-14-generic'
Откако ќе заврши оваа постапка модулот е искомпајлиран и спремен за да се вметне во јадрото на оперативниот систем, а со тоа во вашиот работен директориум добивте дополнителна датотека zdravo_narode.ko која всушност е нашиот “Zdravo narode!” модул. Вметнувањето на модулот во јадрото се прави со извршување на следната команда:
sudo insmod ./zdravo_narode.ko
За да бидеме сигурни дека модулот е навистина вчитан во јадрото ја извршуваме командата:
lsmod | grep zdravo_narode
И на екран го добиваме името на модулот, неговата големина како и бројот на процеси кои што го користат, нешто слично на ова:
Со вметнувањето на модулот во јадрото се повикува init_module функцијата која во случајов испишува некој дефиниран текст, за да го видeме текстот ја извршуваме следната команда:
Со тоа на екранот треба да добиеме линија слична на оваа:
Jun 9 19:36:11 viktor-laptop kernel: [ 4691.112905] Zdravo narode!
За да го отстраниме модулот од јадрото ја користиме командата:
Бидејќи и функцијата која се повикува кога драјверот се отстранува од јадрото испишува некаков текст, повторно ја извршуваме tail /var/log/syslog командата која ќе ни даде резултат сличен на овај:
Jun 9 19:43:05 viktor-laptop kernel: [ 5105.083288] Zbogum narode!