Módulos do Kernel no Linux
Módulos do Kernel no Linux
Módulos são arquivos-objeto, parte do kernel, que são vinculados a ele em tempo de execução.
Um módulo no linux é um código, geralmente drivers de dispositivos que podem ser carregados e descarregados sem a necessidade de reiniciar o sistema.
Os módulos podem ser inseridos e removidos em um kernel em execução a qualquer tempo, exceto quando em uso.
Os drivers de dispositivos podem ser inseridos na forma de módulos do Kernel.
Os arquivos de drivers geralmente terminam com a extensão .ko (ou .o) e são armazenados em subdiretórios dentro de /lib/modules
Ferramentas para Gerenciamento de Módulos
Listamos abaixo algumas ferramentas usadas para gerenciamento de módulos no Linux:
Ferramenta | Função |
depmod | Trabalha com dependências dos módulos |
insmod | Carrega módulos em um kernel em execução |
lsmod | Lista informações sobre módulos carregados |
modinfo | Lista informações sobre um módulo |
modprobe | Carrega, descarrega e gera relatórios em módulos, e trata de suas dependências |
rmmod | Descarrega módulos de um kernel em execução |
Vamos estudar cada ferramenta separadamente agora.
Comando lsmod
Mostra o status dos módulos carregados atualmente no Kernel do Linux. Muito útil para ajudar a identificar problemas no sistema.
As informações retornadas pelo comando lsmod são encontradas no arquivo /proc/modules.
Sintaxe:
# lsmod
Exemplo:
# lsmod
Veja no exemplo acima que a listagem nos traz quatro colunas, contendo respectivamente o nome do módulo, seu tamanho, contador de uso e módulos que usam o módulo especificado. Note os módulos USB listados.
Comando lsdev
Exibe informações sobre o hardware do sistema, como as portas de I/O e endereços IRQ.
O comando lsdev não vem instalado por padrão em muitas distribuições do Linux. Para usá-lo, instale antes o pacote procinfo.
Esse comando listará os nomes dos dispositivos, DMA, IRQ e portas de entrada e saída usadas por eles.
Exemplo:
# lsdev
Comando lspci
Exibir informações sobre os dispositivos PCI do sistema.
Sintaxe:
lspci [opções]
Algumas opções:
-v Modo verboso, mostrando informações detalhadas sobre todos os dispositivos.
-t Mostra um diagrama em formato de árvore, contendo todos os barramentos, bridges, dispositivos e conexões entre eles.
Exemplo:
# lspci
Comando insmod
Programa que permite inserir (“instalar”) um módulo no Kernel do Linux.
É preferível usar o programa modprobe para esse fim, pois verifica e carrega dependências automaticamente, coisa que o insmod não faz.
Sintaxe:
insmod [módulo] [opções]
Opções comuns:
-f Forçar o carregamento do módulo mesmo que sua versão não seja compatível com a do Kernel do sistema.
-p Testa para ver se o módulo pode ser carregado corretamente.
-v Ativa o modo verboso (com mais detalhes).
-V Mostra a versão do insmod
Exemplo:
Vamos inserir o módulo fat no sistema. Para isso vamos descobrir primeiro qual a versão do kernel usada com o comando uname -r:
# uname -r
A versão retornada foi a 3.2.0-4-486. No seu sistema pode ser outra.
Dentro do diretório /lib/modules há um diretório com o nome de sua versão do kernel. Vamos usar esse diretório para inserir um módulo no kernel. Emita o comando a seguir que contém o caminho completo para o módulo desejado:
# insmod /lib/modules/3.2.0-4-486/kernel/fs/fat/fat.ko
Substitua a versão do kernel pela usada no seu sistema. Se o módulo for inserido com sucesso, não aparecerá nenhuma mensagem na tela, apenas o prompt de comandos.
Para verificar se funcionou, emita novamente o comando lsmod (use | less para ver a saída paginada, uma tela por vez):
# lsmod | less
Veja o módulo fat carregado logo na primeira linha da saída do comando.
Comando rmmod
Programa que permite remover um módulo do Kernel do Linux.
Sintaxe:
rmmod [opções] [módulo]
Opções comuns:
-f, –force Forçar a remoção do módulo, incluindo módulos em uso e módulos que não deveriam ser removidos dos sistema. Cuidado com essa opção!!!
-V, –version Mostra a versão do comando rmmod
-s Enviar erros para o syslog, em vez da saída de erro padrão stdout (veremos mais para frente o que significam).
Exemplo:
– Remover o módulo nfs do sistema (não apresentará nada no terminal):
# rmmod nfs
Verifique na sequência que o módulo nfs não está presente na listagem geral:
# lsmod
Comando modinfo
Traz informações sobre um módulo específico. As informações podem incluir o caminho do módulo no sistema, licença, dependências, autor, descrição, etc.
Sintaxe:
modinfo {opções] [nome_módulo]
Exemplo:
Exibir informações sobre o módulo fat:
# modinfo fat
Mostrar apenas a licença usada pelo módulo:
# modinfo -l fat
Mostrar apenas o nome do arquivo com o caminho completo:
# modinfo -n fat
Comando modprobe
Permite inserir módulos no sistema com funcionalidades adicionais, e também remover módulos (com a opção -r). Leva em consideração as dependências (outros módulos e bibliotecas requeridas pelo módulo inserido).
Sintaxe:
modprobe [opções] [módulos]
Opções comuns:
-r Remover um ou mais módulos
–show-depends Lista as dependências de um módulo, incluindo o módulo em si.
-v Mostra informações sobre o que o programa está fazendo.
Exemplos:
Inserir o módulo msdos (insira antes o módulo fat; verifique depois com lsmod | less):
# modprobe msdos
Remover os módulos msdos e fat ao mesmo tempo:
# modprobe -r msdos fat
Mostrar as dependências do módulo cdrom:
# modprobe --show-depends cdrom
Vimos neste artigo alguns comandos relacionados a módulos do Linux. Este assunto é parte do tópico 101 da certificação Linux LPIC-1. Em breve abordaremos mais assuntos relativos à certificação.
Olá, muito bom o material simples e bem didático.
Parabéns para vc e toda sua equipe.
Alias é possível acrescentar o Mercado Pago nas opções de doações?
Grato
Olá
Não estou conseguindo usar os comandos insmod, modprobe. Estou usando o debian buster que quando entro com esses comandos retorna com a tela de ajuda do kmod. Porém só aparece disponíveis dois comandos com o kmod – list e static-node. Logo só consigo ver os módulos porém não consigo carrega-los ous descarrega-los (como por exemplo os comandos insmod e modprobe). É preciso instalar algum pacote ?