Come ricercare, installare e disinstallare un driver in Linux

2 risposte [Ultimo contenuto]
Ritratto di Gandalfrank
Gandalfrank
(Geek)
Offline
Geek
Iscritto: 12/10/2012
Messaggi: 176

Ogni volta che installo una distro linux mi imbatto immancabilmente in problemi di compatibilità con alcuni componenti del mio Mac Book Pro (ad esempio la scheda WiFi).
In rete si trovano molte, TROPPE, soluzioni, alcune delle quali nemmeno funzionanti, ma tutte danno per scontato che il driver che pubblicizzano sia quello corretto per quella particolare periferica.
Ho imparato a mie spese, che di driver per un specifico componente ne esistono di diversi tipi, e non sempre è facile capire qual è quello giusto.

Come da titolo vorrei capire in che modo è possibile:

  1. conoscere il nome del driver corretto da installare,
  2. i comandi per installarlo,
  3. i comandi per rimuoverlo in caso di malfunzionamento.

Tutto questo per un LINUX GENERICO, non specificatamente per una distro particolare.
In alternativa una guida o un manuale cui riferirsi per apprendere come fare quanto descritto sopra.

thanks!
[/]

Ritratto di badroot
badroot
(Guru)
Offline
Guru
Iscritto: 22/08/2008
Messaggi: 2068

Ciao,
di solito la componentistica standard viene riconsociuta in automatico e gestita dal kernel e/o dai moduli forniti con l'installazione.
Normalmente con il comando

ls -l /lib/modules/`uname -r`/kernel/drivers

otterrai un elenco di cartelle al cui interno sono presenti i moduli per le varie tipologie di periferiche supportate.
Un ulteriore

ls -l /lib/modules/`uname -r`/kernel/drivers/drivers/net/wireless

visualizzerà moduli e o cartelle con moduli relativi alle schede wireless.
Spesso però è necessario installare anche del firmware, per esempio per le schede wireless INTEL, al fine di poter far funzionare la relativa periferica.
Con

apt-cache search firmware

hai una lista dei firmware disponibili con Debian, a patto di avere i repo contrib e non-free abilitati.
Per le schede video ATI di solito va installato anche il pacchetto firmware-linux-nonfree perchè queste possano funzionare.
Altre distribuzioni possono averli già installati di default, credo che Ubuntu per esempio ne installi in automatico una sfilza, in ogni caso la logica non cambia, cambia il gestore di pacchetti.
I comandi linux per gestire i moduli del kernel sono i seguenti :

lsmod per visualizzare i moduli attualmente caricati
modinfo per visualizzare le informazioni su un modulo
modprobe per caricare un modulo in memoria
rmmod per rimuovere un modulo dalla memoria

il comando modinfo ritorna le informazioni che ti permettono di capire se il modulo necessità di firmware e per quali device ( ID PCI ) è valido.
Nella cartella /etc/modprobe.d trovi i file di configurazione dei moduli che in base alle opzioni ti permettono di caricare un modulo con determinati parametri o di non caricarlo per niente qualora fosse necessario.

Ovviamente, e qui credo che sia la natura della tua domanda, esiste il caso in cui il driver/modulo non sia presente e quindi vada compilato a mano utilizzando sorgenti forniti dal produttore del device oppure forniti da qualche volenteroso.
In questi casi c'è di mezzo la compilazione e quando si parla di moduli possono esserci problemi di incompatibilità tra il codice sorgente e la versione specifica del kernel in uso, ma se la compilazione non da errori una volta installato il modulo la gestione dello stesso divenda standard.

Forse non è molto ma spero ti possa essere se non d'aiuto di spunto per ulteriori approfondimenti.

Ritratto di Gandalfrank
Gandalfrank
(Geek)
Offline
Geek
Iscritto: 12/10/2012
Messaggi: 176

Ciao badroot, Smile
come al solito sei stato chiaro, semplice ed esaustivo.

Di più non potevo sperare!

Grazie mille.