Eles são carregados com base na detecção de hardware. No caso do seu módulo e1000e
, o hardware da sua máquina, seja ela a bordo ou uma placa de plug-in, identificar-se-á com um par ID de fornecedor e ID de dispositivo PCI e esses serão comparados com os módulos disponíveis e qualquer módulo que identifique próprio com esse ID será carregado.
Você pode ver os IDs associados ao módulo e1000e
executando modinfo e1000e
, que informará algo assim:
filename: /lib/modules/3.9.5-301.fc19.x86_64/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
version: 2.2.14-k
license: GPL
description: Intel(R) PRO/1000 Network Driver
author: Intel Corporation, <[email protected]>
srcversion: 28B371A0E50A24E26204016
alias: pci:v00008086d00001559sv*sd*bc*sc*i*
alias: pci:v00008086d0000155Asv*sd*bc*sc*i*
alias: pci:v00008086d0000153Bsv*sd*bc*sc*i*
alias: pci:v00008086d0000153Asv*sd*bc*sc*i*
...
Somente com uma lista muito longa de alias
linhas, cada uma identificando um dispositivo PCI específico que o módulo é capaz de suportar.
Conforme os dispositivos aparecem, o kernel do Linux os anunciará ao userspace usando uevents, e o daemon do udev irá combinar os IDs do dispositivo com o banco de dados do módulo e carregar os módulos corretos.