Cuando el núcleo detecta un nuevo dispositivo, ejecuta el programa modprobe
y le pasa un nombre que identifica el dispositivo. La mayoría de los dispositivos se identifican a través de números registrados para un proveedor y modelo, por ejemplo, identificadores PCI o USB . El modprobe
programa consulta la tabla de alias del módulo para encontrar el nombre del archivo que contiene el controlador para ese dispositivo en particular. Un principio similar se aplica a los controladores para cosas que no son dispositivos de hardware, como sistemas de archivos y algoritmos criptográficos. Para obtener más detalles, consulte Debian no detecta la tarjeta PCI serie después de reiniciar/lib/modules/VERSION/modules.alias
Una vez que modprobe ha identificado qué archivo de módulo ( .ko
) contiene el controlador solicitado, carga el archivo de módulo en el núcleo: el código del módulo se carga dinámicamente en el núcleo. Si el módulo se carga correctamente, aparecerá en la lista de lsmod
.
La carga automática de módulos ocurre cuando el kernel detecta nuevo hardware conectable en caliente, por ejemplo, cuando conecta un periférico USB. El sistema operativo también hace una enumeración de todo el hardware que está presente en el sistema temprano durante el inicio, para cargar los controladores de los periféricos que están presentes en el momento del arranque.
También es posible solicitar manualmente la carga de un módulo con el comando modprobe
o insmod
. La mayoría de las distribuciones incluyen un script de inicio que carga los módulos enumerados en /etc/modules
. Otra forma de cargar los módulos es si son una dependencia de un módulo: si el módulo A depende del módulo B, entonces modprobe A
carga B antes de cargar A.
Una vez que se carga un módulo, permanece cargado hasta que se descarga explícitamente, incluso si todos los dispositivos que usan ese controlador se han desconectado. Hace mucho tiempo, había un mecanismo para descargar automáticamente los módulos no utilizados, pero fue eliminado, si no recuerdo mal, cuando udev entró en escena. Sospecho que la descarga automática de módulos no es una característica común porque los sistemas que tienden a necesitarla son principalmente PC de escritorio que tienen mucha memoria de todos modos (en la escala del código del controlador).
/etc/modules
.rt2800usb
está en la salida delsmod
, y ¿eso significa que conecté su dispositivo a mi computadora antes desde el arranque?