Я написал простой модуль ядра для печати Hello kernel msg.
my_module.c
#include <linux/module.h>
#include <linux/init.h>
/* Метаинформация */
MODULE_LICENSE("GPL");
MODULE_AUTHOR("БХАГВАТ");
MODULE_DESCRIPTION("МОДУЛЬ ПРИВЕТ, МИР");
/*эта функция вызывается при загрузке модуля в ядро*/
статический интервал __init ModuleInit (пустой)
{
printk("Привет, ядро!\n");
вернуть 0;
}
/*эта функция вызывается при удалении модуля из ядра*/
статическая пустота __exit ModuleExit (пустота)
{
printk("До свидания, ядро");
}
модуль_инит (ModuleInit);
module_exit(ModuleExit);
Makefile
obj-m += my_module.o
все:
make -C /lib/modules/$(shell uname -r)/сборка модулей M=$(PWD)
чистый:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) очистить
когда я вставляю модуль, я печатаю сообщение в журналах ядра, но когда я удаляю модуль, сообщение не печатается. Когда я снова вставляю модуль, печатаются два сообщения: одно для выхода из последнего модуля, а другое для загрузки модуля. Почему сообщение о выходе из модуля печатается позже, когда я вставляю модуль, а не при удалении модуля.
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo insmod my_module.ko
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | хвост
[ 24.595403] rfkill: включен обработчик ввода
[ 30.244336] rfkill: обработчик ввода отключен
[145.426767] my_module: проверка модуля не удалась: подпись и/или требуемый ключ отсутствуют - заражение ядра
[ 145.427022] Привет, ядро!
[ 217.026559 ] Прощай, ядро
[498.489388] Привет, ядро!
[ 524.139613 ] Прощай, ядро
[ 528.270128] Привет, ядро!
[ 577.360611 ] Прощай, ядро
[ 587.700237] Привет, ядро!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo rmmod my_module
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | хвост
[ 24.595403] rfkill: включен обработчик ввода
[ 30.244336] rfkill: обработчик ввода отключен
[145.426767] my_module: проверка модуля не удалась: подпись и/или требуемый ключ отсутствуют - заражение ядра
[ 145.427022] Привет, ядро!
[ 217.026559 ] Прощай, ядро
[498.489388] Привет, ядро!
[ 524.139613 ] Прощай, ядро
[ 528.270128] Привет, ядро!
[ 577.360611 ] Прощай, ядро
[ 587.700237] Привет, ядро!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo insmod my_module.ko
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | хвост
[145.426767] my_module: проверка модуля не удалась: подпись и/или требуемый ключ отсутствуют - заражение ядра
[ 145.427022] Привет, ядро!
[ 217.026559 ] Прощай, ядро
[498.489388] Привет, ядро!
[ 524.139613 ] Прощай, ядро
[ 528.270128] Привет, ядро!
[ 577.360611 ] Прощай, ядро
[ 587.700237] Привет, ядро!
[ 667.900373 ] Прощай, ядро
[ 676.245356] Привет, ядро!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo rmmod my_module
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | хвост
[145.426767] my_module: проверка модуля не удалась: подпись и/или требуемый ключ отсутствуют - заражение ядра
[ 145.427022] Привет, ядро!
[ 217.026559 ] Прощай, ядро
[498.489388] Привет, ядро!
[ 524.139613 ] Прощай, ядро
[ 528.270128] Привет, ядро!
[ 577.360611 ] Прощай, ядро
[ 587.700237] Привет, ядро!
[ 667.900373 ] Прощай, ядро
[ 676.245356] Привет, ядро!