O que são módulos do kernel?

Módulos são pedaços de código que podem ser carregados e descarregados do kernel em tempo de execução, sem precisar reiniciar. Drivers de dispositivos, sistemas de arquivos e protocolos de rede são geralmente implementados como módulos.

lsmod: listando módulos carregados

O lsmod/proc/modules e formata a saída:

lsmod
Module                  Size  Used by
vfat                   20480  1
fat                    86016  1 vfat
ext4                  1052672  2
mbcache                16384  1 ext4
jbd2                  147456  1 ext4
snd_hda_intel          57344  2
snd_hda_codec         172032  1 snd_hda_intel

A coluna Used by mostra dependências. Você não pode remover um módulo que está sendo usado por outro.

Dica: Use lsmod | grep -i nome para filtrar rapidamente. Exemplo: lsmod | grep -i usb.

modinfo: detalhes de um módulo

Para ver informações detalhadas como autor, licença, parâmetros e dependências:

modinfo ext4
filename:       /lib/modules/6.8.0-45-generic/kernel/fs/ext4/ext4.ko
license:        GPL
description:    Fourth Extended Filesystem
author:         Remy Card, Stephen Tweedie, Andrew Morton...
depends:        mbcache,jbd2
parm:           max_dir_size_kb:Maximum size of a directory (uint)

Para ver apenas os parâmetros disponíveis:

modinfo -p ext4

modprobe: carregar módulos

O modprobe carrega um módulo e resolve dependências automaticamente:

sudo modprobe vfat

Isso carrega tanto vfat quanto sua dependência fat. Compare com insmod, que exige o caminho completo e não resolve dependências.

Carregar com parâmetros

sudo modprobe snd_hda_intel power_save=1

rmmod: remover módulos

sudo rmmod vfat

Se o módulo estiver em uso, você verá um erro:

rmmod: ERROR: Module ext4 is in use
Dica: Use modprobe -r vfat em vez de rmmod. O modprobe -r também remove dependências que não são mais necessárias.

/etc/modprobe.d/: configuração persistente

Arquivos .conf nesse diretório controlam o comportamento dos módulos:

Bloquear um módulo (blacklist)

sudo tee /etc/modprobe.d/blacklist-nouveau.conf <<EOF
blacklist nouveau
options nouveau modeset=0
EOF

Definir opções padrão

sudo tee /etc/modprobe.d/snd.conf <<EOF
options snd_hda_intel power_save=1 power_save_controller=Y
EOF

Após alterar arquivos em /etc/modprobe.d/, reconstrua o initramfs:

sudo update-initramfs -u

Módulos carregados no boot

Para garantir que um módulo seja carregado automaticamente no boot, adicione seu nome em /etc/modules-load.d/:

echo "br_netfilter" | sudo tee /etc/modules-load.d/br_netfilter.conf

Verifique quais módulos estão configurados para carregar no boot:

cat /etc/modules-load.d/*.conf

Resumo dos comandos

# Listar módulos carregados
lsmod

# Informações sobre um módulo
modinfo ext4

# Carregar módulo (com dependências)
sudo modprobe vfat

# Remover módulo (com dependências)
sudo modprobe -r vfat

# Blacklist permanente
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf

# Carregar no boot
echo "br_netfilter" | sudo tee /etc/modules-load.d/br_netfilter.conf