Neste artigo
Depmod lida com descrições de dependência para módulos de kernel carregáveis.
Sinopse
depmod [-aA] [-ehnqrsuvV] [-C configfile] [-F kernelsyms] [-b basedirectory] [forced_version] depmod [-enqrsuv] [-F kernelsyms] module1.o module2.o …
Descrição
O depmod e modprobe utilitários têm o objetivo de tornar um kernel modular Linux gerenciável para todos os usuários, administradores e mantenedores da distribuição.
Depmod cria um arquivo de dependência do tipo “Makefile”, baseado nos símbolos que encontra no conjunto de módulos mencionados na linha de comando ou dos diretórios especificados no arquivo de configuração. Este arquivo de dependência é usado posteriormente por modprobe para carregar automaticamente o módulo correto ou pilha de módulos.
O uso normal de depmod é incluir a linha / sbin / depmod -a
em algum lugar nos arquivos rc em /etc/rc.d, para que as dependências corretas do módulo estejam disponíveis imediatamente após a inicialização do sistema. Se você estiver trabalhando com uma distribuição mais completa de recursos, como Ubuntu, Debian ou Fedora, isso será feito para você. Observe que a opção -uma agora é opcional. Para fins de inicialização, a opção -q pode ser mais apropriado, já que isso torna o depmod silencioso sobre símbolos não resolvidos. Se você quiser ver exatamente o que está sendo adicionado, use o -v mude para executar o comando detalhadamente. Também é possível criar o arquivo de dependência imediatamente após compilar um novo kernel. Se você fizer “depmod -a 2.2.99“quando você compilou o kernel 2.2.99 e seus módulos pela primeira vez, enquanto ainda está executando, por exemplo, 2.2.98, o arquivo será criado no local correto. Neste caso, no entanto, as dependências do kernel não serão garantidas para esteja correto. Veja as opções -F, -C e -b acima para obter mais informações sobre como lidar com isso. Ao construir a relação entre os módulos e os símbolos exportados por outros módulos,depmod não considera o status GPL dos módulos nem dos símbolos exportados. Ou seja, o depmod não sinalizará um erro se um módulo sem uma licença compatível com GPL se referir a um símbolo somente GPL (EXPORT_SYMBOL_GPL no kernel). No entanto, o insmod se recusará a resolver símbolos GPL apenas para módulos não GPL, portanto, o carregamento real falhará.
Opções
-uma, –tudo
Procure por módulos em todos os diretórios especificados no arquivo de configuração (opcional)/etc/modules.conf.
-UMA, –rápido
Compare os carimbos de data / hora do arquivo e, se necessário, aja como depmod -a. Esta opção atualiza o arquivo de dependência apenas se algo mudou.
-e, –errsyms
Mostra todos os símbolos não resolvidos para cada módulo.
-h, –ajuda
Exiba um resumo das opções e saia imediatamente.
-n, –mostrar
Grave o arquivo de dependência em stdout em vez de no / lib / modules árvore.
-q, –quieto
Diga ao depmod para ficar quieto e não reclamar da falta de símbolos.
-r, –raiz
Alguns usuários compilam módulos sob uma ID de usuário não root e, em seguida, instalam os módulos como root. Este processo pode deixar os módulos pertencentes ao ID do usuário não root, mesmo que o diretório dos módulos seja propriedade do root. Se o ID do usuário não root for comprometido, um invasor pode sobrescrever os módulos existentes pertencentes a esse ID do usuário e usar essa exposição para inicializar até o acesso root. Por padrão, modutils rejeitará tentativas de usar um módulo que não pertence ao root. Especificando-r irá suprimir o erro e permitir que o root carregue os módulos que não pertencem ao root.
O uso de -r é uma grande exposição de segurança e não é recomendado.
-s, –syslog
Grave todas as mensagens de erro por meio do daemon syslog em vez de stderr.
-você, – erro não resolvido
depmod 2.4 não define um código de retorno quando há quaisquer símbolos não resolvidos. Algumas distribuições querem um código de retorno diferente de zero no modutils 2.4, mas essa mudança pode causar problemas para usuários que esperam o comportamento antigo. Se você quiser um código de retorno diferente de zero no depmod 2.4, especifique -você. depmod 2.5 irá ignorar silenciosamente o -você sinalizar e sempre fornecerá um código de retorno diferente de zero para símbolos não resolvidos.
-v, –verbose
Mostra o nome de cada módulo à medida que está sendo processado.
-V, –versão
Exibir a versão de depmod.
Gerenciando Distribuições
As seguintes opções são úteis para pessoas que gerenciam distribuições:
-b diretório base, –basedir diretório base
Se a árvore de diretórios / lib / modules contendo as subárvores dos módulos é movido para outro lugar, a fim de lidar com os módulos para um ambiente diferente, o -b opção diz ao depmod onde encontrar a imagem movida do / lib / modules árvore. As referências de arquivo no arquivo de saída depmod que é construído, modules.dep, não conterá o diretório base caminho. Isso significa que quando a árvore de arquivos é movida de volta basedirectory / lib / modules para dentro / lib / modules na distribuição final, todas as referências estarão corretas.
-C arquivo de configuração, –config arquivo de configuração
Use o arquivo configfile em vez de /etc/modules.conf. A variável de ambiente MODULECONF também pode ser usado para selecionar um arquivo de configuração diferente do padrão /etc/modules.conf (ou/etc/conf.modules (descontinuada)). Quando variável de ambiente UNAME_MACHINE estiver definido, o modutils usará seu valor em vez do campo da máquina do syscall uname (). Isto é principalmente útil quando você está compilando módulos de 64 bits no espaço do usuário de 32 bits ou vice-versa, defina UNAME_MACHINE ao tipo de módulos que estão sendo construídos. Os modutils atuais não suportam o modo de construção cruzada completa para módulos, ele é limitado a escolher entre as versões de 32 e 64 bits da arquitetura do host.
-F kernelsyms,–filesyms kernelsyms
Ao construir arquivos de dependência para um kernel diferente do kernel atualmente em execução, é importante que depmod usa o conjunto correto de símbolos do kernel para resolver as referências do kernel em cada módulo. Esses símbolos podem ser uma cópia de System.map do outro kernel ou uma cópia da saída de / proc / ksyms. Se o seu kernel usa símbolos versionados, é melhor usar uma cópia do / proc / ksyms saída, uma vez que esse arquivo contém as versões dos símbolos dos símbolos do kernel. No entanto, você pode usar um System.map mesmo com símbolos versionados.
Configuração
O comportamento de depmod e modprobe pode ser ajustado pelo arquivo de configuração (opcional)/etc/modules.conf. Ver modprobe(8) e modules.conf(5) para uma descrição completa.
Estratégia
Cada vez que você compila um novo kernel, o comando “make modules_install“criará um novo diretório, mas não mudará o padrão. Ao obter um módulo não relacionado à distribuição do kernel, você deve colocá-lo em um dos diretórios independentes de versão em / lib / modules. Esta é a estratégia padrão, que pode ser substituída em /etc/modules.conf. Use o homem comando (% homem) para ver como um comando é usado em seu computador específico.