[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume] [parte]


Capitolo 82.   Problemi di configurazione dell'hardware

Il Plug & Play è un protocollo il cui scopo è quello di consentire al firmware e al sistema operativo di identificare facilmente l'hardware ed eventualmente di riconfigurarlo nel modo più opportuno. I kernel Linux recenti incorporano delle funzionalità di Plug & Play (sezione 67.2.9), tuttavia questo non basta a risolvere tutti i problemi che si possono presentare con l'hardware che utilizza questo standard.

82.1   Configurazione del firmware BIOS

In presenza di hardware PCI e Plug & Play è necessario verificare la configurazione del firmware BIOS a questo proposito. Se tutto l'hardware installato può essere suddiviso semplicemente in schede ISA tradizionali (che non sono Plug & Play) e schede PCI, dovrebbe essere conveniente indicare al BIOS che non si dispone di un sistema operativo Plug & Play. In questo modo si lascia al BIOS il compito di gestire opportunamente l'hardware PCI.

PnP Operating System: NO

Tuttavia, questi tipi di BIOS richiedono l'indicazione, più o meno dettagliata, dei livelli IRQ che sono riservati alle schede ISA e di quelli che sono disponibili per le schede PCI e per il Plug & Play. A volte, per indicare che un livello IRQ è riservato a schede ISA tradizionali, si usa la definizione legacy ISA. Per esempio:

IRQ3  available to: ISA
IRQ4  available to: ISA
    ...
IRQ9  available to: PCI/PnP
IRQ10 available to: PCI/PnP
    ...

Oppure:

IRQ3:  Legacy ISA
IRQ4:  Legacy ISA
    ...
IRQ9:  available
IRQ10: available
    ...

Nei BIOS più vecchi potrebbe essere stato previsto solo l'elenco dei livelli IRQ disponibili per le schede PCI e per il Plug & Play, sottintendendo che il resto è destinato a componenti ISA tradizionali.

1st available IRQ:  9
2nd available IRQ: 10
3rd available IRQ: 11
4th available IRQ: 13

Eventualmente, in presenza di schede ISA Plug & Play, se si hanno difficoltà a utilizzare gli strumenti per la gestione del Plug & Play all'interno del sistema operativo, si può provare a indicare al BIOS che si dispone di un sistema capace di gestirlo:

PnP Operating System: YES

Tuttavia, dopo aver provato, è bene mantenere questo tipo di configurazione solo nel caso in cui siano osservati effettivamente dei risultati migliori. In generale, dovrebbe convenire il lasciare fare tutto al BIOS.

82.2   Punto di vista del kernel Linux

Quando si hanno difficoltà con le configurazioni hardware, ma il sistema operativo si avvia ugualmente anche senza riuscire a gestire quella scheda particolare per la quale ci si sta impegnando tanto, è importante osservare cosa riconosce il kernel Linux della situazione attuale. Questo lo si ottiene analizzando alcuni file virtuali contenuti nella directory /proc/: dma, interrupts, ioports e altri.

A partire dai kernel Linux ≥ 2.6.0 il file virtuale /proc/pci è diventato obsoleto e in sua mancanza si preferisce utilizzare semplicemente il comando lspci, per consultare lo stato del bus PCI.

82.2.1   File «/proc/dma»

Il file /proc/dma contiene l'elenco dei canali DMA utilizzati. In generale si dovrebbe osservare almeno il contenuto seguente:

 4: cascade

82.2.2   File «/proc/interrupts»

Il file /proc/interrupts elenca i livelli di IRQ utilizzati in un certo momento. Si osservi l'esempio seguente:

           CPU0       
  0:    2887002          XT-PIC  timer
  1:      61130          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  5:          0          XT-PIC  EMU10K1
  8:          4          XT-PIC  rtc
 10:        123          XT-PIC  aic7xxx
 11:      25406          XT-PIC  usb-uhci, eth0
 12:      67263          XT-PIC  PS/2 Mouse
 14:      58170          XT-PIC  ide0
 15:      55578          XT-PIC  ide1
