Comandos para gerenciar módulos no Linux

Nesse post, vou falar sobre os comandos que utilizamos para gerenciar módulos no Linux. Mas antes de falar sobre os comandos, é necessário saber qual a função do kernel e o que são os módulos.

Em qualquer sistema operacional (isso inclui windows😛 ), o kernel é o coração do sistema. É ele quem vai interagir com o hardware, gerenciar comunicação entre processos, gerenciar swap, entre outras funções.

Não confundam o kernel com uma distribuição. A distribuição é um Linux empacotado com kernel e aplicativos que vão desde clientes de e-mail a ferramentas de programação e desenvolvimento.

Quando um sistema (Debian, Ubuntu, Slackware, e outros…) é instalado, ele vem com uma configuração genérica, desenhada para executar a maior parte dos programas na maioria dos dispositivos de hardware. Como o kernel deve ser funcional para rodar em qualquer PC e suportar os principais recursos que o usuário pretende utilizar, o desenvolvedor da distro compila um kernel built-in; isto é, um kernel que fornece as funcionalidades básicas e conhece a maior parte dos drivers de dispositivos.Isso que dizer que, mesmo que não esteja usando o driver, ele já está no ar, pronto para ser usado a qualquer momento.

Algumas vezes precisamos acrescentar suporte para um novo dispositivo; para não recompilar o kernel,a cada novo hardware adicionado ao sistema; utilizamos os módulos. Módulos, nada mais são do partes do kernel, carregadas em memória quando solicitadas por algum programa ou dispositivo, e descarregadas quando não estiverem mais em uso.

Os módulos do kernel residem no diretório /lib/modules/<versão_do_kernel>; sendo que <versão_do_kernel> é a versão do kernel instalada no sistema. Caso queira conferir a versão atual, podemos usar o comando uname com a opção -r:

# uname -r
2.6.26-2-686

O comando uname exibe informações sobre o sistema, tais como arquitetura, versão do kernel, etc. Para demais opções do comando, consulte o manual:

# man uname

Bem, determinamos a versão do kernel; para entrar no diretório de módulos dessa versão, executamos:

# cd /lib/modules/2.6.26-2-686/

Ou então:

# cd /lib/modules/$(uname -r)

No comando acima, antes de entrar no diretório /lib/modules, o shell irá substituir o comando que está em parênteses pela versão do kernel. Lembrando que as duas formas para entrar no diretório de módulos está correta… é você quem escolhe qual prefere utilizar!

Sabendo onde os módulos residem no sistema, vamos agora conhecer os comandos usados para gerenciar módulos.

Comando lsmod

Para verificar os módulos estão carregados, usamos o comando lsmod. Vejam abaixo um exemplo de saída do comando:

# lsmod

Module                  Size  Used by
ipv6                  235364  12
loop                   12748  0
ext3                  105512  2
libata                140416  1 ata_generic

Vejam que a saída do comando lsmod é em colunas; é listado todos módulos que estão carregados em memória, inclusive os que não estão em uso. Onde:

Module – exibe o nome do módulo

Size – exibe em bytes, o tamanho da memória do módulo

Used by – exibe a contagem de quantas instâncias do módulo estão carregadas e o módulo que está usando; os valores são importantes porque não podemos remover um módulo que esteja sendo usado, a não ser que nesse campo, o valor seja zero. Também exibe se o módulo depende de outro para funcionar, mostrando o nome do módulo que ele depende.

Também é possível verificar os módulos carregados consultando o arquivo /proc/modules; aliás, o comando lsmod consulta esse arquivo e formata a saída para exibir quais módulos estão carregados. Abaixo, um exemplo de conteúdo do /proc/modules:

# cat /proc/modules
ipv6 235364 12 – Live 0xc8a18000
loop 12748 0 – Live 0xc88f2000
ext3 105512 2 – Live 0xc894b000
libata 140416 1 ata_generic, Live 0xc8902000

