Como verificar se um driver específico está carregado no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se um driver específico está carregado no Linux. Drivers, frequentemente implementados como módulos do kernel, são essenciais para interagir com o hardware. Você explorará três métodos para alcançar isso: listar todos os módulos carregados usando lsmod, examinar o arquivo /proc/modules para obter informações detalhadas sobre o status e verificar informações específicas do driver com modinfo.

Ao concluir estas etapas, você adquirirá habilidades práticas na identificação e compreensão do status dos drivers em seu sistema Linux, o que é crucial para solucionar problemas de hardware e administração do sistema.

Listar drivers com lsmod

Nesta etapa, você aprenderá como listar os módulos do kernel atualmente carregados, que são frequentemente referidos como drivers no contexto do hardware. Módulos do kernel são pedaços de código que podem ser carregados e descarregados no kernel conforme necessário, estendendo a funcionalidade do kernel sem exigir uma reinicialização do sistema.

O comando que usaremos é lsmod. Este comando é usado para exibir o status dos módulos no kernel Linux.

Abra seu terminal, caso ainda não esteja aberto. Você pode encontrar o ícone do Xfce Terminal no lado esquerdo da sua área de trabalho.

Digite o seguinte comando e pressione Enter:

lsmod

Você verá uma saída semelhante a esta:

Module                  Size  Used by
...
snd_hda_codec_generic    ...   ...
ledtrig_audio          ...   ...
snd_hda_codec_hdmi     ...   ...
snd_hda_intel          ...   ...
snd_intel_dspcfg       ...   ...
snd_hda_codec          ...   ...   snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel
snd_hda_core           ...   ...   snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_hwdep              ...   ...   snd_hda_codec
snd_pcm                ...   ...   snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core,snd_hwdep
snd_seq_midi           ...   ...
snd_seq_midi_event     ...   ...   snd_seq_midi
snd_rawmidi            ...   ...   snd_seq_midi,snd_seq_midi_event
snd_seq                ...   ...   snd_seq_midi,snd_seq_midi_event
snd_seq_device         ...   ...   snd_seq_midi,snd_rawmidi,snd_seq
snd_timer              ...   ...   snd_pcm,snd_seq
snd                    ...   ...   snd_hda_codec_generic,ledtrig_audio,snd_hda_codec_hdmi,snd_hda_intel,snd_intel_dspcfg,snd_hda_codec,snd_hda_core,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer
soundcore              ...   ...   snd
...

A saída de lsmod tem três colunas:

  • Module: O nome do módulo do kernel.
  • Size: O tamanho do módulo em bytes.
  • Used by: Uma lista de outros módulos que estão usando este módulo e o número de vezes que ele está sendo usado.

Este comando é muito útil para ver quais drivers estão atualmente ativos em seu sistema.

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

Verificar o status do driver com cat /proc/modules

Nesta etapa, você explorará outra maneira de visualizar informações sobre os módulos do kernel carregados, examinando o arquivo /proc/modules. O sistema de arquivos /proc é um sistema de arquivos virtual que fornece informações sobre processos e outras informações do sistema.

O arquivo /proc/modules contém informações semelhantes à saída de lsmod, mas em um formato ligeiramente diferente. Usaremos o comando cat para exibir o conteúdo deste arquivo.

Digite o seguinte comando em seu terminal e pressione Enter:

cat /proc/modules

Você verá uma saída semelhante a esta:

snd_hda_codec_generic ... ... - Live 0xffffffff...
ledtrig_audio ... ... - Live 0xffffffff...
snd_hda_codec_hdmi ... ... - Live 0xffffffff...
snd_hda_intel ... ... - Live 0xffffffff...
snd_intel_dspcfg ... ... - Live 0xffffffff...
snd_hda_codec ... ... snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel, Live 0xffffffff...
snd_hda_core ... ... snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec, Live 0xffffffff...
snd_hwdep ... ... snd_hda_codec, Live 0xffffffff...
snd_pcm ... ... snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core,snd_hwdep, Live 0xffffffff...
snd_seq_midi ... ... - Live 0xffffffff...
snd_seq_midi_event ... ... snd_seq_midi, Live 0xffffffff...
snd_rawmidi ... ... snd_seq_midi,snd_seq_midi_event, Live 0xffffffff...
snd_seq ... ... snd_seq_midi,snd_seq_midi_event, Live 0xffffffff...
snd_seq_device ... ... snd_seq_midi,snd_rawmidi,snd_seq, Live 0xffffffff...
snd_timer ... ... snd_pcm,snd_seq, Live 0xffffffff...
snd ... ... snd_hda_codec_generic,ledtrig_audio,snd_hda_codec_hdmi,snd_hda_intel,snd_intel_dspcfg,snd_hda_codec,snd_hda_core,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer, Live 0xffffffff...
soundcore ... ... snd, Live 0xffffffff...
...