NMI:          0 
ERR:          0

Come si vede, non appaiono gli IRQ delle porte seriali e delle porte parallele, ma di queste occorre tenere conto ugualmente. Di solito si tratta di IRQ 4 e IRQ 3 per la prima e la seconda porta seriale, di IRQ 7 per la prima porta parallela ed eventualmente di IRQ 5 per la seconda porta parallela (ammesso che questa esista effettivamente).

Bisogna ricordare che IRQ 2 e IRQ 9 sono in pratica la stessa cosa. La voce cascade a fianco di IRQ 2 sta a sottolineare questo fatto.

82.2.3   File «/proc/ioports»

Il file /proc/ioports contiene l'elenco degli indirizzi di I/O utilizzati. Quello che si ottiene leggendo questo file potrebbe essere simile all'esempio seguente:

0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
02f8-02ff : serial(set)
0376-0376 : ide1
0378-037a : parport0
037b-037f : parport0
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(set)
0cf8-0cff : PCI conf1
d000-d00f : VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C \
  \PIPC Bus Master IDE d000-d007 : ide0 d008-d00f : ide1 d400-d41f : VIA Technologies, Inc. USB d400-d41f : usb-uhci d800-d8ff : VIA Technologies, Inc. VT6102 [Rhine-II] d800-d8ff : via-rhine dc00-dc1f : Creative Labs SB Live! EMU10k1 dc00-dc1f : EMU10K1 e000-e007 : Creative Labs SB Live! MIDI/Game Port e000-e007 : emu10k1-gp e400-e4ff : Adaptec AIC-7861

82.2.4   Informazioni sul bus PCI

Il file system virtuale collocato a partire dalla directory /proc/ contiene informazioni molto importanti a proposito del bus PCI. Per la sua consultazione è conveniente usare il programma lspci; vale la pena di confrontare informazioni che si ottengono in questo modo rispetto a quanto già descritto a proposito di IRQ, indirizzi di I/O e DMA, oltre a quanto definito nella configurazione del firmware BIOS.

lspci -v[Invio]

00:00.0 Host bridge: VIA Technologies, Inc. VT82C693A/694x \
  \[Apollo PRO133x] (rev 44) Flags: bus master, medium devsel, latency 0 Memory at d0000000 (32-bit, prefetchable) [size=64M] Capabilities: <available only to root> 00:01.0 PCI bridge: VIA Technologies, Inc. VT82C598/694x \
  \[Apollo MVP3/Pro133x AGP] (prog-if 00 [Normal decode]) Flags: bus master, 66Mhz, medium devsel, latency 0 Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 Capabilities: <available only to root> 00:07.0 ISA bridge: VIA Technologies, Inc. VT82C596 ISA [Mobile South] (rev 23) Subsystem: VIA Technologies, Inc. VT82C596/A/B PCI to ISA Bridge Flags: bus master, stepping, medium devsel, latency 0 00:07.1 IDE interface: VIA Technologies, Inc. \
  \VT82C586A/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE \
  \(rev 10) (prog-if 8a [Master SecP PriP]) Flags: bus master, medium devsel, latency 32 I/O ports at d000 [size=16] Capabilities: <available only to root> 00:07.2 USB Controller: VIA Technologies, Inc. USB (rev 11) (prog-if 00 [UHCI]) Subsystem: VIA Technologies, Inc. (Wrong ID) USB Controller Flags: bus master, medium devsel, latency 32, IRQ 11 I/O ports at d400 [size=32] Capabilities: <available only to root> 00:07.3 Host bridge: VIA Technologies, Inc. VT82C596 Power Management (rev 30) Flags: medium devsel 00:11.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 42) Subsystem: D-Link System Inc DFE-530TX rev A Flags: bus master, medium devsel, latency 32, IRQ 11 I/O ports at d800 [size=256] Memory at d9000000 (32-bit, non-prefetchable) [size=256] Expansion ROM at <unassigned> [disabled] [size=64K] Capabilities: <available only to root> 00:12.0 VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 01) \
  \(prog-if 00 [VGA]) Subsystem: S3 Inc. ViRGE/DX Flags: bus master, medium devsel, latency 32, IRQ 9 Memory at d4000000 (32-bit, non-prefetchable) [size=64M] Expansion ROM at <unassigned> [disabled] [size=64K] 00:13.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 08) Subsystem: Creative Labs CT4832 SBLive! Value Flags: bus master, medium devsel, latency 32, IRQ 5 I/O ports at dc00 [size=32] Capabilities: <available only to root> 00:13.1 Input device controller: Creative Labs SB Live! MIDI/Game Port (rev 08) Subsystem: Creative Labs Gameport Joystick Flags: bus master, medium devsel, latency 32 I/O ports at e000 [size=8] Capabilities: <available only to root> 00:14.0 SCSI storage controller: Adaptec AIC-7861 (rev 01) Flags: bus master, medium devsel, latency 32, IRQ 10 I/O ports at e400 [disabled] [size=256] Memory at d9001000 (32-bit, non-prefetchable) [size=4K] Expansion ROM at <unassigned> [disabled] [size=64K]

