fbpx

Comandos Linux – Comando modprobe

Comando modprobe do Linux

comando modprobe

Nos sistemas operacionais Linux , o comando modprobe adiciona e remove módulos do kernel do Linux.

Descrição

Módulos são partes de código que ampliam a funcionalidade do kernel do sistema operacional sem a necessidade de reinicialização . Uma vez carregados, os módulos residem na memória e podem ser instanciados várias vezes; eles podem ser considerados análogos a um driver de dispositivo .

O modprobe usa as listas de dependência e os mapas de hardware gerados pelo depmod para carregar ou descarregar módulos de maneira inteligente no kernel. Ele executa a inserção e remoção reais usando os programas de nível inferior insmod e rmmod , respectivamente.

Embora seja possível chamar insmod e rmmod manualmente, é recomendável carregar e descarregar módulos usando o depmod para garantir que todas as dependências entre módulos sejam consideradas antes que as alterações sejam feitas.

Descrição técnica

O modprobe pesquisa o diretório do módulo,

  / lib / modules / `uname -r`

para todos os módulos e outros arquivos, exceto os arquivos de configuração opcionais no diretório /etc/modprobe.d . O modprobe também usará as opções de módulo especificadas na linha de comando do kernel na forma de:

  <módulo>. <opção>

… e listas negras na forma de:

  modprobe.blacklist = <module>

As versões modernas do modprobe do Linux (versão 2.4.x pós-kernel) não modificam os módulos. O trabalho de resolver símbolos e entender parâmetros é feito dentro do kernel. Portanto, a falha do módulo às vezes é acompanhada por uma mensagem do kernel – consulte dmesg para obter mais informações sobre como visualizá-los.

O modprobe espera um arquivo modules.dep.bin atualizado (ou um arquivo modules.dep legível por humanos substituto), conforme gerado pelo utilitário depmod . Este arquivo lista quais outros módulos cada módulo precisa (se houver) e o modprobe usa isso para adicionar ou remover essas dependências automaticamente.

Se algum argumento for dado após o nome do módulo , eles serão passados ​​para o kernel (além de quaisquer opções listadas no arquivo de configuração).

Sintaxe

  modprobe [-v] [-V] [-C arquivo de configuração ] [-n] [-i] [-q] [-b] [nome do módulo ] 
          [ parâmetros do módulo ...]
  modprobe [-r] [-v] [-n] [-i] [nome do módulo ...]
  modprobe [-c]
  modprobe [--dump-modversions] [ nome do arquivo ]

Opções

-a , –allInsira todos os nomes de módulo na linha de comandos.
-b , –use-blacklistEssa opção faz com que o modprobe aplique os comandos da lista negra nos arquivos de configuração (se houver) aos nomes dos módulos. (Qualquer módulo que esteja na lista negra não será carregado automaticamente.)
-C , –configEsta opção substitui o diretório de configuração padrão ( /etc/modprobe.d ).

Essa opção é passada através dos comandos install ou remove para outros comandos modprobe na variável de ambiente MODPROBE_OPTIONS .

-c , –showconfigDespejar a configuração efetiva do diretório config e sair.
–dump-modversionsImprima uma lista das informações de versão do módulo exigidas por um módulo. Essa opção é comumente usada pelas distribuições para empacotar um módulo do kernel Linux usando deps de controle de versão do módulo.
-d , –dirnameDiretório onde os módulos podem ser encontrados ( / lib / modules / `uname -r` por padrão).
–primeira vezNormalmente, o modprobe terá êxito (e não fará nada) se for solicitado a inserir um módulo que já está presente ou remover um módulo que não está presente. Isso é ideal para scripts simples; no entanto, scripts mais complicados geralmente querem saber se o modprobe realmente fez alguma coisa: essa opção faz com que o modprobe falhe no caso de ele realmente não ter feito nada.
–force-vermagicCada módulo contém uma pequena string contendo informações importantes, como as versões do kernel e do compilador . Se um módulo falhar ao carregar e o kernel reclamar que a “versão mágica” não corresponde, você pode usar esta opção para removê-lo. Isso se aplica a todos os módulos inseridos: o módulo (ou alias) na linha de comando e todos os módulos dos quais depende.

Essa verificação existe para sua proteção; portanto, essa opção de uso é perigosa, a menos que você saiba o que está fazendo.

–force-modversionQuando os módulos são compilados com o conjunto CONFIG_MODVERSIONS , é criada uma seção detalhando as versões de todas as interfaces usadas por (ou fornecidas por) pelo módulo. Se um módulo falhar ao carregar e o kernel reclamar que discorda de uma versão de alguma interface, você pode usar –force-modversion para remover completamente as informações da versão. Isso aplica todos os módulos inseridos: o módulo (ou alias) na linha de comando e todos os módulos dos quais depende.

Essa verificação existe para sua proteção, portanto, usar esta opção é perigoso, a menos que você saiba o que está fazendo.

