Antes de ir em frente verifique se você possui os fontes do kernel devidamente instalado e configurado em sua máquina. Para detalhes veja o material de como compilar o seu kernel na sessão FAQ.
shell> vi olamundo.c
#include <linux/init.h>
#include <linux/module.h>
static int __init olamundo_init(void)
{
printk(KERN_DEBUG "Ola Mundo!\n");
return 0;
}
static void __exit olamundo_exit(void)
{
printk(KERN_DEBUG "Tchau!\n");
}
MODULE_AUTHOR("Nome do autor ");
MODULE_DESCRIPTION("Exibe a string Ola Mundo!");
MODULE_LICENSE("GPL");
module_init(olamundo_init);
module_exit(olamundo_exit);
ATENÇÃO: Utilize a tecla TAB ao invés da tecla ESPAÇO para espaços
# Diretório de módulos do Kernel
KDIR := /lib/modules/$(shell uname -r)/build
# Objeto
obj-m = olamundo.o
# Regra default do Makefile
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
@rm -rf *.mod* Module.symvers *.o *~ *.markers *.order
# Limpando objetos e afins
clean:
@rm -rf *~ *.o *.ko
shell> mkdir meus-modulos
shell> cp Makefile olamundo.c meus-modulos
shell> cd meus-modulos
shell> make
shell>sudo insmod ./olamundo.ko
shell> dmesg
shell>rmmod olamundo
shell> dmesg
O módulo olamundo define duas funções, uma para ser chamada quando o módulo é carregado no kernel (olamundo_init) e outra quando o módulo é removido do kernel (olamundo_exit). Note as macros __init e __exit explicitamente nas funções. As linhas module_init e module_exit são macros que indicam as funções que serão carregadas ao iniciar ou remover o módulo.
A macro MODULE_LICENSE é usada para informar a licença do módulo.
A função printk é similar a tradicional função em C printf e irá exibir as mensagens "Ola Mundo" e "Tchau"
A string KERN_DEBUG informa que as mensagens serão de debug.
Este módulo foi desenvolvido baseado na versão 2.6.X do kernel
Comentários
Well, that
Well, that seems