82.3   Problemi con le schede ISA Plug & Play

Riguardo all'hardware Plug & Play, i problemi maggiori si hanno con le schede ISA e a volte con quei componenti addizionali integrati nella scheda madre (per esempio per la gestione dell'audio). I motivi possono essere di due tipi: l'hardware in questione può non essere perfettamente aderente alle specifiche del Plug & Play, oppure la gestione del kernel per questi componenti può essere rimasta legata a versioni vecchie, non Plug & Play, dello stesso hardware. Nel primo caso c'è poco da fare, nel secondo, occorre utilizzare del software esterno per configurare queste schede nel modo in cui poi il kernel si aspetta di trovarle.

82.3.1   Isapnptools

Il pacchetto Isapnptools (1) permette di interrogare le schede Plug & Play e di eseguire le operazioni di riconoscimento tipiche di un BIOS Plug & Play. Inoltre, dopo aver determinato le possibilità di queste schede, può impostare la configurazione prescelta.

L'utilizzo di Isapnptools può creare dei conflitti con il sistema operativo in funzione, nella maggior parte dei casi, tanto che si rischia di bloccare tutto in modo irreversibile (si può utilizzare solo il tastino di reinizializzazione o direttamente l'interruttore generale dell'elaboratore).

Ciò significa che questi strumenti vanno usati con prudenza, possibilmente con un sistema avviato in modo da avere il minor numero di servizi attivi (single), anche se questo fatto non esclude tutti i rischi di perdita dei dati.

Il pacchetto Isapnptools si compone fondamentalmente di isapnp, per configurare le schede una volta determinate le loro caratteristiche Plug & Play, il file /etc/isapnp.conf, da preparare con le impostazioni che si vogliono fissare nelle schede, infine il programma pnpdump, che aiuta a realizzare il file /etc/isapnp.conf.(2)

Se si dispone di una scheda ISA Plug & Play per la quale si vorrebbe definire la configurazione, si potrebbe usare pnpdump, che si occupa di scandire le schede di questo tipo, generando un rapporto utile come punto di partenza per realizzare il file di configurazione /etc/isapnp.conf. Purtroppo si tratta di un'operazione delicata che rischia di bloccare il sistema.

pnpdump | less[Invio]

Quello che si ottiene potrebbe essere qualcosa di simile al listato seguente, dove in particolare si rivela la presenza di una scheda SoundBlaster (Creative SB32 PnP).

    ...
# Trying port address 0203
# Trying port address 020b
# Board 1 has serial identifier 9a 00 04 09 49 48 00 8c 0e

# (DEBUG)
(READPORT 0x020b)
(ISOLATE PRESERVE)
(IDENTIFY *)

