Olá Pessoal!
Neste 9 tutorial vamos fazer compilar e adicionar ao kernel linux um modulo de device drivers. Você pode tanto
adiciona-lo estaticamente, compilando os fontes e habilitando a opção
no menu de configuraçao, quanto adicionado como módulo
dinamicamente quando achar necessario. Os passos que faremos são os
mesmo para qualquer arquitertura, lembrando sempre que você deve mudar
os atributos ARCH e CROSS_COMPILE quando tiver uma arquiterura
diferente, falando de ARM, por exemplo, ficaria make ARCH=arm
CROSS_COMPILE=arm-none-linux-genueabi- .
Vamos começar!
Usaremos os fontes de um driver
fornecido chamado simple_char! Que pode ser baixado nos links
abaixo.
Primeiramente use o comando para descomprimir o arquivo
gunzip simple_char.zip
Primeiramente use o comando para descomprimir o arquivo
gunzip simple_char.zip
Feito
isso temos os arquivos:
ioctl.c – Biblioteca de comandos de controle
ioctl.c – Biblioteca de comandos de controle
Makefile
– arquivo de configuraçao da compilação, aqui podemos
especificar path de instalção, qual compilador devera ser
usado.
simple_char.c – fontes do driver
simple_char.c – fontes do driver
simple_ioctl.h
– configuração de ioctl para o driver
simple_load
– shellscript que faz o carregamento do driver no kernel
simple_unload
– shellscript que faz o descarregamento do modulo no kernel
Mova
o driver para uma pasta de sua preferencia e torne o diretorio
corrente.
cd /simple_char
cd /simple_char
dentro
do diretorio chame o comando
make
verificamos o seguinte erro:
Isso se deve que o driver adiciona um no struct do fops um atributo de ioctl utilizado para kernel de versões anteriores a 2.6.36. Para corrigir abra os fonte do simple_char.c
gedit simple_charna linha 287 comente o sequinte codigo:
Feito isso novamente execute o make
make
make
verifique a mensagem confirmando execução e que os arquivos .o foram gerados.
obs: aqui compilamos para x86 mas o procedimento é o mesmo para todas a arquiteturas adicionando somente os paramentros ARCH e CROSS_COMPILE ficaria:
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
feito isso temos o arquivo compilado e vamos adiciona-lo ao kernel usando o shellscript
sudo sh simple_load
para verificar se o modulo esta “online” utilize o lsmod para verificar se ele foi inicializado
lsmodpara remover utilize o script de remoção
sudo sh simple_unload
agora para remove-lo vamos utilizar o script unload
sudo sh simple_unload
sudo sh simple_unload
utilizaremos o comando
lsmod | grep simple_char
para procurar na lista de modulos se o nosso simple_char ainda esta la
confirmando que ele foi removido com sucesso!!!
Abaixo segue video com maiores detalhes do tutorial
bom pessoal por hoje é isso!
Aprendemos a compilar um modulo de acordo com a arquitetura e adiciona-lo ao kernel dinamicamente.
Bom hackeamento do kernel pra vocês e open source na veia!!!
té!













