Page suivantePage précédenteTable des matières

7. Quelle est ma configuration actuelle?

Ici "configuration" concerne l'attribution des ressources PnP du bus (adresses, IRQ, et DMA). C'est une question à deux volets pour chaque périphérique, et chacun d'eux doit avoir le même réponse.

  1. Quelle est la configuration du logiciel du pilote de périphérique ? Autrement dit : comment le pilote pense-t-il que le matériel est configuré ?
  2. Quelle est la configuration (s'il y a lieu) du matériel périphérique ?

Naturellement la configuration matérielle du périphérique et celle de son pilote doivent être les mêmes (et normalement, c'est le cas). Mais, si les choses ne se passent pas bien, c'est qu'il y a peut-être une différence. Cela signifie que le pilote a des données incorrectes concernant la configuration réelle du matériel, et dysfonctionnement. Si le logiciel que vous utilisez ne vous indique pas correctement ce qui ne va pas (ou n'effectue pas la configuration correcte automatiquement), il vous faudra chercher la configuration matérielle des périphériques et celle des pilotes correspondants. Alors que les pilotes de périphériques de Linux devraient "tout nous dire", il y a des cas où il n'est pas facile de déterminer comment le matériel a été configuré.

Un autre problème vient de ce que les messages à l'écran indiquant la configuration ne sont pas toujours clairs quant à la nature de la configuration qu'ils concernent : le pilote de périphérique, le périphérique lui-même ou les deux. Si le pilote de périphérique s'est vu attribué une configuration et qu'ils teste le matériel pour vérifier qu'il est configuré de la même manière, alors la configuration indiquée par le pilote devrait être à la fois celle du pilote et du matériel.

Mais certains pilotes ne se comportent pas comme cela et peuvent accepter une configuration qui ne puisse pas se vérifier. Par exemple, "setserial" acceptera une configuration qui ne se vérifie pas (même si vous demandez un test des ressources du bus). Dans ce cas "setserial" peut uniquement vous indiquer la configuration du pilote et pas celle du matériel.

Quelques infos concernant la configuration peuvent être obtenues en lisant les messages du BIOS et de Linux qui apparaissent à l'écran au démarrage initial de l'ordinateur. Souvent, ces messages défilent trop rapidement pour pouvoir être lus, mais lorsque leur défilement s'arrête, tapez plusieurs fois sur la touche "Majuscule + défilement arrière" (Shift-PageUp) pour les visualiser. Pour visualiser la suite, taper sur la touche "Majuscule + défilement avant" (Shift-PageDow). La commande "dmesg" n'importe quand n'affichera que les messages du noyau Linux et les messages les plus importants peuvent manquer (y compris ceux du BIOS). Les messages de Linux peuvent quelquefois n'indiquer que la vue de la configuration par les pilotes de périphérique, et ces informations peuvent parfois provenir d'un fichier de configuration incorrect.

Les messages du BIOS affichent la configuration réelle du matériel à cet instant donné, mais un SE PnP, isapnp ou les utilitaires PCI peuvent la modifier ultérieurement. Les messages du BIOS sont affichés avant ceux de Linux. Comme alternative au rappel des messages par les touches "majuscule + défilement arrière", essayez de geler l'affichage en tapant sur la touche "Pause". Taper sur n'importe quelle touche pour continuer. Mais, une fois que les messages de Linux commencent à apparaître, c'est trop tard pour utiliser la touche "Pause" puisqu'alors, les messages de Linux ne sont pas gelés.

7.1 Comment mes pilotes de périphériques sont-ils configurés ?

Il y a des programmes que l'on peut lancer de la ligne de commande (tel que "setserial" pour les ports série) pour le déterminer. L'arborescence du répertoire /proc est utile. /proc/ioports indique les adresses d'E/S utilisées par les pilotes (ou essaye si c'est faux). Ils peuvent ne pas être configurés de cette façon dans le matériel.

/proc/interrupts n'indique que les interruptions utilisées actuellement et beaucoup de celles qui ont été allouées aux pilotes ne sont pas affichées car elles ne sont pas actuellement utilisées. Par exemple, même s'il y a une disquette dans l'unité et qu'elle est prête à être utilisée, l'interruption la concernant ne sera pas affichée, à moins qu'elle ne soit effectivement en cours d'utilisation. De plus, une interruption indiquée ici ne signifie pas qu'elle existe dans le matériel. Un indice du fait qu'elle n'existe pas dans le matériel consiste à vérifier que le nombre d'interruptions générées est 0. Et encore, même si l'on voit que quelques interruptions ont été générées, cela peut signifier que cette interruption n'existe pas pour ce périphérique mais par un autre périphérique qui n'est pas en cours d'utilisation mais qui a pu générer une interruption ou deux. Dans le noyau 2.2 l'arborescence /proc a été modifiée.

7.2 Comment mes périphériques sont-ils configurés ?

C'est facile de trouver quelles ressources du bus ont été attribuées à des périphériques sur un bus PCI : on utilise soit la commande "lspci" ou, pour les noyaux <: 2.2: voir /proc/pci; pour les noyaux 2.2+: /proc/bus/pci/devices. Pour le bus ISA, on peut essayer de faire tourner pnpdump --dumpregs, mais ce n'est pas une méthode sûre. Les résultats peuvent être difficile à décoder. Ne pas confondre les adresses de port de lecture que pnpdump "essaye" (et où il trouve quelque chose) avec les adresses d'E/S du périphérique trouvé. Ce ne sont pas les mêmes.

Les messages en provenance du BIOS, lors du démarrage, indique la configuration matérielle au moment du démarrage. Si vous vous basez sur le BIOS pour faire votre configuration, ils faut qu'elle soit encore valable. Les messages de Linux peuvent provenir des pilotes qui ont fait des essais pour vérifier la présence du matériel (et éventuellement des essais sur les IRQ et le DMA). Naturellement, si le périphérique fonctionne correctement, alors il doit être configuré comme son pilote.


Page suivantePage précédenteTable des matières