Am scris un modul de nucleu simplu pentru a imprima mesajul Hello kernel.
modulul_meu.c
#include <linux/module.h>
#include <linux/init.h>
/* Metainformații */
MODULE_LICENSE("GPL");
MODULE_AUTHOR("BHAGWAT");
MODULE_DESCRIPTION("UN MODUL HELLO WORLD");
/*această funcție este apelată când modulul este încărcat în nucleu*/
static int __init ModuleInit(void)
{
printk("Bună ziua, kernel!\n");
întoarce 0;
}
/*această funcție este apelată când modulul este eliminat din kernel*/
static void __exit ModuleExit(void)
{
printk("La revedere, nucleu");
}
module_init(ModuleInit);
module_exit(ModuleExit);
Makefile
obj-m += modulul_meu.o
toate:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) module
curat:
face -C /lib/modules/$(shell uname -r)/build M=$(PWD) curat
când introduc modulul primesc mesajul tipărit în jurnalele kernelului, dar când elimin modulul, mesajul nu este tipărit. Când introduc din nou modulul, se imprimă două mesaje, unul pentru ultima ieșire a modulului și altul pentru încărcarea modulului. De ce mesajul de ieșire din modul este tipărit mai târziu când introduc modulul, dar nu și când îl scot.
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo insmod my_module.ko
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | coadă
[ 24.595403] rfkill: handler de intrare activat
[ 30.244336] rfkill: handler de intrare dezactivat
[ 145.426767] my_module: verificarea modulului a eșuat: semnătura și/sau cheia necesară lipsesc - nucleul contaminat
[ 145.427022] Bună ziua, kernel!
[ 217.026559] La revedere, kernel
[ 498.489388] Bună ziua, kernel!
[ 524.139613] La revedere, kernel
[ 528.270128] Bună ziua, kernel!
[ 577.360611] La revedere, kernel
[ 587.700237] Bună ziua, kernel!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo rmmod my_module
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | coadă
[ 24.595403] rfkill: handler de intrare activat
[ 30.244336] rfkill: handler de intrare dezactivat
[ 145.426767] my_module: verificarea modulului a eșuat: semnătura și/sau cheia necesară lipsesc - nucleul contaminat
[ 145.427022] Bună ziua, kernel!
[ 217.026559] La revedere, kernel
[ 498.489388] Bună ziua, kernel!
[ 524.139613] La revedere, kernel
[ 528.270128] Bună ziua, kernel!
[ 577.360611] La revedere, kernel
[ 587.700237] Bună ziua, kernel!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo insmod my_module.ko
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | coadă
[ 145.426767] my_module: verificarea modulului a eșuat: semnătura și/sau cheia necesară lipsesc - nucleul contaminat
[ 145.427022] Bună ziua, kernel!
[ 217.026559] La revedere, kernel
[ 498.489388] Bună ziua, kernel!
[ 524.139613] La revedere, kernel
[ 528.270128] Bună ziua, kernel!
[ 577.360611] La revedere, kernel
[ 587.700237] Bună ziua, kernel!
[ 667.900373] La revedere, kernel
[ 676.245356] Bună ziua, kernel!
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ sudo rmmod my_module
bhagwat@bhagwat:~/bhagwatws/Personal/device_driver$ dmesg | coadă
[ 145.426767] my_module: verificarea modulului a eșuat: semnătura și/sau cheia necesară lipsesc - nucleul contaminat
[ 145.427022] Bună ziua, kernel!
[ 217.026559] La revedere, kernel
[ 498.489388] Bună ziua, kernel!
[ 524.139613] La revedere, kernel
[ 528.270128] Bună ziua, kernel!
[ 577.360611] La revedere, kernel
[ 587.700237] Bună ziua, kernel!
[ 667.900373] La revedere, kernel
[ 676.245356] Bună ziua, kernel!