A saída do comando é o mesmo resultado que do lsmod, mas com duas colunas a mais. A coluna Live, mostra o estado do módulo, que pode ser: Live (módulo carregado na memória), Loading ou Unloading (esses dois estados acontecem quando usamos os comandos insmod e rmmod).

A última coluna, mostra o valor de memória reservada para o módulo quando é iniciado. Esses valores são úteis para fazer debug no kernel.

Comando insmod

O comando insmod carrega um módulo no kernel; é utilizado para habilitar um dispositivo ou uma funcionalidade; por exemplo, adicionar uma placa de rede ou então habilitar o suporte a um novo sistema de arquivos.

Sua sintaxe é:

# insmod nome_do_módulo

Um detalhe do comando insmod, é que ele insere o módulo de forma manual. Isso quer dizer que, se o módulo depende de outro para que seja carregado, é necessário primeiro resolver a dependência para depois sim, subir o módulo propriarmente dito.

Comando rmmod

Remove um módulo carregado. Sua sintaxe é:

# rmmod nome_do_modulo

O comando rmmod não remove módulos que possuam dependência; caso tente remover um módulo que tenha dependência, irá acusar erro.

Comando modprobe

O comando modprobe é o responsável por carregar um módulo e suas dependências. Assim como o comando insmod, também é utilizado para habilitar um dispositivo ou uma funcionalidade.A sintaxe do comando é:

# modprobe nome_módulo

Podemos usar o comando modprobe para listar os módulos disponíveis em /lib/modules/. Para isso, basta utilizar a opção -l:

# modprobe -l

O comando modprobe também pode ser utilizado para remover módulos. Diferente do comando rmmod, ele remove os módulos e suas dependências. Para executar essa ação, basta usar a opção -r:

# modprobe -r nome_do_módulo

Comando depmod

O comando depmod checa as dependências dos módulos. O resultado dessa checagem é gravado no arquivo /lib/modules/versão_kernel/modules.dep. Para fazer a checagem, usamos o comando com a opção -a, que checa todos os módulos:

# depmod -a

Comando modinfo

O comando modinfo exibe informações sobre um módulo, tais como parâmetros que um módulo aceita, dependências, descrição, etc. Sua sintaxe é:

# modinfo nome_do_módulo

Bem nesse post apenas falei sobre os comandos e suas funções! No próximo post, vou mostrar exemplos de uso desses comandos configurando dispositivos em modo texto. Até lá!🙂

Referências:

Using Kernel Customization Tools
https://ldn.linuxfoundation.org/node/12626

/proc/modules
http://bit.ly/NdfGx

Kernel e Módulos
http://focalinux.cipsga.org.br/guia/inic_interm/ch-kern.html

