12.3. Driver, moduli del kernel e dispositivi

I driver del bus del kernel cercano i dispositivi. Per ogni dispositivo rilevato il kernel crea una struttura interna e il core del driver invia un uevent al daemon udev. I dispositivi del bus si identificano da soli mediante un ID con un formato speciale che comunica di che tipo di dispositivo si tratta. In genere questi ID sono costituiti dall'ID del fornitore e del prodotto e da altri valori specifici del sottosistema. Ogni bus dispone di uno schema proprio per questi ID chiamato MODALIAS. Il kernel riceve le informazioni sul dispositivo che utilizza per comporre una stringa ID MODALIAS, quindi invia questa stringa insieme all'evento. Nel caso di un USB la stringa è simile alla seguente:

MODALIAS=usb:v046DpC03Ed2000dc00dsc00dp00ic03isc01ip02

Ogni driver di dispositivo include un elenco di alias noti per i dispositivi che è in grado di gestire. Questo elenco si trova nel file del modulo del kernel stesso. Il depmod del programma legge gli elenchi di ID e crea il file modules.alias nella directory /lib/modules del kernel per tutti i moduli correntemente disponibili. Con questa infrastruttura caricare il modulo è semplice come chiamare modprobe per ogni evento che contiene una chiave MODALIAS. Se si chiama il comando modprobe $MODALIAS, questo confronta l'alias composto per il dispositivo con gli alias forniti dai moduli. Se viene individuata una voce che corrisponde, il modulo viene caricato. Questa operazione viene attivata da udev ed eseguita automaticamente.