As colunas em /proc/modules representam:

  1. Nome do módulo
  2. Tamanho do módulo
  3. Número de vezes que o módulo está sendo usado
  4. Se o módulo está carregado (Live) ou sendo descarregado (Loading ou Unloading)
  5. Deslocamento de memória do módulo (esta é a parte 0xffffffff...)
  6. Módulos dependentes (semelhante à coluna "Used by" em lsmod)

Embora lsmod seja geralmente o comando preferido para visualizar módulos carregados, entender que essa informação também está disponível no sistema de arquivos /proc é importante para uma introspecção mais profunda do sistema.

Clique em Continuar para prosseguir.

Verificar detalhes do driver com modinfo

Nesta etapa, você aprenderá como obter informações detalhadas sobre um módulo específico do kernel usando o comando modinfo. Este comando pode fornecer detalhes como o nome do arquivo do módulo, autor, descrição, licença e parâmetros.

Vamos obter informações sobre o módulo snd_hda_intel, que está relacionado aos drivers de áudio.

Digite o seguinte comando em seu terminal e pressione Enter:

modinfo snd_hda_intel

Você verá uma saída semelhante a esta:

filename:       /lib/modules/.../kernel/sound/hda/snd-hda-intel.ko
description:    Intel HDA driver
license:        GPL v2
srcversion:     ...
alias:          pci:v00008086d0000...sv*sd*bc04sc03i00*
alias:          pci:v00008086d0000...sv*sd*bc04sc01i00*
alias:          pci:v00008086d0000...sv*sd*bc04sc03i00*
...
depends:        snd-hda-codec,snd-pcm,snd-hda-core,snd-hwdep,snd-timer,snd
retpoline:      Y
intree:         Y
name:           snd_hda_intel
vermagic:       ... SMP mod_unload
sig_id:         PKCS#7
signer:         Build time autogenerated kernel key
sig_key:        ...
sig_hashalgo:   sha512
signature:      ...
parm:           bdl_pos_adj:Adjust the BDL position (int)
parm:           probe_mask:Bitmask of codec probe options.
                bit 0: force codec probe
                bit 1: allow probing codecs with basic capabilities
                bit 2: allow probing codecs with no capabilities
                (int)
parm:           enable_msi:Enable MSI (int)
parm:           enable_msix:Enable MSI-X (int)
parm:           model:Use the specified codec model.
                See Documentation/sound/kernel-modules-aliases.txt for details. (charp)
parm:           patch:Load the specified patch file. (charp)
parm:           power_save:Automatic power-saving timeout (in ms, 0 to disable). (int)
parm:           power_save_controller:Controller power-saving timeout (in ms, 0 to disable). (int)
parm:           pm_blacklist:Force non-power-save mode (D0) (bool)
parm:           position_fix:DMA pointer position fix (0, 1, 2) (int)
parm:           probe_only_force:Only probe codecs with force option (bool)
parm:           single_cmd:Use single command to communicate with codecs (bool)
parm:           snoop:Enable/disable snoop mode (bool)
parm:           jackpoll_ms:Polling interval for jack events (in ms, 0 to disable). (int)

Esta saída fornece uma grande quantidade de informações sobre o módulo snd_hda_intel, incluindo sua localização no sistema de arquivos (filename), uma breve descrição, a licença sob a qual ele é distribuído e vários parâmetros que podem ser usados para configurar seu comportamento.

Entender como usar modinfo é crucial para solucionar problemas de driver ou aprender mais sobre as capacidades e opções específicas de um módulo do kernel.

Clique em Continuar para concluir este laboratório.

Resumo

Neste laboratório, você aprendeu como verificar se um driver específico está carregado no Linux. Você começou usando o comando lsmod para listar todos os módulos do kernel atualmente carregados, que são frequentemente referidos como drivers. Este comando fornece informações sobre o nome do módulo, tamanho e quais outros módulos o estão usando.

Você também aprendeu que pode verificar o status dos drivers carregados examinando o conteúdo do arquivo /proc/modules usando o comando cat. Finalmente, você descobriu como usar o comando modinfo para recuperar informações detalhadas sobre um driver específico, como seu nome de arquivo, autor, descrição e parâmetros. Essas etapas fornecem uma abordagem abrangente para verificar a presença e os detalhes dos drivers carregados em seu sistema Linux.