Come funzionano i driver Linux e dove li trovo? (specialmente driver NIC)


11

Mi chiedo come funzioni un driver sotto Linux. I driver sono un singolo file che può essere modificato? Esiste un elenco di driver correnti in uso o esiste un posto diverso per trovarli per ciascun dispositivo?

Sono particolarmente interessato a conoscere il driver della mia scheda di rete.

Se sai dov'è una buona documentazione, mi piacerebbe anche leggerlo.

Risposte:


6

I driver sono molto simili a qualsiasi altro programma, possono essere composti da più file sorgente. I driver dei dispositivi Linux possono essere compilati direttamente nel kernel o in un modulo del kernel. I moduli del kernel hanno il vantaggio di poter essere caricati dinamicamente (cioè non è necessario compilare un nuovo kernel per usarli).

Ovviamente puoi sempre guardare il codice sorgente di Linux, ma all'inizio può essere un compito scoraggiante. Tuttavia, come in qualsiasi cosa in Linux i driver sono file. Ciò significa che altri programmi accedono ad essi tramite l'interfaccia VFS. Ad esempio, è possibile controllare il CD-ROM tramite ioctl()chiamate utilizzando il file del dispositivo.

Consiglio vivamente di dare un'occhiata ai Driver di dispositivo Linux . È disponibile gratuitamente e risponderà alle tue domande. In particolare, puoi leggere il capitolo 2 che mostra come creare un semplice modulo "Hello, Kernel". Potrebbe essere molto più di quello che stai chiedendo, ma puoi leggere i pezzi che ti interessano. Ed è gratuito. ; P


3

I driver Linux sono compilati con il kernel, compilati o come modulo. In alternativa, i driver possono essere compilati contro le intestazioni del kernel in un albero dei sorgenti. Puoi vedere un elenco dei moduli del kernel attualmente installati digitando lsmode, se installato, dai un'occhiata alla maggior parte dei dispositivi collegati tramite il bus usando lspci.

Se la versione corrente del kernel non ha il supporto del driver per la tua scheda NIC, dovrai trovare i driver presso il fornitore e dovrai compilare un modulo del kernel dal sorgente (contro le intestazioni del tuo kernel).


1

La maggior parte delle volte se qualcosa come la tua scheda di rete non viene visualizzata automaticamente, devi visitare il sito del produttore dell'hardware e vedere se hanno una versione di Linux.

In termini più generali, i driver Linux tendono ad assumere la forma di librerie o moduli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.