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
Muito bom ótima postagem parabéns??