Qual é a diferença entre insmod e modprobe?

28

Existe alguma diferença entre insmod e modprobe?

    
por NES 04.01.2011 / 21:47

4 respostas

24

Por man insmod :

% bl0ck_qu0te%     
por 8128 04.01.2011 / 21:50
34

modprobe lê os módulos de /lib/modules/$(uname -r)/modules.dep.bin (ou sem o sufixo .bin se o outro arquivo não estiver disponível). Do mesmo arquivo, as dependências são carregadas.

modprobe aceita o nome de um arquivo .ko em /lib/modules/$(uname -r) (por exemplo, nvidia-current para o arquivo dkms/nvidia-current.ko ) e aliases ( modules.alias.bin ). Builtins ( modules.alias.bin ) também são reconhecidos, mas como esses módulos são carregados por padrão, não há motivos para modificar esse tipo de módulo.

Por outro lado,

insmod aceita caminhos para arquivos. O módulo não precisa residir em /lib/modules/$(uname -r) , mas as dependências não são carregadas automaticamente. Este é o programa mais baixo usado por modprobe para carregar módulos.

Outros programas relacionados aos módulos são rmmod e modinfo .

rmmod remove um nome de kernel com base no nome de /proc/modules . Esse nome não precisa necessariamente ser o mesmo que foi passado para modprobe (para o arquivo nvidia-current , isso é nvidia , por exemplo).

modinfo aceita um nome de arquivo ou o nome do arquivo sem o sufixo .ko em /lib/modules/$(uname -r) .

    
por Lekensteyn 29.08.2011 / 23:01
3

modprobe é um comando inteligente, procura por dependências ao carregar um módulo. Suponha que, se eu carreguei um módulo, que tem símbolos definidos em algum outro módulo (este caminho do módulo é dado dentro do módulo principal). Então, modprobe carrega o módulo principal e o módulo dependente.

Mas se insmod for usado, ele não carregará a dependência e, portanto, fornecerá erros de compilação como Unresolved symbols . Nesse caso, temos que procurar manualmente pelo módulo dependente e precisar carregá-lo para resolver os erros.

    
por Shalini Guleria 08.11.2016 / 12:40
0

O utilitário modprobe merece uma menção rápida. O modprobe, como o insmod, carrega um módulo no kernel. Ele difere na medida em que irá olhar para o módulo a ser carregado para ver se ele faz referência a quaisquer símbolos que não estão atualmente definidos no kernel. Se tais referências forem encontradas, o modprobe procurará outros módulos no caminho de busca do módulo atual que definem os símbolos relevantes. Quando o modprobe encontra esses módulos (que são necessários pelo módulo que está sendo carregado), eles também são carregados no kernel. Se você usar insmod nessa situação, o comando falhará com uma mensagem de "símbolos não resolvidos" deixada no arquivo de log do sistema

    
por user487054 29.12.2015 / 04:26