fbpx

Comandos Linux – Comando depmod

Comando depmod do Linux

Atualizado: 05/04/2019 por Computer Hope

comando depmod

Nos sistemas operacionais Linux , o comando depmod gera uma lista de dependências do módulo do kernel e arquivos de mapa associados.

Descrição

O depmod analisa seus módulos do kernel (no diretório / lib / modules / kernel-release ) e cria uma lista de dependências (denominada modules.dep ), para que, quando os módulos forem adicionados e removidos com o modprobe , nenhum módulo fique sem os outros módulos que exigir. Ao mesmo tempo, ele cria um mapa correlacionando identificadores de hardware e os módulos que os manipulam. Esse mapeamento é usado para encontrar o módulo correto quando uma peça de hardware solicita.

O kernel depende do depmod e modprobe para transmitir os dados brutos para seus módulos, na ordem em que é necessário carregá-los.

Sintaxe

  depmod [-b basedir ] [-e] [-E Module .  symvers ] [-F System.map ]
        [-n] [-v] [-A] [-P prefixo ] [-w] [ versão ]
  depmod [-e] [-E Module.symvers ] [-F System.map ] [-m] [-n] [-v] [-P prefixo ]
        [-w] [ versão ] [ nome do arquivo ...]

Descrição técnica

Os módulos do kernel Linux podem fornecer serviços (chamados “símbolos”) para uso de outros módulos (usando uma das variantes EXPORT_SYMBOL no código). Se um segundo módulo usa esse símbolo, esse segundo módulo depende claramente do primeiro módulo. Essas dependências podem se tornar bastante complexas.

O depmod cria uma lista de dependências do módulo lendo cada módulo em / lib / modules / release-kernel e determinando quais símbolos ele exporta e quais símbolos ele precisa. Por padrão, essa lista é gravada em modules.dep e uma versão binária de hash denominada modules.dep.bin , no mesmo diretório . Se os nomes dos arquivos forem fornecidos na linha de comando , apenas esses módulos serão examinados (o que raramente é útil, a menos que todos os módulos estejam listados).

O depmod também cria uma lista de símbolos fornecidos pelos módulos no arquivo chamado modules.symbols e sua versão de hash binária, modules.symbols.bin .

Finalmente, o depmod produzirá um arquivo chamado modules.devname se os módulos fornecerem nomes de dispositivos especiais ( devname ) que devem ser preenchidos em / dev na inicialização (por um utilitário como o udev).

Se uma versão for fornecida, o diretório do módulo dessa versão do kernel será usado em vez da versão atual do kernel (retornada por uname -r ).

Opções

-a , –allTeste todos os módulos. Esta opção é ativada por padrão se nenhum nome de arquivo for fornecido na linha de comando.
-A , –quickEssa opção verifica se algum módulo é mais recente que o arquivo modules.dep antes que qualquer trabalho seja concluído: caso contrário, ele sai silenciosamente, em vez de gerar novamente os arquivos.
-b basedir , –basedir , basedirSe seus módulos não estiverem atualmente no diretório (normal) / lib / modules / kernel-version , mas em uma área de preparação, você poderá especificar um basedir que é anexado ao nome do diretório. Esse arquivo é retirado do arquivo modules.dep resultante, portanto está pronto para ser movido para o local normal. Use esta opção se você for um fornecedor de distribuição que precise gerar previamente os arquivos de metadados em vez de executar o depmod novamente mais tarde.
-C , –config arquivo-ou-diretórioEsta opção substitui o diretório de configuração padrão em /etc/depmod.d/ .
-e , –errsymsQuando combinado com a opção -F , ele relata quaisquer símbolos que um módulo precise que não sejam fornecidos por outros módulos ou pelo kernel. Normalmente, qualquer símbolo não fornecido pelos módulos é assumido como sendo fornecido pelo kernel (o que deve ser verdadeiro em um mundo perfeito), mas essa suposição pode ser interrompida especialmente quando drivers de terceiros atualizados adicionalmente não são instalados corretamente ou foram construídos incorretamente.
-E , –symversQuando combinado com a opção -e , ele reporta todas as versões de símbolos fornecidas pelos módulos que não correspondem às versões de símbolos fornecidas pelo kernel em seu Module.symvers . Esta opção é mutuamente incompatível com -F .
-F , –filesyms System.mapFornecido com o System.map produzido quando o kernel foi construído, isso permite que a opção -e relate símbolos não resolvidos. Esta opção é mutuamente incompatível com -E .
-h , –helpImprima a mensagem de ajuda e saia.
-n , –dry-runIsso envia o modules.dep resultante e os vários arquivos de mapeamento para a saída padrão em vez de gravá- los no diretório do módulo.
-PAlgumas arquiteturas prefixam símbolos com caracteres estranhos. Isso especifica um caractere de prefixo (por exemplo, ‘ _ ‘) a ser ignorado.
-v , –verboseModo verboso ; O depmod imprimirá na saída padrão todos os símbolos dos quais cada módulo depende e o nome do arquivo do módulo que fornece esse símbolo.
-V , –versionMostre a versão do depmod e saia. Veja abaixo as advertências quando executadas em kernels mais antigos.
-WAvisar sobre dependências duplicadas, aliases, versões de símbolos etc.

Exemplos

A série de comandos a seguir ilustra uma maneira comum de usar o depmod . 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.

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.
modprobe – Adicione e remova módulos do kernel do Linux.
rmmod – Remova um módulo do kernel do Linux.

18 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.