Quando o kernel detecta um novo dispositivo, ele executa o programa modprobe
e passa um nome que identifica o dispositivo. A maioria dos dispositivos é identificada através de números registrados para um fornecedor e modelo, por exemplo, identificadores PCI ou USB . O modprobe
programa consulta a tabela de alias do módulo para encontrar o nome do arquivo que contém o driver para esse dispositivo específico. Um princípio semelhante se aplica aos drivers para coisas que não são dispositivos de hardware, como sistemas de arquivos e algoritmos criptográficos. Para mais detalhes, consulte Debian não detecta placa PCI serial após a reinicialização/lib/modules/VERSION/modules.alias
Depois que o modprobe identifica qual arquivo de módulo ( .ko
) contém o driver solicitado, ele carrega o arquivo de módulo no kernel: o código do módulo é carregado dinamicamente no kernel. Se o módulo for carregado com sucesso, ele aparecerá na lista de lsmod
.
O carregamento automático dos módulos ocorre quando o kernel detecta um novo hardware hotpluggable, por exemplo, quando você conecta um periférico USB. O sistema operacional também faz uma enumeração de todo o hardware presente no sistema no início da inicialização, para carregar drivers de periféricos presentes no momento da inicialização.
Também é possível solicitar manualmente o carregamento de um módulo com o comando modprobe
ou insmod
. A maioria das distribuições incluem um script de inicialização que carrega os módulos listados na /etc/modules
. Outra maneira de carregar os módulos é se eles dependem de um módulo: se o módulo A depende do módulo B, modprobe A
carrega B antes de carregar A.
Depois que um módulo é carregado, ele permanece carregado até ser descarregado explicitamente, mesmo que todos os dispositivos que usam esse driver tenham sido desconectados. Há muito tempo, havia um mecanismo para descarregar automaticamente módulos não utilizados, mas ele foi removido, se bem me lembro, quando o udev entrou em cena. Suspeito que o descarregamento automático de módulos não seja um recurso comum, porque os sistemas que tendem a precisar dele são principalmente computadores de mesa que têm muita memória de qualquer maneira (na escala do código do driver).
/etc/modules
.rt2800usb
está na saída delsmod
, e isso significa que eu conectei seu dispositivo ao meu computador antes desde a inicialização?