13 Responses to “Comandos para gerenciar módulos no Linux”


  1. 1 Cristiano 29/01/2010 às 10:25 AM

    Adorei a documentação !!!
    parabéns, continue assim !!!
    beijao

  2. 2 Osmar 30/03/2010 às 4:32 PM

    $ ismod | grep usbserial !!como faz?
    Porfavor seja destalhisda pois ;não conseguido colocar esse executar esse comando!
    eu digito isso td no shell e no conseguoo ndr

    • 3 Nix 04/04/2010 às 2:39 PM

      Osmar, o comando para listar módulos é o lsmod. Para listar um módulo específico como você quer fazer, execute:

      $ lsmod | grep usbserial

      O comando acima listará o módulo para o driver usb.

  3. 4 Alexandre 10/06/2010 às 2:05 PM

    Eu não consigo executar o comando # lsmod no meu terminal.Alguém poderia me ajudar?Eu uso Ubuntu 10.4 lucid Lynx.O que eu eu sei é que o comando vem precedido de uma cequilha,o que aponta a entrada no terminal com sudo su(root).Por que não consigo executar o comando?

    • 5 Nix 10/06/2010 às 6:58 PM

      Alexandre,
      Nos meus posts, quando aparece um comando precedido por “#”, é apenas para indicar que se trata de um comando.
      Se você digitar no terminal “# lsmod” exatamente como coloquei entre as aspas, o bash vai não te mostrar nada porque para ele, tudo que venha com um # na frente de um comando, se trata de um comentário.
      Experimente digitar apenas lsmod, e você verá o comando executado😉

      []’s

  4. 6 Alexandre 10/06/2010 às 10:36 PM

    Nix deu certinho!!!Obrigado!Vc é uma gatinha!!Pelo pouco que estou vendo o seu blog é de tudo né?É a primeira vez que entro nele.Uma pergunta:Pelo pouco que eu sei o modulo é o equivalente ao driver do Windows certo?Como procedo para instalar os modulos haja visto que o comando que vc citou(ismod)é a instalação manual?Como procedo para que o Kernel instale os modulos(de áudio,rede)que eu preciso automaticamente?É porque o técnico que instalou o Ubuntu pra mim disse que ao instala-lo o som não saia e nem a rede reconhecia.Valeu vou acompanhar mais post seus.Thau.

    • 7 Nix 10/06/2010 às 10:55 PM

      Oi Alexandre!
      Que legal que deu certo… e obrigada pelo comentário! O blog é meio doido… rsrs fala um pouco de cada coisa e tudo misturado!
      Bem, sobre sua pergunta… sim, módulos no Linux são como os drivers no windows.
      O comando insmod carrega o módulo manualmente na memória… o comando modprobe, carrega automaticamente as dependências, se houver.
      Tem um arquivo, o /etc/modules, onde você pode colocar os módulos… que daí, vc não precisa carregar manualmente, ja ira subir automaticamente no boot.
      Humm, sobre o kernel não reconhecer automaticamente a rede e o som, é estranho… porque o Lucid esta com um kernel bem atualizado que reconhece praticamente tudo… mas existe também a lei de murphy😛
      Bom, mas de qualquer forma, o /etc/modules é o local onde você irá colocar os módulos que irão subir no boot😉
      E aqui nesse post, tem algumas dicas para configuração de áudio e rede em modo texto: https://ivanix.wordpress.com/2009/07/26/configurando-audio-e-rede/

      []’s

  5. 8 Hugo Luiz 16/02/2011 às 12:58 AM

    Parabéns pela didática com escrita simples e ideias complexas.
    Grato,

    muito bom mesmo

  6. 9 Dalson 17/03/2012 às 11:54 AM

    Muito bom o post!!! muito mesmo e muito claro tb!! Valew

  7. 10 luisantoniofessel 20/05/2012 às 2:44 PM

    Gostei muito deste post, mas o que realmente estava procurando era como instalar a placa de Captura/TV/FM PixelView BT878 PlayTV pro no UBUNTU/KUBUNTU, pois todos os posts que encontrei até agora, nenhum funcionou aki. Uso o UBUNTU 9.04 e o KUBUNTU 11.10.
    Se você puder me ajudar, agradecerei imensamente. Se não, o agradecimento já vai por aki.
    luis_fessel@yahoo.com.br

    • 11 Nix 03/06/2012 às 3:34 PM

      Olá Luis,

      Obrigada pelo comentário e pela visita ao blog. Infelizmente, não sei como configurar a placa de captura, mas, boa sorte🙂.

      []’s
      Nix

  8. 12 Igor Marcel 06/03/2014 às 8:28 PM

    Parabéns pelo post muito bem explicado ajudou muito, continue postando artigos vc explica de forma clara e objetiva.


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




Follow Nix on WordPress.com
julho 2009
S T Q Q S S D
« jun   ago »
 12345
6789101112
13141516171819
20212223242526
2728293031  

Flickr Photos

Morning Silence

Mais fotos

%d blogueiros gostam disto: