# Modprobe

modprobe es un programa de Linux escrito originalmente por Rusty Russell y utilizado para añadir un módulo cargable del kernel (LKM) al núcleo Linux o para quitar un LKM del kernel. Por lo general, es utilizado indirectamente: udev se basa en modprobe para cargar controladores de hardware detectado automáticamente.
A partir de 2014 modprobe se distribuye como parte del paquete de software "kmod" (mantenido por Lucas De Marchi y otros). Fue desarrollado previamente como:
* "module-init-tools", para la versión del Núcleo Linux 2.6 y posteriores (mantenido por Jon Masters y otros)
* "modutils" Para uso en las versiones de Linux 2.2.x y 2.4.x.

## Funcionamiento

El comando modprobe ofrece funciones más completas, como si de una "navaja suiza" se tratara, que las funciones más básicas de insmod y rmmod, con los siguientes beneficios:
* La capacidad de tomar decisiones más intuitivas sobre qué módulos cargar.
* Un conocimiento de las dependencias de los módulos, de modo que cuando se le solicita que cargue un módulo, modprobe agrega otros módulos que se requerían previamente.
* La resolución de las recursivas dependencias de los módulos que sean necesarios.
Si se llama sin parámetros, el programa agrega / inserta / instala por defecto el módulo designado en el kernel. Normalmente se requieren privilegios de superusuario para realizar estos cambios.
Todos los argumentos que aparecen después del nombre del módulo se pasan al kernel (además de las opciones enumeradas en el archivo de configuración).
En algunas versiones de modprobe, el archivo de configuración se llama modprobe.conf, y en otras, el equivalente es la colección de archivos llamada <nombremodulo> <modulename> en el directorio /etc/modprobe.d.</modulename>

## Características

El programa modprobe también tiene más funciones de configuración que otras utilidades similares. Es posible definir los alias de los módulos permitiendo a veces la carga automática de estos. Cuando el kernel requiere un módulo, en realidad ejecuta modprobe para solicitarlo; sin embargo, el kernel solo tiene una descripción de algunas propiedades del módulo (por ejemplo, el identificador del dispositivo o el número de un protocolo de red), y modprobe hace el trabajo de traducirlo a un nombre concreto a través de los alias.
Este programa también tiene la capacidad de ejecutar programas antes o después de cargar o descargar un módulo determinado; por ejemplo, configurar el mezclador justo después de cargar un módulo de la tarjeta de sonido o cargar el firmware en un dispositivo inmediatamente antes de habilitarlo. Aunque estas acciones deben ser implementadas por programas externos, modprobe se encarga de sincronizar su ejecución con la carga / descarga del módulo.

## Lista Negra

Hay casos en que dos o más módulos son compatibles con los mismos dispositivos, o un módulo indica que no es compatible con un dispositivo: la palabra clave de la lista negra indica que todos los alias internos de un módulo particular deben ignorarse.
Hay un par de formas de poner en la lista negra un módulo, y el método utilizado para ello depende de dónde esté configurado.
Hay dos formas de poner en la lista negra un módulo empleando el sistema modprobe.conf. La primera es usar su sistema de lista negra en /etc/modprobe.d/blacklist:
La configuración original es lo más importante en el archivo de configuración y se usará en lugar del método de la lista negra visto anteriormente, lo que requiere este segundo método:
Alternativamente, se puede modificar /etc/modprobe.conf: