Como carregar e descarregar módulos do kernel no Linux
Um módulo do kernel é um programa que pode ser carregado ou descarregado do kernel sob demanda, sem necessariamente recompilá-lo (o kernel) ou reinicializar o sistema, e tem como objetivo aprimorar a funcionalidade do kernel.
Em termos gerais de software, os módulos são mais ou menos como plug-ins de um software como o WordPress. Os plug-ins fornecem meios para estender a funcionalidade do software; sem eles, os desenvolvedores teriam que construir um único software massivo com todas as funcionalidades integradas em um pacote. Se novas funcionalidades forem necessárias, elas deverão ser adicionadas em novas versões de um software.
Da mesma forma, sem módulos, o kernel teria que ser construído com todas as funcionalidades integradas diretamente na imagem do kernel. Isso significaria ter kernels maiores, e os administradores de sistema precisariam recompilar o kernel toda vez que uma nova funcionalidade fosse necessária.
Um exemplo simples de módulo é um driver de dispositivo – que permite ao kernel acessar um componente/dispositivo de hardware conectado ao sistema.
Leitura sugerida: Como descobrir qual versão do Linux você está executando
Listar todos os módulos do kernel carregados no Linux
No Linux, todos os módulos terminam com a extensão .ko
e normalmente são carregados automaticamente conforme o hardware é detectado na inicialização do sistema. No entanto, um administrador do sistema pode gerenciar os módulos usando determinados comandos.
Para listar todos os módulos atualmente carregados no Linux, podemos usar o comando lsmod (listar módulos) que lê o conteúdo de /proc/modules assim.
lsmod
Module Size Used by
rfcomm 69632 2
pci_stub 16384 1
vboxpci 24576 0
vboxnetadp 28672 0
vboxnetflt 28672 0
vboxdrv 454656 3 vboxnetadp,vboxnetflt,vboxpci
bnep 20480 2
rtsx_usb_ms 20480 0
memstick 20480 1 rtsx_usb_ms
btusb 45056 0
uvcvideo 90112 0
btrtl 16384 1 btusb
btbcm 16384 1 btusb
videobuf2_vmalloc 16384 1 uvcvideo
btintel 16384 1 btusb
videobuf2_memops 16384 1 videobuf2_vmalloc
bluetooth 520192 29 bnep,btbcm,btrtl,btusb,rfcomm,btintel
videobuf2_v4l2 28672 1 uvcvideo
videobuf2_core 36864 2 uvcvideo,videobuf2_v4l2
v4l2_common 16384 1 videobuf2_v4l2
videodev 176128 4 uvcvideo,v4l2_common,videobuf2_core,videobuf2_v4l2
intel_rapl 20480 0
x86_pkg_temp_thermal 16384 0
media 24576 2 uvcvideo,videodev
....
Como carregar e descarregar (remover) módulos do kernel no Linux
Para carregar um módulo do kernel, podemos usar o comando insmod (inserir módulo). Aqui, temos que especificar o caminho completo do módulo. O comando abaixo irá inserir o módulo speedstep-lib.ko.
insmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko
Para descarregar um módulo do kernel, usamos o comando rmmod (remove module). O exemplo a seguir irá descarregar ou remover o módulo speedstep-lib.ko.
rmmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko
Como gerenciar módulos do kernel usando o comando modprobe
modprobe é um comando inteligente para listar, inserir e remover módulos do kernel. Ele pesquisa no diretório do módulo /lib/modules/$ (uname -r) todos os módulos e arquivos relacionados, mas exclui arquivos de configuração alternativos no /etc/modprobe.d diretório.
Aqui você não precisa do caminho absoluto de um módulo; esta é a vantagem de usar modprobe em relação aos comandos anteriores.
Para inserir um módulo, basta fornecer seu nome conforme segue.
modprobe speedstep-lib
Para remover um módulo, use o sinalizador -r
como este.
modprobe -r speedstep-lib
Nota: No modprobe, a conversão automática de sublinhado é executada, portanto não há diferença entre _
e –
enquanto inserindo nomes de módulos.
Para obter mais informações e opções de uso, leia a página de manual do modprobe.
man modprobe
Não esqueça de conferir:
- Como alterar os parâmetros de tempo de execução do kernel de maneira persistente e não persistente
- Como instalar ou atualizar para a versão mais recente do kernel no CentOS 7
- Como atualizar o kernel para a versão mais recente no Ubuntu
É tudo por agora! Você tem alguma ideia útil que gostaria que adicionássemos a este guia ou dúvida, use o formulário de feedback abaixo para enviá-la para nós.