Quando il kernel rileva un nuovo dispositivo, esegue il programma modprobe
e gli passa un nome che identifica il dispositivo. La maggior parte dei dispositivi viene identificata tramite numeri registrati per un fornitore e un modello, ad esempio identificatori PCI o USB . Il modprobe
programma consulta la tabella degli alias del modulo per trovare il nome del file che contiene il driver per quel particolare dispositivo. Un principio simile si applica ai driver per cose che non sono dispositivi hardware, come filesystem e algoritmi crittografici. Per maggiori dettagli, vedere Debian non rileva la scheda PCI seriale dopo il riavvio/lib/modules/VERSION/modules.alias
Una volta che modprobe ha identificato quale file del modulo ( .ko
) contiene il driver richiesto, carica il file del modulo nel kernel: il codice del modulo viene caricato dinamicamente nel kernel. Se il modulo viene caricato correttamente, verrà visualizzato nell'elenco da lsmod
.
Il caricamento automatico dei moduli avviene quando il kernel rileva nuovo hardware hot plug, ad esempio quando si collega una periferica USB. Il sistema operativo esegue inoltre un enumerazione di tutto l'hardware presente sul sistema durante l'avvio, al fine di caricare i driver per le periferiche presenti all'avvio.
È anche possibile richiedere manualmente il caricamento di un modulo con il comando modprobe
o insmod
. La maggior parte delle distribuzioni include uno script di avvio che carica i moduli elencati in /etc/modules
. Un altro modo per caricare i moduli è se sono una dipendenza di un modulo: se il modulo A dipende dal modulo B, quindi modprobe A
carica B prima di caricare A.
Una volta caricato, un modulo rimane caricato fino a quando non viene scaricato esplicitamente, anche se tutti i dispositivi che utilizzano quel driver sono stati disconnessi. Molto tempo fa, c'era un meccanismo per scaricare automaticamente i moduli inutilizzati, ma è stato rimosso, se ricordo bene, quando udev è entrato in scena. Ho il sospetto che lo scarico automatico dei moduli non sia una caratteristica comune perché i sistemi che tendono ad averne bisogno sono per lo più PC desktop che hanno comunque molta memoria (sulla scala del codice del driver).
/etc/modules
.rt2800usb
è nell'output dilsmod
, e ciò significa che ho collegato il suo dispositivo al mio computer prima dall'avvio?