¿Hay alguna diferencia entre insmod y modprobe?
35
Por man insmod
:
La mayoría de los usuarios querrán usar modprobe en su lugar, que es más inteligente y puede manejar dependencias de módulos.
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 archivodkms/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 utilizadomodprobe
para cargar módulos.Otros programas relacionados con los módulos son
rmmod
ymodinfo
.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 elnvidia-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)
.fuente
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 comoUnresolved symbols
. En este caso, tenemos que buscar manualmente el módulo dependiente y necesitamos cargarlos para resolver los errores.fuente
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
fuente