# Card 1: (serial identifier 9a 00 04 09 49 48 00 8c 0e)
# Vendor Id CTL0048, Serial Number 264521, checksum 0x9A.
# Version 1.0, Vendor version 1.0
# ANSI string -->Creative SB32 PnP<--
#
# Logical device id CTL0031
#
# Edit the entries below to uncomment out the configuration required.
# Note that only the first value of any range is given, this may be
# changed if required
# Don't forget to uncomment the activate (ACT Y) when happy

(CONFIGURE CTL0048/264521 (LD 0
#     ANSI string -->Audio<--

# Multiple choice time, choose one only !

#     Start dependent functions: priority preferred
#       IRQ 5.
#             High true, edge sensitive interrupt (by default)
# (INT 0 (IRQ 5 (MODE +E)))
#       First DMA channel 1.
#             8 bit DMA only
#             Logical device is not a bus master
#             DMA may execute in count by byte mode
#             DMA may not execute in count by word mode
#             DMA channel speed in compatible mode
    ...
#     End dependent functions
# (ACT Y)
))
    ...

Osservando attentamente il risultato, si comprende che le direttive necessarie per definire le risorse dei componenti sono tutte commentate. In pratica, si potrebbe utilizzare questo risultato togliendo i commenti dove opportuno.

pnpdump > /etc/isapnp.conf[Invio]

Il comando che si vede serve proprio per generare un file /etc/isapnp.conf pronto per essere modificato in base alle scelte personali. Tuttavia, si potrebbe essere imbarazzati davanti a tutte le scelte possibili. In questo senso viene in aiuto l'opzione -c di pnpdump, con la quale questo programma cerca di determinare anche quale sia la configurazione più sicura, generando un file in cui le direttive «giuste» appaiono senza commento.

Per ottenere questo si avvale anche di lspci che deve essere stato installato, allo scopo di permettere l'interrogazione delle informazioni attuali sulle unità PCI. Questo programma, lspci, dovrebbe trovarsi nel pacchetto PCIutils, ovvero Linux PCI utilities.

pnpdump -c > /etc/isapnp.conf[Invio]

Anche con un file generato in questo modo è bene essere prudenti. In generale è meglio commentare tutte le direttive riferite a unità che funzionano già per conto proprio. Una volta definito il file di configurazione che si ritiene corretto, si utilizza isapnp per impostare le schede Plug & Play.

isapnp /etc/isapnp.conf[Invio]

La dichiarazione di ogni componente Plug & Play, come si vede dal file generato da pnpdump, deve terminare con l'istruzione (ACT Y) e subito dopo si devono chiudere le parentesi che sono state aperte all'inizio del blocco: (CONFIGURE ... ( ... )). Se manca questa istruzione, la configurazione non viene passata alla scheda corrispondente, mentre se mancano le parentesi di conclusione, si rischia di includere le istruzioni successive che invece si rivolgono a componenti differenti.

Si è accennato al fatto che con pnpdump si rischia di bloccare il sistema. Questo programma, per trovare le schede Plug & Play, deve eseguire una scansione di indirizzi di I/O nell'intervallo tra 20316 e 3FF16. Mentre esegue questa scansione può entrare in conflitto con qualcosa (e questo succede sicuramente se non trova alcuna scheda ISA Plug & Play). Se ciò accade, si dovrebbe avere il modo di annotare l'indirizzo a partire dal quale si è verificato il problema. In seguito, dopo aver riavviato l'elaboratore, si può ritentare la scansione utilizzando un indirizzo di partenza successivo rispetto a quello.

pnpdump -c 0x320 > /etc/isapnp.conf[Invio]

In questo caso si richiede espressamente di iniziare la scansione da 32016, nella speranza di saltare indirizzi precedenti che hanno creato dei problemi.

82.4   Hwdiag

