¿Cuál es la diferencia entre insmod y modprobe?

Respuestas:

28

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.

8128
fuente
2
ah lo siento, perdí esa línea.
NES
39

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 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.

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 utilizado modprobepara cargar módulos.

Otros programas relacionados con los módulos son rmmody modinfo.

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 el nvidia-currentarchivo, esto es, nvidiapor ejemplo).

modinfoacepta un nombre de archivo o el nombre de archivo sin .kosufijo /lib/modules/$(uname -r).

Lekensteyn
fuente
3

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 como Unresolved symbols. En este caso, tenemos que buscar manualmente el módulo dependiente y necesitamos cargarlos para resolver los errores.

Shalini Guleria
fuente
0

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

usuario487054
fuente