Ad ogni nuova release, le distribuzioni GNU/Linux migliorano dal punto di vista del riconoscimento hardware. Tanto che, già durante la fase di installazione, i dispositivi che compongono il PC sono configurati automaticamente e subito pronti all’uso. Purtroppo, è anche vero che capita spesso di imbattersi in qualche periferica che rifiuta di funzionare. In questi casi, solitamente, per risolvere il problema, si inizia subito con qualche ricerca su Google e post nei forum e nelle mailing-list. Ma, prima di andare avanti, è innanzitutto necessario conoscere in dettaglio il componente incriminato, altrimenti, quali aiuti possiamo ottenere se non conosciamo esattamente qual’è il modello della scheda video o quale chipset “pilota” la scheda audio che resta ostinatamente muta? Solitamente queste informazioni sono reperibili nella documentazione fornita a corredo del componente hardware. Ma se la manualistica è scarna oppure non più disponibile? Allora restano due alternative: aprire il PC, smontare il componente e cercare qualche sigla chiarificatrice, oppure, molto più semplicemente, eseguire qualche utility per l’identificazione dell’hardware.
Strumenti standard
GNU/Linux rileva una miriade di informazioni relative all’hardware su cui gira, ma il problema è che queste sono disponibili in modo frammentato e bisogna far ricorso a diversi strumenti per reperirle: vediamo quali sono quelli “classici” presenti in tutte le distribuzioni. Iniziamo dal boot del sistema: negli ultimi tempi le distribuzioni GNU/Linux preferiscono nascondere l’interminabile sfilza di messaggi che compaiono generalmente durante l’avvio con una schermata grafica sicuramente più accattivante ma che non fornisce nessun dato rilevante. Naturalmente, è comunque possibile leggere questi messaggi in un secondo tempo aprendo un terminale ed usando il comando dmesg. Per scorrere con comodità i messaggi conviene fare una pipe con il comando less: dmesg | less. Per ottenere, invece, dati dettagliati relativi a tutte le periferiche collegate al bus PCI della scheda madre bisogna usare il comando lspci. Ogni periferica è identificata da un codice numerico composto nel modo seguente:.
Nell’output riportato è possibile vedere che sul bus 00 sono collegate, tra gli altri, la scheda audio, il controller IDE e quello USB; i primi due sono gestiti dallo stesso controller che fa capo allo slot 02 (e sono identificati dalle funzioni 5 e 7), mentre il controller USB è collegato allo slot 03. Informazioni via via più dettagliate possono essere ottenute specificando dopo il comando lspci le opzioni -v, -vv e -vvv (la v sta per “verbose”, prolisso, ed in molti programmi a riga di comando corrisponde all’opzione che abilita i messaggi di output più esaustivi di quelli standard). Un comando analogo, lsusb, mostra invece l’elenco delle periferiche USB collegate al PC. In questo caso l’output del comando è molto sintetico e possiamo soltanto dedurre che la macchina possiede tre bus USB (numerati da 001 a 003), e solo sul bus 002 è collegata una periferica (identificata con Device 002). A questo punto vi chiederete: ma allora cos’è il Device 001 associato ad ogni bus? Eseguendo nuovamente il comando, ma specificando, anche in questo caso, l’opzione -v (lsusb -v), si ottengono dati più dettagliati che ci permettono di scoprire che il Device 001 è un hub interno al quale sono collegate, nella macchina dell’esempio, due porte USB in un solo bus. Oltre a questi, è anche disponibile il comando lspcmcia che consente di ottenere informazioni sulle periferiche collegate alle interfacce di tipo PCMCIA.
Hardware lister riga di comando…
Hardware Lister è una piccola utility che esamina l’hardware del PC e presenta all’utente, in modo più organico rispetto agli strumenti che abbiamo visto finora, un’infinità di informazioni: a titolo di esempio possiamo citare le caratteristiche del processore, versione del BIOS e funzionalità supportate, quantità e velocità della RAM, dettagli sulle periferiche PCI, USB, PCCard (conosciute anche come PCMCIA), dispositivi collegati ai canali IDE e SCSI (hard disk, lettori e masterizzatori CD e DVD), ecc. Questo software è presente tra i pacchetti precompilati di quasi tutte le distribuzioni; per installarlo, ad esempio, in Debian GNU/Linxu e derivate è sufficiente eseguire il comando apt-get install lshw lshw-gtk. Come è facile intuire dai nomi dei pacchetti, Hardware Lister può essere usato in due modi: eseguendo da terminale il comando lswh per visualizzare in console l’elenco dei dettagli sui componenti del sistema, oppure utilizzare l’interfaccia grafica, comando lshw-gtk. Per alcune distribuzioni i nomi dei pacchetti possono differire leggermente: ad esempio, con Fedora il comando per l’installazione del software è quello seguente: yum install lshw lshw-gui. Detto questo, l’uso da riga di comando è semplice ma occorre prestare attenzione ad eseguirlo con i privilegi del superuser (root) per non rischiare di ottenere solo informazioni parziali. Inoltre, dato che l’output del comando è piuttosto prolisso, può essere utile specificare l’opzione – html in modo da salvare i dati raccolti in un file HTML: lshw -html > rapporto.html. A questo punto, i file rapporto.html può essere consultato con un qualsiasi browser web.
L’alternativa HWINFO
Potente ma disponibile solo a riga di comando
Hwinfo è un software per l’identificazione dell’hardware del tutto analogo ad Hardware Lister ed è stato sviluppato in origine da SuSE Linux ma ora è presente nei repository di diverse distribuzioni. Per Ubuntu, ad esempio, è sufficiente abilitare il repository “universe” e, quindi, eseguire il classico apt-get install hwinfo. Il programma dispone solo dell’interfaccia a riga di comando ma raccoglie molte informazioni utili, anche più di Hardware Lister come, ad esempio, il nome del device (/dev/xxx) associato ad ogni componente, e il percorso all’interno dello pseudofilesystem /sys, dove è possibile trovare e modificare le impostazioni del kernel relative al dispositivo in esame.
Ricerca con KDE
Hardware Lister funziona, ma c’è pure KInfoCenter
Anche KDE dispone di una specifica applicazione grafica che raccoglie informazioni sull’hardware: KinfoCenter, eseguibile dal menu “K/Sistema/KInfoCenter”: al pari di Hardware Lister i dati rilevati sono organizzati in diverse categorie riportate nel riquadro di sinistra. Cliccando su una di queste (dispositivi PCI, USB, processore, porte I/O, interrupt, canali DMA, ecc..), nel riquadro di destra vengono mostrati i dettagli.
…e in modalità grafica
Il funzionamento a riga di comando è importante perché permette di usare il software per analizzare l’hardware anche quando non è ancora configurato il sistema grafico (ad esempio perché la scheda video non è stata riconosciuta), oppure quando si avvia il sistema in “rescue mode” per risolvere qualche problema. Tuttavia, Hardware Lister dispone anche di un’interfaccia grafica che può essere richiamata dal centro di controllo di Gnome. Ma anche chi non usa questo desktop environment può eseguire lshw-gtk, a patto che abbia installate le librerie Gtk. In KDE, l’installazione crea anche la relativa voce di avvio nel menu “K/Impostazioni”. All’avvio dell’applicazione vengono raccolte le informazioni sui dispositivi hardware presenti nel sistema e organizzate in diverse categorie che compaiono nei tre riquadri a sinistra della schermata. Gli elementi rappresentati in neretto raggruppano sotto di sé alcune sotto- categorie che possono essere espanse con un doppio clic. Quando si seleziona una categoria di livello più basso comparirà nel riquadro di destra il dettaglio delle informazioni relative. Hardware Lister è uno strumento molto utile e fornisce una miriade di informazioni, ma se proprio vogliamo trovargli qualche difetto, possiamo dire che il modo di scorrere le categorie è un po’ insolito e una classica rappresentazione ad albero sarebbe stata sicuramente più intuitiva. Altra pecca è costituita dal fatto che attualmente questo tool non rileva i dispositivi FireWire. È, comunque, sempre possibile utilizzare lspci o il tool specifico per la gestione di periferiche FireWire gscanbus ( http://gscanbus.berlios.de), in genere non presente tra i software installati di default.
Ma quanto parla questo lshw…
Vediamo come circoscrivere l’output ottenuto alla sola periferica che ci interessa
Scansione preliminare
I messaggi in uscita di lshw sono molto dettagliati ed a volte è complicato rintracciare la parte che riguarda la periferica incriminata. In questo caso possiamo innanzitutto eseguire una scansione dell’hardware lasciando la periferica scollegata e ridirigere l’output su un file: lshw > primo_ rapporto.txt.
Colleghiamo l’hardware
A questo punto possiamo collegare la periferica (quando si tratta di dispositivi USB o PCMCIA non è nemmeno necessario spegnere e riaccendere il computer) e ripetere l’operazione di scansione inviando l’output ad un secondo file di testo con il comando lshw > secondo_ rapporto.txt.
Troviamo le differenze
Infine, possiamo individuare il componente trovando le differenze tra i due file aiutandoci con il comando diff primo_rapport.txt secondo_ rapporto.txt. Volendo possiamo ridirigere nuovamente l’output di questo comando su un file da inviare magari via e-mail a chi può aiutarci a far funzionare la periferica.