#include
int init_module(void)
{
printk("<1> Ola Mundo!\n");
return 0;
}
void cleanup_module(void)
{
printk("<1> Tchau :)\n");
}
Para o desenvolvimento de um Linux Kernel Module (LKM) é necessário incluir o arquivo de cabeçalho “module.h” que possui várias definições essenciais para o módulo. Duas funções devem ser obrigatoriamente definidas: init_module (função de inicialização do módulo) e cleanup_module (função de remoção do módulo). A função printk é a substituta de printf, pois não é possível utilizar as bibliotecas que normalmente são usadas em aplicações no nível de usuário (MORAES, 2005).
Para compilar o módulo, é usado um esquema de compilação fornecido pelo núcleo chamado “kbuild”. Na sequencia é apresentado um exemplo de Makefile que deve ser criado no mesmo diretório do código-fonte do módulo. Ele ajusta algumas variáveis e fará o uso de um Makefile mais complexo que já vem com o núcleo. Este Makefile mais complexo se encontra no mesmo diretório onde estão armazenados os módulos do núcleo (/lib/modules/versao_do_nucleo/build) onde “versao_do_nucleo” é a versão atual do núcleo no sistema. No Makefile sugerido, a versão do núcleo é buscada através da ferramenta “uname” que serve para imprimir informações sobre o sistema, neste caso o parâmetro usado “-r” vai imprimir a versão do núcleo.
obj-m += ola.o
all:
make -C /lib/modules/`uname -r`/build M=`pwd` modules
clean:
make -C /lib/modules/`uname -r`/build M=`pwd` clean
Finalmente é possível compilar o módulo com o comando “make”. Caso tudo esteja certo, será gerado o módulo com a extensão “.ko” (kernel object). Se as ferramentas do pacote “module-init-tools” estiverem instaladas, o módulo pode ser carregado com o comando “insmod ola.ko”, listado com “lsmod” e removido com “rmmod ola”. As mensagens de log podem ser verificadas com o comando “dmesg”.
ou no arquivo /var/log/messages
ResponderExcluirAlguem comentou algo !
ResponderExcluir