Respuestas:
modprobe
lee los módulos desde /lib/modules/$(uname -r)/modules.dep.bin
(o sin el .bin
sufijo si el otro archivo no está disponible). Desde el mismo archivo, se cargan las dependencias.
modprobe
acepta el nombre de un .ko
archivo en /lib/modules/$(uname -r)
(por ejemplo, nvidia-current
para el archivo dkms/nvidia-current.ko
) y alias ( modules.alias.bin
). Los builtins ( modules.alias.bin
) también se reconocen, pero dado que estos módulos se cargan por defecto, no tiene sentido modificar este tipo de módulos.
insmod
por otro lado acepta rutas a archivos. El módulo no tiene que residir /lib/modules/$(uname -r)
, pero las dependencias no se cargan automáticamente. Este es el programa inferior utilizado modprobe
para cargar módulos.
Otros programas relacionados con los módulos son rmmod
y modinfo
.
rmmod
elimina un nombre de kernel basado en el nombre de /proc/modules
. Este nombre no necesariamente tiene que ser el mismo que se le pasó modprobe
(para el nvidia-current
archivo, esto es, nvidia
por ejemplo).
modinfo
acepta un nombre de archivo o el nombre de archivo sin .ko
sufijo /lib/modules/$(uname -r)
.
modprobe
es un comando inteligente, busca dependencias mientras carga un módulo. Supongamos que si cargara un módulo, que tiene símbolos definidos en algún otro módulo (esta ruta del módulo se proporciona dentro del módulo principal). Entonces, modprobe
carga el módulo principal y el módulo dependiente.
Pero si insmod
se usa, no cargará la dependencia y, por lo tanto, dará errores de compilación como Unresolved symbols
. En este caso, tenemos que buscar manualmente el módulo dependiente y necesitamos cargarlos para resolver los errores.
La utilidad modprobe merece una mención rápida. modprobe, como insmod, carga un módulo en el núcleo. Se diferencia en que mirará el módulo que se cargará para ver si hace referencia a algún símbolo que no esté definido actualmente en el núcleo. Si se encuentran tales referencias, modprobe busca otros módulos en la ruta de búsqueda del módulo actual que definen los símbolos relevantes. Cuando modprobe encuentra esos módulos (que son necesarios para el módulo que se está cargando), también los carga en el núcleo. Si utiliza insmod en esta situación, el comando falla con un mensaje de "símbolos no resueltos" en el archivo de registro del sistema