Qual é a diferença entre insmod e modprobe?

35

Existem diferenças entre insmod e modprobe?

NES
fonte

Respostas:

28

Por man insmod:

A maioria dos usuários desejará usar o modprobe, o que é mais inteligente e pode lidar com as dependências do módulo.

8128
fonte
2
desculpe, perdi essa linha.
NES
39

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

modprobeaceita o nome de um .koarquivo em /lib/modules/$(uname -r)(por exemplo, nvidia-currentpara 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 faz sentido modificar esse tipo de módulo.

insmodpor outro lado, aceita caminhos para arquivos. O módulo não precisa residir /lib/modules/$(uname -r), mas as dependências não são carregadas automaticamente. Este é o programa inferior usado modprobepara carregar módulos.

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

rmmodremove um nome de kernel com base no nome de /proc/modules. Esse nome não precisa necessariamente ser o mesmo que o passado para modprobe(para o nvidia-currentarquivo, nvidiapor exemplo).

modinfoaceita um nome de arquivo ou o nome do arquivo sem .kosufixo /lib/modules/$(uname -r).

Lekensteyn
fonte
3

modprobeé um comando inteligente, procura dependências ao carregar um módulo. Suponha que, se eu carregasse um módulo, que possui símbolos definidos em algum outro módulo (esse caminho é fornecido dentro do módulo principal). Portanto, modprobecarrega o módulo principal e o módulo dependente.

Mas se insmodfor usado, ele não carregará a dependência e, portanto, dará erros de compilação como Unresolved symbols. Nesse caso, precisamos procurar manualmente o módulo dependente e precisamos carregá-lo para resolver os erros.

Shalini Guleria
fonte
0

O utilitário modprobe vale uma menção rápida. O modprobe, como o insmod, carrega um módulo no kernel. Ele difere no fato de que ele examinará o módulo a ser carregado para ver se ele faz referência a quaisquer símbolos que não estão definidos atualmente no kernel. Se alguma dessas referências for encontrada, o modprobe procurará outros módulos no caminho de pesquisa do módulo atual que define os símbolos relevantes. Quando o modprobe encontra esses módulos (que são necessários para o carregamento do módulo), eles também são carregados no kernel. Se você usar insmod nessa situação, o comando falhará com a mensagem "símbolos não resolvidos" deixada no arquivo de log do sistema

user487054
fonte