-f , –forceTente remover todas as informações de versão do módulo que, de outra forma, poderiam impedi-lo de carregar: isso é o mesmo que usar –force-vermagic e –force-modversion . Isso se aplica a todos os módulos inseridos: o módulo (ou alias) na linha de comando e todos os módulos dos quais depende.

Essas verificações existem para sua proteção, portanto, usar esta opção é perigoso, a menos que você saiba o que está fazendo.

-i , –ignore-install , –ignore-removeEssa opção faz com que o modprobe ignore os comandos de instalação e remoção no arquivo de configuração (se houver) do módulo especificado na linha de comandos (quaisquer módulos dependentes ainda estão sujeitos aos comandos definidos para eles no arquivo de configuração). Atualmente, os comandos install e remove serão ignorados quando essa opção for usada, independentemente de a solicitação ter sido feita mais especificamente com apenas um ou outro (e não ambos) – –ignore-install ou –ignore-remove .
-n , –dry-run , –showEsta opção faz tudo, mas realmente insere ou exclui os módulos (ou executa os comandos de instalação ou remoção ). Combinado com -v , é útil para depuração. Por razões históricas, ambos –dry-run e –show realmente significam a mesma coisa e são intercambiáveis.
-q , –quietCom esse sinalizador, o modprobe não imprimirá uma mensagem de erro se você tentar remover ou inserir um módulo que não consegue encontrar (e não é um alias ou comando de instalação / remoção ). No entanto, ele ainda retornará com um status de saída diferente de zero. O kernel usa isso para pesquisar oportunisticamente os módulos que possam existir usando request_module .
-R , –resolve-aliasImprima todos os nomes de módulos que correspondem a um alias. Isso pode ser útil para problemas de alias do módulo de depuração.
-r –removeEsta opção faz com que o modprobe remova em vez de inserir um módulo. Se os módulos dos quais depende também não forem utilizados, o modprobe também tentará removê-los. Diferentemente da inserção, mais de um módulo pode ser especificado na linha de comando (não faz sentido especificar parâmetros do módulo ao remover os módulos).

Geralmente, não há razão para remover os módulos, mas alguns módulos de buggy exigem isso. Seu kernel de distribuição pode não ter sido construído para suportar a remoção de módulos.

-S , –set-versionDefina a versão do kernel, em vez de usar uname para decidir sobre a versão do kernel (que determina onde encontrar os módulos).
–show-dependeListe as dependências de um módulo (ou alias), incluindo o próprio módulo. Isso produz um conjunto (possivelmente vazio) de nomes de arquivo de módulo, um por linha, cada um começando com “insmod” e é normalmente usado por distribuições para determinar quais módulos incluir ao gerar imagens initrd / initramfs. Os comandos de instalação que se aplicam são mostrados com o prefixo “install”. Não executa nenhum dos comandos de instalação. Observe que o modinfo pode ser usado para extrair dependências de um módulo do próprio módulo, mas não sabe nada de aliases ou comandos de instalação.
-s , –syslogEssa opção faz com que todas as mensagens de erro passem pelo mecanismo syslog (como LOG_DAEMON com nível LOG_NOTICE ) e não pelo erro padrão. Isso também é ativado automaticamente quando o stderr não está disponível.

Essa opção é passada através dos comandos install ou remove para outros comandos modprobe na variável de ambiente MODPROBE_OPTIONS .

-V , –versionMostre as informações da versão do modprobe e saia.
-v , –verboseModo verboso ; imprima mensagens sobre o que o programa está fazendo. Normalmente, o modprobe apenas imprime mensagens se algo der errado.

Essa opção é passada através dos comandos install ou remove para outros comandos modprobe na variável de ambiente MODPROBE_OPTIONS .

Exemplos

A série de comandos a seguir ilustra uma maneira comum de usar o modprobe . Cada comando é prefixado com sudo , pois eles exigem permissões de root :

  sudo ln -s /path/to/your-kernel-module.ko / lib / modules / `uname -r`
  sudo depmod -a
  sudo modprobe seu módulo do kernel

Esses comandos executam as seguintes operações:

  1. No primeiro comando, usamos ln para criar um link simbólico para o nosso arquivo de módulo no diretório / lib / modules / kernel-release . O comando uname -r , colocado entre aspas , é executado pelo shell e é convertido na string apropriada que representa nossa versão de lançamento do kernel.
  2. No segundo comando, uma lista de dependências atualizada é gerada pelo depmod -a para garantir que o módulo que estamos instalando tenha conhecimento de todos os módulos e dependências existentes. Essa lista de dependências será usada pelo modprobe ao instalar o módulo no terceiro comando.
  3. O modprobe instala o módulo do kernel.

depmod – Gere uma lista de dependências do módulo do kernel e arquivos de mapa associados.
insmod – insere um módulo no kernel do Linux.
lsmod – Mostra o status dos módulos do kernel do Linux.
modinfo – Mostra informações sobre um módulo do kernel Linux.
rmmod – Remova um módulo do kernel do Linux.
uname – Imprime informações sobre o sistema atual.

20 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900

Copyright © Linux Force Security  - Desde 2011.