Por man insmod
:
Existe alguma diferença entre insmod e modprobe?
Por man insmod
:
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.
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)
.
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.
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