
Existem diferenças entre insmod e modprobe?
Responder1
modprobe
lê os módulos /lib/modules/$(uname -r)/modules.dep.bin
(ou sem o .bin
sufixo se o outro arquivo não estiver disponível). Do mesmo arquivo, as dependências são carregadas.
modprobe
aceita o nome de um .ko
arquivo /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 faz sentido testar esse tipo de módulo.
insmod
por outro lado, 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 inferior usado modprobe
para carregar módulos.
Outros programas relacionados aos módulos são rmmod
e modinfo
.
rmmod
remove um nome de kernel baseado no nome do arquivo /proc/modules
. Este nome não precisa necessariamente ser igual ao passado modprobe
(para o nvidia-current
arquivo, nvidia
por exemplo).
modinfo
aceita um nome de arquivo ou o nome do arquivo sem .ko
sufixo em /lib/modules/$(uname -r)
.
Responder2
Por man insmod
:
A maioria dos usuários preferirá usar o modprobe, que é mais inteligente e pode lidar com dependências de módulos.
Responder3
modprobe
é um comando inteligente, que 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 (o caminho deste módulo é fornecido dentro do módulo principal). Então, modprobe
carrega o módulo principal e o módulo dependente.
Mas se insmod
for usado, não carregará a dependência e, portanto, causará erros de compilação como Unresolved symbols
. Neste caso, temos que procurar manualmente os módulos dependentes e carregá-los para resolver os erros.
Responder4
O comando modprobe oferece mais recursos do que os utilitários mais básicos insmod e rmmod. modprobe adiciona ou remove de forma inteligente um módulo do kernel Linux. Observe que, por conveniência, não há diferença entre _ e - nos nomes dos módulos (a conversão automática de sublinhado é executada). modprobe procura no diretório do módulo /lib/modules/ uname -r
todos os módulos e outros arquivos, exceto os arquivos de configuração opcionais no diretório /etc/modprobe.d (algumas distribuições usam o arquivo /etc/modprobe.conf).