¿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.
modprobelee los módulos desde/lib/modules/$(uname -r)/modules.dep.bin(o sin el.binsufijo si el otro archivo no está disponible). Desde el mismo archivo, se cargan las dependencias.modprobeacepta el nombre de un.koarchivo en/lib/modules/$(uname -r)(por ejemplo,nvidia-currentpara 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.insmodpor 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 utilizadomodprobepara cargar módulos.Otros programas relacionados con los módulos son
rmmodymodinfo.rmmodelimina 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-currentarchivo, esto es,nvidiapor ejemplo).modinfoacepta un nombre de archivo o el nombre de archivo sin.kosufijo/lib/modules/$(uname -r).fuente
modprobees 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,modprobecarga el módulo principal y el módulo dependiente.Pero si
insmodse 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