Módulos no Linux – lsmod, insmod, rmmod, modprobe, modinfo

Sabemos que Linux é apenas o Kernel, ou seja, o programa principal, o núcleo. O kernel juntamente com outros muitos  programas que o complementa forma o sistema operacional. Já houve e até hoje há muita briga a respeito de como se chamar o sistema operacional: apenas Linux ou GnuLinux?

Voltando ao tema, O que são módulos em Linux, iremos considerar Linux como sendo apenas o Kernel.

Mas o que São Módulos?

Linux é um Kernel Monolítico, ou seja, um programa único, uma peça única. Assim, para fazermos uma alteração, melhoria, teríamos que configurar e fazer um novo kernel que englobe essas melhorias e então inserir esse novo Kernel dentro do nosso sistema. Imagina fazer isso para milhares e milhares de alterações que temos todos os dias? Para isso se criou os módulos.

Módulos são pedaços de códigos que podem ser carregados ou descarregados dinamicamente pelo sistema operacional, nesse caso o Gnu/Linux, conforme a necessidade. Algumas pessoas usam o termo “sob demanda” para se referir à esse carregamento e descarregamento conforma à necessidade.

Módulos são pedaços de códigos que podem ser vinculados como links no kernel depois que o kernel é carregado.

Uma vez que o módulo é carregado ele faz parte do kernel como qualquer outro código interno do kernel. O módulo tem as mesmas permissões e responsabilidades como qualquer código do kernel, em outras palavras: Módulos do kernel pode travar o kernel como qualquer outro código ou drivers podem.

Localização dos Módulos

Geralmente são encontrados dentro de pastas com nomes como lib ou lib64. Podemos ver módulo para ntfs do windows dentro de  “/lib/modules/4.15.0-142-generic/…“, por exemplo:

elder@ubuntu18:~$ ls  /lib/modules/4.15.0-142-generic/kernel/fs/ntfs/
ntfs.ko

podemos ver que o módulo termina com “.ko”

 

Listando Módulos no Linux

Para visualizarmos os módulos carregados podemos usar o comando lsmod

elder@ubuntu18:~$ lsmod
Module                  Size  Used by
input_leds             16384  0
joydev                 24576  0
serio_raw              16384  0
vboxvideo              36864  1
ttm                   106496  1 vboxvideo
snd_intel8x0           40960  0
drm_kms_helper        172032  1 vboxvideo
snd_ac97_codec        131072  1 snd_intel8x0
ac97_bus               16384  1 snd_ac97_codec
snd_pcm                98304  2 snd_intel8x0,snd_ac97_codec
drm                   401408  4 drm_kms_helper,vboxvideo,ttm
snd_timer              32768  1 snd_pcm
snd                    81920  4 snd_intel8x0,snd_timer,snd_ac97_codec,snd_pcm
vboxguest             294912  0
soundcore              16384  1 snd

Acima temos módulos de som: snd_pcm, snd, soundcore..

A coluna “Used By” mostra outros quem está usando os módulos. Temos, por exemplo, o módulo snd sendo usando por outros 4 módulos:  snd_intel8x0,snd_timer,snd_ac97_codec,snd_pcm

Carregando Módulo com insmod

Os módulos são carregados automaticamente pelo sistema operacional, mas se quisermos carregar um podemos usar insmod. insmod é uma abreviação para insert module.

Vamos inserir o módulo ntfs:

elder@ubuntu18:~$ sudo insmod  /lib/modules/4.15.0-142-generic/kernel/fs/ntfs/ntfs.ko

Veja o módulo carregado:

elder@ubuntu18:~$ lsmod  | grep ntfs
ntfs                  102400  0

 

Usando modprobe

modprobe é uma ferramenta mais avançada que insmod. Além disso essa ferramenta serve não apenas para inserir mas também faz todas as demais funções de rmmod, modinfo…

Aqui não há necessidade de digitarmos o caminho completo da localização do módulo e também se um módulo necessita de outros esses serão carregados automaticamente

elder@ubuntu18:~$ sudo modprobe ntfs

 

modprobe possui algumas opções:

  • modprobe -a: carrega todos os módulos
  • modprobe -c: exibe uma configuração completa do módulo
  • modprobe -l: lista módulos
  • modprobe -r: remove módulos
  • modprobe -s: direciona o que apareceria na tela para o programa de logs(rsyslog).

 

Removendo um Módulo com rmmod

Para remover basta digitarmos o nome do módulo

elder@ubuntu18:~$ sudo rmmod ntfs

 

Exibindo Informações do Módulo com modinfo

Usamos modinfo para vermos informações do módulo

elder@ubuntu18:~$ modinfo ntfs
filename:       /lib/modules/4.15.0-142-generic/kernel/fs/ntfs/ntfs.ko
license:        GPL
version:        2.1.32
description:    NTFS 1.2/3.x driver - Copyright (c) 2001-2014 Anton Altaparmakov and Tuxera Inc.
author:         Anton Altaparmakov <anton@tuxera.com>
alias:          fs-ntfs
srcversion:     F77940A1804A287D80B439D
depends:        
retpoline:      Y
intree:         Y
name:           ntfs
vermagic:       4.15.0-142-generic SMP mod_unload modversions 
signat:         PKCS#7
signer:         
sig_key:        
sig_hashalgo:   md4

modinfo possui algumas opções:

  • modinfo -a:  exibe o autor/criador do módulo.
  • modinfo -d: exibe a descrição
  • modinfo -p: exibe parâmetros suportados pelo módulo

 

 

Conclusão

Aqui seria melhor se fizéssemos outro artigo ou colocássemos modprobe destacado nesse post visto que ele é uma ferramenta que engloba todas as outras citadas e mais fácil e automatizada quanto à dependências. Mas assim como está distribuído o texto nesse post não tira a essência: entender o funcionamento.

Fontes: tldp.org

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

One Comment to “Módulos no Linux – lsmod, insmod, rmmod, modprobe, modinfo”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *