Comandos Linux - Comando modprobe - Linux Force Security - Cursos de Linux e Segurança da Informação
Comandos Linux - Comando modprobe
Comandos Linux – Comando modprobe
Comando modprobe do Linux
Nos sistemas operacionais Linux , o comando modprobe adiciona e remove módulos do kernel do Linux.
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.
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).
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 [--dump-modversions] [ nome do arquivo ]
-a , –all Insira todos os nomes de módulo na linha de comandos.
-b , –use-blacklist Essa 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 , –config Esta 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 , –showconfig Despejar a configuração efetiva do diretório config e sair.
–dump-modversions Imprima 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 , –dirname Diretório onde os módulos podem ser encontrados ( / lib / modules / `uname -r` por padrão).
–primeira vez Normalmente, 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-vermagic Cada 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-modversion Quando 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 , –force Tente 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-remove Essa 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 , –show Esta 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 , –quiet Com 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-alias Imprima 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 –remove Esta 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-version Defina 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-depende Liste 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 , –syslog Essa 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.
-V , –version Mostre as informações da versão do modprobe e saia.
-v , –verbose Modo verboso ; imprima mensagens sobre o que o programa está fazendo. Normalmente, o modprobe apenas imprime mensagens se algo der errado.
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 modprobe seu módulo do kernel
Esses comandos executam as seguintes operações:
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.
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.