Pesquisa de site

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:

  1. Como alterar os parâmetros de tempo de execução do kernel de maneira persistente e não persistente
  2. Como instalar ou atualizar para a versão mais recente do kernel no CentOS 7
  3. 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.