La distribuzione Red Hat ha proposto in passato il programma Hwdiag (3) per il riconoscimento dell'hardware. Si tratta precisamente dell'eseguibile hwdiag (il nome del file RPM dovrebbe essere rhs-hwdiag-*i386.rpm). Trattandosi di qualcosa che scandisce tutto l'hardware, comprese le porte seriali e parallele, c'è sempre il rischio che a seguito della scansione il sistema operativo resti bloccato, per cui è bene ridurre l'attività al minimo prima di provare a utilizzarlo.

In particolare, la sua breve documentazione ricorda i rischi legati alla scansione delle porte seriali. Per esempio, il fatto di avere il demone gpm in funzione per controllare un mouse seriale, comporta poi un conflitto con la scansione di hwdiag, che porta al blocco delle applicazioni che utilizzano il mouse stesso. Ancora peggio se in quel momento è in funzione il sistema grafico X che utilizza un mouse seriale.

Tuttavia, anche con questi rischi può essere utile raccogliere tutte le informazioni che si riescono ad avere sull'hardware del proprio elaboratore. Il programma si avvia semplicemente, senza opzioni:

hwdiag[Invio]

La figura 82.11 mostra la maschera iniziale di questo programma, mentre la figura 82.12 mostra il risultato di una scansione ipotetica: come si vede dai pulsanti grafici, è possibile salvare il rapporto in un file.

Figura 82.11. La maschera iniziale di hwdiag.

.----------------------| Introduction |----------------------.
|                                                            |
|     The Red Hat HW Discovery Utility is intended to aid    |
|    end-users in determining the hardware installed in      |
|    their system. By using various probing methods (PCI,    |
|    PnP, etc), this utility should find most post-1994      |
|    hardware. On older machines hardware may not be         |
|    detected, since there were few standards on how to      |
|    detect hardware back then.                              |
|                                                            |
|                  Would you like to continue?               |
|                                                            |
|                  .----.            .------.                |
|                  | Ok |            | Quit |                |
|                  `----'            `------'                |
|                                                            |
`------------------------------------------------------------'

Figura 82.12. Il risultato di una scansione con hwdiag.

.---------------------| Currently Installed Devices |----------------------.
|                          Probe                                           |
|    Port         Bus      Status      Mfg/Model/Description               |
|   ------       -----    --------    -----------------------              |
| /dev/lp0     PARALLEL   LOCKED      No info available for this port.    #|
| /dev/lp1     PARALLEL <Port does not exist>                             X|
| /dev/lp2     PARALLEL <Port does not exist>                             X|
| /dev/psaux    PSAUX   <Port does not exist>                             X|
| /dev/hda       IDE    IDE device    QUANTUM SIROCCO1700A/HARD DRIVE/    X|
| /dev/hdb       IDE      FAILED      No info available for this port.    X|
| /dev/hdc       IDE      FAILED      No info available for this port.    X|
| /dev/hdd       IDE      FAILED      No info available for this port.    X|
| /dev/hde       IDE      FAILED      No info available for this port.    X|
| /dev/hdf       IDE      FAILED      No info available for this port.    X|
|                                                                          |
|             .------.    .-----------------.    .------.                  |
|             | Help |    | Generate Report |    | Quit |                  |
|             `------'    `-----------------'    `------'                  |
|                                                                          |
`--------------------------------------------------------------------------'

Si veda anche il programma sndconfig (del pacchetto omonimo), il cui scopo è quello di facilitare l'individuazione e la configurazione di schede audio (Plug & Play e anche non). Se ne trova la descrizione nella sezione 757.2.2.

82.5   Riferimenti


1) Isapnptools   GNU GPL

2) Il funzionamento di questi programmi viene mostrato in maniera superficiale. Per approfondire l'argomento occorrerebbe studiare qualcosa sulle specifiche Plug & Play e quindi leggere i documenti isapnp(8), isapnp.conf(5) e pnpdump(8).

3) Hwdiag   GNU GPL


Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome problemi_di_configurazione_dell_x0027_hardware.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory