Gerenciamento de módulos do kernel
Este é o terceiro post de uma série de quatro posts onde estou falando especificamente sobre o kernel. Você pode dar uma olhada nos posts anteriores clicando aqui: Entendendo o Kernel – parte 1 e Modulos do kernel.
Um aspecto importante em sistemas modulares, como é o caso do GNU/Linux, é o gerenciamento dos módulos (Drivers) que fazem o “meio campo” entre o sistema operacional e o hardware. Para o gerenciamento dos módulos no linux existem uma série de ferramentas que veremos abaixo.
O comando lsmod
O comando lsmod
lista todos os módulos que estão atualmente carregados na memória, ou seja, estes módulos estão dando suporte a algum dispositivo. Veja abaixo um trecho de exemplo da saída do comando:
Module Size Used by
hci_usb 18460 2
nvidia 8113128 28
i2c_core 27936 1 nvidia
rfkill_input 8576 0
Conforme podemos verificar acima, na saída deste comando temos cinco campos, vejamos abaixo:
Coluna 1: Nome do módulo;
Coluna 2: Tamanho em Kbytes do módulo;
Coluna 3: Indica se existe algum dispositivo utilizando o módulo;
Coluna 4: Indica o número de módulos adicionais que dependem deste módulo (Dependências);
Comando modprobe
O comando modprobe
possui uma série de funções úteis no sistema. Trata-se de um comando multi-funcional, pois de acordo com o parâmetro utilizado faz diversas operações.
Comando: modprobe
“módulo” (carrega o módulo e suas dependências)
Finardi-HP:~# modprobe b43
(carrega o módulo da placa broadcom b43xx)
Comando: modprobe -r "módulo"
(remove o módulo da memória, caso não esteja em uso)
Finardi-HP:~# modprobe -r b43
(remove o módulo da placa broadcom b43xx)
Comando: modprobe -t -l "tipo"
(lista todos os módulos suportados de um certo tipo de dispositivo)
Finardi-HP:~# modprobe -l -t net
(lista os módulos de todas as interfaces de rede suportadas na versão do kernel em uso)
Comando modinfo
O comando modinfo
permite obter informações variadas dos módulos. Segue abaixo alguns exemplos:
Comando: modinfo -a "modulo"
(obtém o nome do autor e responsável pelo módulo)
Finardi-HP:~# modinfo -a b43
Michael Buesch
Stefano Brivio
Martin Langer
Comando: modinfo -p "módulo
” (obtém os parâmetros disponíveis para um módulo)
Finardi-HP:~# modinfo -p b43
btcoex:Enable Bluetooth coexistance (default on)
qos:Enable QOS support (default on)
nohwcrypt:Disable hardware encryption.
hwpctl:Enable hardware-side power control (default off)
fwpostfix:Postfix for the .fw files to load.
bad_frames_preempt:enable(1) / disable(0) Bad Frames Preemption
Comando: modinfo -d "módulo"
(exibe a descrição do módulo)
Finardi-HP:~# modinfo -d 8139too
RealTek RTL-8139 Fast Ethernet driver
Finardi-HP:~# modinfo -d b43
Broadcom B43 wireless driver
Comando rmmod
O comando rmmod
, permite remover um módulo da memória, porém ao contrário do “modprobe
“, este comando apenas remove o módulo sem cuidar de suas dependências:
Finardi-HP:~# rmmod 8139too
(remove o módulo da realtek 8139l da memória)
Comando insmod
O comando insmod
carrega um módulo na memória, mas ao contrário do modprobe
ele somente carrega o módulo, ou seja, não carrega suas dependências.
Finardi-HP:~# insmod 8139too
(carrega o módulo da realtek 8139l na memória)
Comando depmod
Como podemos ver os dois comandos anteriores não verificam as dependências, o comando depmod
verifica todas as dependências dos módulos e cria um arquivo chamado “modules.dep
“. Este arquivo fica na raiz do diretório dos módulos em “/lib/modules/versão do kernel
“. Sempre que adicionamos um novo módulo no kernel, devemos recriar este arquivo com o seguinte comando:
Finardi-HP:/lib/modules/2.6.26-2-amd64# depmod -a
Claro que é recomendável fazer estas operações com o modprobe
pelo fato de ser mais simples, mas caso você seja um cara que gosta de comandos espartanos trabalhe com os outros =D. O post ficou um pouco grande mas acho que deu pra passar o básico sobre gerenciamento de módulos.
Vou ficando por aqui, e que a força esteja com vocês! |-)