Listar e Inspecionar Módulos do Kernel com lsmod e modinfo
Nesta etapa, você aprenderá como listar os módulos do kernel carregados atualmente e inspecionar seus detalhes. O kernel do Linux é modular, o que significa que partes de sua funcionalidade podem ser carregadas ou descarregadas sob demanda. Essas partes carregáveis dinamicamente são chamadas de módulos do kernel e geralmente correspondem a drivers de dispositivos, drivers de sistemas de arquivos ou chamadas de sistema.
Primeiro, vamos visualizar o status de todos os módulos do kernel carregados no momento no kernel do seu sistema. O comando lsmod fornece uma lista limpa e legível. Como a lista pode ser bastante longa, enviaremos sua saída para o utilitário less para facilitar a navegação.
Execute o seguinte comando no seu terminal:
lsmod | less
Você verá uma lista de módulos. A saída é organizada em três colunas: Module, Size e Used by.
- Module: O nome do módulo do kernel.
- Size: O tamanho do módulo em bytes.
- Used by: O número de outros módulos ou processos que utilizam este módulo no momento, seguido por uma lista dos módulos dependentes.
Sua saída será semelhante a esta:
Module Size Used by
nls_iso8859_1 16384 1
nls_cp437 20480 1
vfat 20480 1
fat 69632 1 vfat
...
Você pode percorrer a lista usando as teclas de seta. Pressione q para sair do visualizador less e retornar ao prompt de comando.
Agora que você sabe como listar módulos, vamos obter informações detalhadas sobre um específico. O comando modinfo exibe vários detalhes sobre um módulo do kernel, como o nome do arquivo, licença, descrição, autor e dependências.
Vamos inspecionar o módulo parport, que está relacionado à porta paralela.
modinfo parport
O comando exibirá informações detalhadas sobre o módulo parport.
filename: /lib/modules/x.x.x-xx-generic/kernel/drivers/parport/parport.ko
license: GPL
description: Parallel port driver
author: Philip Blundell, Tim Waugh, Grant Grundler
srcversion: <some_version_string>
depends:
retpoline: Y
intree: Y
vermagic: x.x.x-xx-generic SMP mod_unload
sig_id: ...
signer: ...
sig_key: ...
sig_hashalgo: ...
signature: ...
Esta saída informa a localização exata do arquivo do módulo (arquivo .ko), sua licença, uma breve descrição e muito mais. Observe que o campo depends está vazio, indicando que este módulo não possui dependências.
Muitas vezes, os módulos dependem de outros módulos. O comando depmod cria uma lista de dependências de módulos analisando os módulos em /lib/modules/$(uname -r). Isso permite que o sistema carregue automaticamente os módulos necessários. Vamos gerar este arquivo de dependência. Este comando requer privilégios de root, por isso usaremos sudo.
sudo depmod
Este comando normalmente não produz saída ao ser concluído com sucesso. Ele cria ou atualiza um arquivo chamado modules.dep no diretório de módulos do kernel. A parte $(uname -r) do caminho é uma substituição de comando que insere a versão atual do seu kernel.
Agora, vamos visualizar o arquivo de dependência que você acabou de criar.
less /lib/modules/$(uname -r)/modules.dep
Este arquivo contém uma lista de módulos e suas dependências, que é usada por ferramentas que gerenciam módulos automaticamente. Você pode pressionar q para sair do less.