Como verificar se um módulo do kernel está carregado no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar o status dos módulos do kernel no Linux. Você explorará três métodos essenciais: listar os módulos atualmente carregados usando lsmod, verificar se um módulo pode ser carregado e suas dependências sem realmente carregá-lo usando modprobe --dry-run, e visualizar informações detalhadas sobre um módulo específico com modinfo. Essas técnicas são cruciais para entender quais componentes do kernel estão ativos e gerenciar as dependências dos módulos em seu sistema.

Listar módulos carregados com lsmod

Nesta etapa, você aprenderá como listar os módulos do kernel atualmente carregados usando o comando lsmod.

O kernel Linux é o núcleo do sistema operacional. Ele gerencia os recursos do sistema e fornece uma ponte entre o hardware e o software. Os módulos do kernel são pedaços de código que podem ser carregados e descarregados no kernel sob demanda. Eles estendem a funcionalidade do kernel sem exigir uma reinicialização do sistema. Isso é particularmente útil para adicionar suporte a novos hardwares ou sistemas de arquivos.

Para ver quais módulos estão atualmente carregados no kernel, abra seu terminal e digite o seguinte comando:

lsmod

Pressione Enter.

Você verá uma lista de módulos, seus tamanhos e quantos outros módulos os estão usando. A saída será semelhante a esta (a lista exata variará dependendo do sistema e dos drivers carregados):

Module                  Size  Used by
fuse                  143360  3
snd_seq_midi           20480  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_rawmidi            40960  1 snd_seq_midi
snd_seq                77824  3 snd_seq_midi,snd_seq_midi_event,snd_rawmidi
snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
... (many more lines)

Vamos detalhar as colunas:

  • 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 que estão atualmente usando este módulo. Se este número for 0, o módulo não está sendo usado por nenhum outro módulo no momento.

Este comando é essencial para entender quais drivers e componentes do kernel estão ativos em seu sistema.

Agora, tente executar o comando lsmod em seu terminal.

Clique em Continuar para prosseguir para a próxima etapa.

Verificar o status do módulo com modprobe --dry-run

Nesta etapa, você aprenderá como usar o comando modprobe com a opção --dry-run para verificar se um módulo pode ser carregado e de quais outros módulos ele depende, sem realmente carregá-lo.

O comando modprobe é usado para adicionar ou remover módulos do kernel Linux. Ele é mais sofisticado do que os comandos mais antigos insmod e rmmod porque entende as dependências dos módulos. Quando você tenta carregar um módulo com modprobe, ele carregará automaticamente quaisquer outros módulos que o módulo solicitado exigir.

A opção --dry-run é muito útil para testes. Ela diz ao modprobe para passar pelo processo de resolução de dependências e verificar se o módulo pode ser carregado, mas não carregará o módulo no kernel. Isso permite que você veja se há algum problema ou dependência ausente antes de fazer alterações no sistema em execução.

Vamos tentar verificar o status de um módulo comum, por exemplo, o módulo fuse, que é frequentemente usado para sistemas de arquivos em espaço do usuário (user-space filesystems).

Digite o seguinte comando em seu terminal:

modprobe --dry-run fuse

Pressione Enter.

Se o módulo fuse e suas dependências estiverem disponíveis, você poderá ver uma saída semelhante a esta:

modprobe: INFO: could not insert 'fuse': File exists

Esta saída indica que o módulo fuse provavelmente já está carregado (como visto na etapa anterior com lsmod), e modprobe está relatando que não pode inseri-lo novamente porque ele já existe. A opção --dry-run ainda realiza a verificação de dependência mesmo que o módulo já esteja carregado.

Se o módulo não estivesse carregado e pudesse ser carregado, a saída poderia estar vazia ou indicar os módulos que seriam carregados. Se houvesse problemas, modprobe os relataria aqui.

Usar --dry-run é uma maneira segura de testar o carregamento do módulo sem afetar o estado do seu sistema.

Agora, tente executar o comando modprobe --dry-run fuse você mesmo.

Clique em Continuar para prosseguir.

Visualizar detalhes do módulo com modinfo

Nesta etapa, você aprenderá como obter informações detalhadas sobre um módulo específico do kernel usando o comando modinfo.

Enquanto lsmod mostra quais módulos estão carregados, modinfo fornece muito mais detalhes sobre um arquivo de módulo, esteja ele carregado ou não. Essas informações incluem o autor do módulo, descrição, licença, parâmetros e dependências.

Vamos usar modinfo para inspecionar o módulo fuse novamente.

Digite o seguinte comando em seu terminal:

modinfo fuse

Pressione Enter.

Você verá uma saída abrangente sobre o módulo fuse, semelhante a esta:

filename:       /lib/modules/5.15.0-113-generic/kernel/fs/fuse/fuse.ko
license:        GPL
description:    Filesystem in Userspace
author:         Miklos Szeredi <miklos@szeredi.hu>
alias:          devname:fuse
alias:          char-major-10-229
alias:          fs-fuse
depends:
retpoline:      Y
intree:         Y
name:           fuse
vermagic:       5.15.0-113-generic SMP mod_unload modversions
sig_id:         PKCS#7
signer:         Ubuntu Kernel Module Signing Authority
sig_key:        ...
sig_hashalgo:   sha512
signature:      ...
parm:           max_user_bgreq:Maximum number of pending background requests (uint)
parm:           max_user_cong_req:Maximum number of pending congested background requests (uint)
parm:           max_user_inline_write:Maximum size of inline write data (uint)

Vamos analisar alguns dos campos-chave:

  • filename: O caminho para o arquivo do módulo no sistema de arquivos.
  • license: A licença sob a qual o módulo é distribuído (por exemplo, GPL).
  • description: Uma breve descrição do que o módulo faz.
  • author: O(s) autor(es) do módulo.
  • depends: Uma lista de outros módulos dos quais este módulo depende.
  • parm: Informações sobre os parâmetros que podem ser passados para o módulo quando ele é carregado para modificar seu comportamento.

modinfo é uma ferramenta inestimável para solucionar problemas relacionados a módulos ou simplesmente aprender mais sobre os componentes do seu kernel Linux.

Agora, tente executar o comando modinfo fuse você mesmo para ver os detalhes do módulo fuse.

Clique em Continuar para finalizar este laboratório.

Resumo

Neste laboratório, você aprendeu como verificar o status dos módulos do kernel no Linux. Você começou usando o comando lsmod para listar todos os módulos do kernel atualmente carregados, compreendendo as colunas de saída que mostram o nome do módulo, tamanho e contagem de uso.

Em seguida, você explorou o comando modprobe com a opção --dry-run para simular o carregamento de um módulo e identificar suas dependências sem realmente carregá-lo. Finalmente, você aprendeu como usar o comando modinfo para visualizar informações detalhadas sobre um módulo específico do kernel, incluindo sua descrição, autor, licença e parâmetros. Esses comandos são ferramentas fundamentais para gerenciar e solucionar problemas de módulos do kernel em um sistema Linux.