Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
Hardware-hard plus-pnp


Le Plug and play

Le Plug and play
par Serge
parfois appelé le Plug and Pray.

Avertissement

On nous demande souvent à quel type de matériel s'applique cette rubrique. Pour faire court, disons que PnP = cartes ISA seulement. Pour faire long, lisez le paragraphe ci-dessous !

Les cartes PCI, AGP, etc.. ne posent AUCUN probléme de configuration, elles sont toujours détectées suivant les spécifications des bus où elles se trouvent, et n'ont pas besoin d'utilitaire spécial de configuration quelque soit l'OS. On ne parle donc pas de PnP (ou alors c'est un abus de langage) pour des cartes PCI ou AGP. Le plug and play se fait ici au niveau du matériel qui gère seul l'allocation des ressources (IRQ, etc.).

Par contre les cartes ISA ont des problèmes de configuration (non automatique pour la détection de conflits, etc...), donc on a inventé un "protocole" de configuration/détection conflit : le PnP. Donc le PnP en tant que tel ne s'appliquent qu'aux cartes ISA (quelque soit l'OS)

PS: ll y a une "extension" du PnP pour des périphériques tels que l'écran, les périphs sur port parallèle, etc. mais ce n'est pas du PnP à proprement parler, ça ne permet pas de configurer le périph (de toute facon y'a rien a configurer, c'est le port où se trouve ce périph qu'il faut configurer et non pas le périph lui-même) mais juste de le détecter (le périph envoie une séquence lors de l'initialisation du port disant "coucou je suis là, et je m'appelle machin truc").

Voila donc PnP = cartes ISA SEULEMENT.

2 méthodes

Sous Linux le plug and play n'est pas aussi simple que sous Windows (quoi que des fois....), il arrive assez souvent que nos cartes plug and play refusent de marcher sous Linux. Il existe en fait deux méthodes pour bien configurer son Linux pour faire fonctionner de telles cartes.

Le BIOS

La première consiste à dévalider dans le BIOS de notre carte mère l'option PNP OS, et de configurer alors Linux comme si toute nos cartes n'étaient pas PNP. C'est la méthode la plus simple mais on perd alors la fonctionnalité du PNP sous linux, ce qui est un peu frustrant.

Le PnP sous Linux

La deuxième méthode consiste à utiliser le PNP sous Linux ; c'est cette méthode que je vais vous expliquer.
Tout d'abord il faut valider le PNP dans le bios, donc validez cette fois-ci le PNP OS dans le bios.
De plus, le PnP fonctionne avec les modules des cartes : enlevez de votre kernel toute la configuration qui se reporte aux cartes (si par exemple votre carte son est PnP et que dans votre noyau vous avez répondu "yes" pour configurer votre carte son et passé les paramètres de votre carte : irq, etc. vous enlevez tout), mais par contre vous compilez votre noyau avec les modules de vos cartes PnP.

Si on reprend l'exemple d'une carte son, au moment du CONFIG SOUND vous répondez M pour module et non pas Y ! En fait je vous explique, le chargement du PnP dans Linux se fait APRES le chargement du noyau, donc si vous configurez vos cartes dans le noyau, celui ci va les initialiser (sans y arriver en plus) et lorsque le PnP va tenter de les initialiser lui aussi, ça ne passera plus. Donc pour toutes les cartes PnP répondez par M dans la config du noyau.

Une fois ce travail exécuté, si vous avez une partition Windows 95 ou 98 sur votre machine, bootez dessus et notez la configuration de toutes vos cartes PNP (plage mémoire, irq, dma), puis rebootez sous linux. Il va déjà falloir vérifier que vous avez bien les isapnptools sur votre machine, pour cela lancez la commande
pnpdump>/etc/isapnp.conf
. Si ça marche, c'est que vous avez bien les isapnptools et que votre noyau supporte le PnP. Autrement il va falloir que vous téléchargiez les isapnptools et valider le PnP dans votre kernel. Si vous avez le message d'erreur "trying port adress ..." puis "no board found" c'est que votre carte mère n'est pas PnP ; il vous faut alors configurer vos cartes à la main comme si elles n'étaient pas PnP.

Une fois le programme lancé, celui-ci a créé en fait le fichier /etc/isapnp.conf. Ce fichier créé, éditez-le, à l'aide de vi par exemple. La structure d'un tel fichier peut paraître barbare mais en fait elle est très simple.

Tout d'abord ajoutez la ligne (VERIFYLD NO) dans le début du fichier : certaines cartes (dont par exemple la Sound Blaster AWE64) n'aiment pas du tout. Regardez alors les lignes. La plupart sont en commentaire (le # devant), et vous allez voir des IRQ, DMA , ADRESS dans ces lignes. Le plus important est de regarder les lignes non commentées (qui ne comportent pas de # au début) et vérifier bien que les paramètres sont bons par rapport à ceux qui étaient dans Windows. Si c'est bon on touche à rien, si c'est pas bon on commente la ligne et on recherche celle qui contient les bons paramètres irq, dma et adresse. Si vous ne la trouvez pas (très rare), remplacez alors dans la ligne qui ne contient pas le # les mauvais paramètres par les bons.

Une fois cette vérification faite, regardez à chaque fin de configuration de chaque carte (avant de passer dans un LD différent) que vous avez bien une ligne qui contient : (ACT Y), et qui n'est pas commentée (qui ne contient pas # au début donc). Une fois tout ça réalisé, tapez sous la console :

isapnp /etc/isapnp.conf

Regardez alors que vous n'avez pas de message d'erreur. Si un message d'erreur IORESCHECK s'affiche, notez par rapport à quel périphérique ce message apparaît, retournez dans le fichier isapnp.conf et effacez pour ce périphérique (IORESCHECK ..), et ça devrait passer sans problèmes (j'ai galêré 3 nuits pour comprendre que ma carte n'était pas en conflit, que c'etait en fait le contrôle de conflits d'adresses qui ne marchait pas tout simplement).

Si ça fonctionne, alors vous avez gagné ! Chargez les modules de vos cartes (
modprobe module
) pour rendre celles-ci opérationnelles.

On va un peu automatiser tout ca maintenant, pour cela activez l'autoload des modules dans le kernel, enable loadable module support Y, et Kernel daemon support Y.

Après, éditez le fichier /etc/conf.modules (s'il n'existe pas ça va le créer) et ajoutez les lignes pour vos modules de cette façon :

alias periph nom_du_module

C'est-à-dire prenons l'exemple pour une carte son Sound Blaster et une carte réseau compatible NE2000, le périphérique son s'apelle sound et la carte réseau s'apelle eth0 (vous n'avez pas le choix), le module Sound Blaster s'apelle sb et le module NE2000 s'apelle ne, ça nous donne alors:

alias sb sound


alias eth0 ne

Récapitulatif

Un petit récapitulatif des périphériques sous Linux (les plus courants) en sachant que vous pouvez mettre tous les modules (même des périphériques non PnP) pour qu'ils se chargent au démarrage. Attention certains ont besoin d'option(s), je ferai une petite rubrique spéciale pour les modules plus tard.

son sound
carte réseau 1, 2, etc... eth0, eth1, ...
carte scsi scsi_hostadapter
port paralléle parport_lowlevel

Pour les options, moi par exemple pour ma carte ethernet j'ai du repasser l'adresse et l'irq de ma carte, ceci se fait de cette façon toujours dans le fichier conf.modules :

options nom_modules les_options

exemple :

options ne io=0x240 irq=12
(pour une carte réseau a l'adresse 240 et irq 12) Attention l'adresse est en hexadécimal, donc de type 0xXXX, ne pas oublier le 0x qui n'apparait pas dans Windows.




@ Retour à la rubrique Matériel

Cette page est issue de la documentation 'pré-wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Serge Tchesmeli le 04/10/1999.

Copyright

Copyright © 04/10/1999, Serge Tchesmeli

Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la Licence pour documents libres, Version 1.1 publiée par la La Guilde des Doctorants. Pour plus d'informations consulter la LDL sur le site de La Guilde des Doctorants.
Affichages

Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons CC-BY-SA