Page suivante Page précédenteTable des matières

10. Questions diverses.

Tout ce qui se rapporte à Ethernet et qui ne rentrait pas ailleurs se retrouve ici. Ce n'est peut-être pas significatif, ni intéressant pour tout le monde, mais de totue façon, c'est là.

10.1 Passage des arguments Ethernet au noyau

Voici deux commandes génériques du noyau qui peuvent être passées au noyau au moment du démarrage (ether et reserve). Vous pouvez le faire avec LILO, loadlin, ou tout autre utilitaire de démarrage qui accepte des arguments optionnels.

Par exemple, si la commande était `blabla' et qu'elle attende trois arguments (disons 123, 456 et 789), alors, avec LILO, vous pourriez taper au démarrage :

LILO: linux blabla=123,456,789

Pour plus d'informations, ainsi qu'une liste complète, sur les arguments de démarrage, veuillez consulter le

BootPrompt-HOWTO

L'argument ether

La commande ether= est utilisée en conjonction avec le pilote compilé dans le noyau. Le ether= n'aura absolument aucun effet sur un pilote modulaire. Sous sa forme la plus générique, elle ressemble à quelque chose comme :

ether=IRQ,ADR_DE_BASE,PARAM_1,PARAM_2,NOM

Tous les arguments sont optionnels. Le premier argument non-numérique est considéré comme le NOM.

IRQ: Evident. Une valeur d'IRQ de `0' (habituellement la valeur par défaut) signifie affectation automatique de l'IRQ. C'est un accident de l'Histoire que le paramètre d'IRQ soit en premier plutôt que l'adresse de base -- cela sera corrigé lorsque quelque chose d'autre changera.

ADR_DE_BASE: Evident aussi. Une valeur de `0' (habituellement la valeur par défaut) signifie de tester une liste d'adresses spécifiques à ce type de carte pour essayer de détecter une carte Ethernet.

PARAM_1: Utilisé à l'origine comme une valeur qui passe outre l'adresse de départ de la zone mémoire pour une carte Ethernet à mémoire partagée, comme la WD80*3. Certains pilotes utilisent les quatre bits de poids faible de cette valeur pour fixer le niveau de message de débogage. 0 -- défaut, 1-7 -- niveaux 1 à 7 (7 étant le niveau le plus bavard), 8 -- niveau 0 (pas de messages). Le pilote LANCE utilise les quatre bits de poids faible de cette valeur pour sélectionner le canal DMA. Sinon il utilise l'affectation automatique du DMA.

PARAM_2: Le pilote 3c503 l'utilise pour choisir entre le transceiver interne et le transceiver externe. 0 -- défaut/interne, 1 -- AUI externe. Les cartes E21XX de Cabletron utilisent les quatre bits de poids faible de PARAM_2 pour choisir le support physique. Sinon il est détecté automatiquement.

NOM: Sélectionne le périphérique réseau auquel les valeurs se réfèrent. Le noyau standard utilise les noms `eth0', `eth1', `eth2' et `eth3' pour les cartes Ethernet attachées au bus, et `atp0' pour l'adaptateur `de poche' sur port parallèle. Le pilote ARCnet utilise le nom `arc0'. Le comportement par défaut est de tester une seule carte Ethernet pour `eth0'. Vous ne pouvez activer plusieurs cartes qu'en fixant de façon explicite leur adresse de base avec les paramètres de LILO. Le noyau 1.0 considérait les cartes Ethernet basées sur la puce LANCE comme un cas spécial. Les arguments de LILO étaient ignorés, et les cartes LANCE recevaient toujours des noms `eth<n>' en commençant à `eth0'. Les cartes supplémentaires, non-LANCE, devaient être affectées à `eth<n+1>', et le test habituel de `eth0' devait alors être désactivé avec quelque chose comme `ether=0,-1,eth0'. (Oui, c'est bogué.)

La commande reserve

Cette autre commande LILO est utilisée exactement comme la commande `ether=' ci-dessus, c'est-à-dire que l'on ajoute son nom aux options spécifiées dans lilo.conf :

reserve=IO-base,extent{,IO-base,extent...}

Sur certaines machines, il peut être nécessaire d'empêcher les pilotes de périphérique de tester des périphériques (auto-détection) dans une zone spécifique. Cela peut être le cas à cause d'un matériel mal conçu qui fige le démarrage (comme certaines cartes Ethernet), qui est identifié par erreur, dont l'état a été changé par une procédure de détection précédente, ou plus encore d'un matériel que vous ne souhaitez pas voir initialisé par le noyau.

L'argument de démarrage reserve répond à cette attente en spécifiant une région de port d'E/S qui ne doit pas être testée. Cette région est réservée dans la table d'enregistrement des ports du noyau comme si un périphérique avait déjà été trouvé dans cette région. Notez que ce mécanisme ne devrait pas être nécessaire sur toutes les machines. C'est seulement lorsqu'il y a un problème ou un cas spécial que son utilisation peut se révéler nécessaire.

Les ports d'E/S dans la zone spécifiée sont protégés contre les procédures de détection de périphériques. Nous avons montré que cela est nécessaire lorsqu'un pilote se bloque sur une carte NE2000, ou identifie de façon erronée un autre périphérique comme étant le sien. Un pilote de périphérique correct ne devrait pas tester une zone réservée, à moins qu'un autre argument de démarrage ne spécifie explicitement qu'il doive le faire sur cette zone. Cela implique que reserve sera le plus souvent utilisé avec un autre argument de démarrage. Donc si vous spécifiez une zone de reserve pour protéger un périphérique donné, vous devez généralement spécifier explicitement une détection pour ce périphérique. La plupart des pilotes ignorent la table d'enregistrement des ports si on leur fournit une adresse explicite.

Par exemple, la ligne de démarrage

LILO: linux reserve=0x300,32 ether=0,0x300,eth0

oblige tous les périphériques à l'exception des pilotes Ethernet à ne pas tester la plage 0x300-0x31f.

Comme d'habitude avec les spécificateurs de démarrage, il existe une limite de 11 paramètres, donc vous ne pouvez spécifier que 5 zones réservées par mot-clé reserve. Plusieurs spécificateurs reserve fonctionneront si vous avez une requête inhabituellement compliquée.

10.2 Utilisation des pilotes Ethernet comme modules

La majorité des distributions disponibles ont des noyaux avec très peu de pilotes intégrés. Les pilotes sont fournis comme modules chargeables dynamiquement. Ces pilotes modulaires sont normalement chargés par l'administrateur via la commande modprobe(8) dans certains cas, ils sont automatiquement chargés par le noyau via kerneld (pour les 2.0) ou kmod (pour les 2.1) qui eux-mêmes font appel à modprobe.

Votre distribution offre peut être de jolis outils graphiques pour configurer les modules ethernet. Si possible, essayez de les utiliser avant tout. La description qui suit explique ce qui se cache derrière ces jolis petits programmes et ce que'ils changent.

Les informations qui déterminent quels modules doivent être utilisés et les options qui leur sont associées sont en principe stockées dans le fichier /etc/conf.modules. Les deux options qui y ont le plus d'interêt (pour les cartes ethernet) sont alias et options. La commande modprobe consulte ce fichier pour obtenir des informations sur les modules.

Les modules utilisés sont normalement stockés dans un répertoire nommé /lib/modules/`uname -r`/net où la commande uname -r retourne la version du noyau (ex : 2.0.34). Vous pouvez aller y faire un tour pour savoir quels modules correspondent à votre carte.

La première chose à mettre dans votre /etc/conf.modules est une ligne indiquant à modprobe où se trouve le pilote à utiliser avec eth0 (et eth1, ...), ceci grâce à un alias. Par exemple, si vous avez une carte ISA SMC EtherEZ qui utilise le module smc-ultra.o, vous aurez besoin de créer un alias entre ce pilote et eth0 en ajoutant cette ligne :

 alias eth0 smc-ultra

Vous pourrez aussi avoir à ajouter une ligne d'options indiquant lesquelles doivent être utilisées avec tel module (ou alias de module). Continuons l'exemple ci-dessus : avec la ligne alias seule, le noyau vous préviendrait (cf. dmesg) que l'autodétection des cartes ISA n'est pas une bonne idée. Pour supprimer cet avertissement, il suffirait d'ajouter une ligne donnant au module l'adresse d'E/S de votre carte, dans ce cas, l'adresse hexadécimale 0x280.

 options smc-ultra io=0x280

La plupart des modules ISA acceptent des arguments comme io=0x340 et irq=12 sur la ligne de commande d'insmod. Il est REQUIS ou du moins FORTEMENT RECOMMANDÉ que vous fournissiez ces paramètres pour éviter la détection automatique de la carte. A la différence des périphériques PCI et EISA, il n'existe pas de moyen vraiment sûr de réaliser une détection automatique de la majorité des périphériques ISA, et cela doit donc être évité quand on utilise les pilotes sous la forme de modules chargeables.

Une liste de toutes les options acceptées par chaque module se trouve dans le fichier :

/usr/src/linux/Documentation/networking/net-modules.txt

Vous avez intérêt à le lire pour trouver les options à utiliser pour votre carte. Notez que quelques modules permettent les listes d'options séparées par des virgules, ils sont capables de gérer plusieurs cartes depuis un seul module, par exemple les cartes à base de 8390, ainsi que le pilote PLIP.


 option 3c503 io=0x280,0x300,0x330,0x350 xcvr=0,1,0,1

La commande ci-dessus permet à un seul et même module de contrôler quatre cartes 3c503, les cartes 2 et 4 utilisant le transceiver externe. Ne mettez pas d'espace autour des '=' ou des virgules.

Notez aussi que les modules utilisés ne peuvent être supprimés de la mémoire. Cela signifie que vous aurez à faire un ifconfig eth0 down (arrêter la carte ethernet) avant de pouvoir les supprimer.

La commande lsmod vous dira quels sont les modules qui sont chargés, s'ils sont utilisés, et rmmod les supprimera.

10.3 Documents associés

La plupart des informations que vous trouvez dans ce document proviennent de messages sauvegardés des groupes de comp.os.linux.*, ce qui montre qu'il s'agit d'une vraie source d'informations. D'autres renseignements très utiles proviennent de tout un tas de petits fichiers de Donald lui-même.

Bien entendu, si vous configurez une carte Ethernet, vous voudrez configurer les logiciels que vous allez utiliser, et vous lirez pour cela le Howto NET-3. Ou encore, si vous vous sentez pousser des ailes de ``hacker'', vous pourrez toujours grapiller des informations supplémentaires directement dans les fichiers sources des pilotes. Ils comportent en général un paragraphe ou deux décrivant les points importants, avant que le code ne démarre...

Pour ceux d'entre vous qui recherchent des informations qui ne sont pas spécifiques à Linux (comme : qu'est-ce que 10BaseT, qu'est-ce qu'AUI, que fait un hub, etc.) je vous recommande fortement d'utiliser le groupe de news comp.dcom.lans.ethernet et/ou comp.sys.ibm.pc.hardware.networking. Les archives de news tels que deja.com sont aussi une source intarissable de réponses. Vous pouvez aussi récupérer les FAQ de ces groupes de news sur par exemple :

Les FAQ de Usenet

Vous pouvez aussi consulter la `Page d'accueil d'Ethernet' pour ainsi dire, qui se trouve à l'URL suivante :

La page d'accueil d'Ethernet

10.4 Désistement de responsabilité et Copyright

Ce document n'est pas la bible. Toutefois, il s'agit certainement de la source d'informations la plus à jour que vous pourrez trouver. Personne n'est responsable de ce qui arrive à votre matériel hormis vous-même. Si votre carte Ethernet ou tout autre partie matérielle de votre ordinateur part en fumée (...bien que ce soit pratiquement impossible !) nous n'en prenons aucune responsabilité. LES AUTEURS NE SONT RESPONSABLES D'AUCUN DOMMAGE ENCOURU CONSÉCUTIF A DES ACTIONS EFFECTUÉES EN SE BASANT SUR LES INFORMATIONS COMPRISES DANS CE DOCUMENT.

Ce document est Copyright (c) 1993-1997 by Paul Gortmaker. Il est permis de faire et de distribuer des copies complètes de ce manuel à condition que la notice de copyright et que cette notice de permission soient préservées dans toutes les copies.

Il est permis de copier et de distribuer des versions modifiées de ce document sous les mêmes conditions que la copie complète, à condition que cette notice de copyright soit incluse exactement telle qu'elle l'est dans l'original, et que le travail dérivé résultant, dans son intégralité, soit distribué sous les termes d'une notice de permission identique à celle-ci.

Il est permis de copier et de distribuer des traductions de ce document dans d'autres langues, sous les mêmes conditions que ci-dessus pour les versions modifiées.

Si vous avez l'intention d'intégrer ce document dans un travail destiné à la publication, contactez-moi (par courrier électronique) afin de pouvoir obtenir les informations les plus à jour possible. Par le passé, des versions dépassées de documents Linux HOWTO ont été publiées, causant aux développeurs le préjudice indû d'être empoisonnés par des questions dont les réponses figuraient déjà dans les versions à jour.

En accord avec cette notice, la version originale (en anglais) telle qu'elle apparaît dans l'Ethernet-HOWTO est fournie ici :

This document is not gospel. However, it is probably the most up to date info that you will be able to find. Nobody is responsible for what happens to your hardware but yourself. If your ethercard or any other hardware goes up in smoke (...nearly impossible!) we take no responsibility. ie. THE AUTHORS ARE NOT RESPONSIBLE FOR ANY DAMAGES INCURRED DUE TO ACTIONS TAKEN BASED ON THE INFORMATION INCLUDED IN THIS DOCUMENT.

This document is Copyright (c) 1993-1997 by Paul Gortmaker. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this document under the conditions for verbatim copying, provided that this copyright notice is included exactly as in the original, and that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this document into another language, under the above conditions for modified versions.

A hint to people considering doing a translation. First, translate the SGML source (available via FTP from the HowTo main site) so that you can then generate other output formats. Be sure to keep a copy of the original English SGML source that you translated from! When an updated HowTo is released, get the new SGML source for that version, and then a simple diff -u old.sgml new.sgml will show you exactly what has changed so that you can easily incorporate those changes into your translated SMGL source without having to re-read or re-translate everything.

If you are intending to incorporate this document into a published work, please make contact (via e-mail) so that you can be supplied with the most up to date information available. In the past, out of date versions of the Linux HowTo documents have been published, which caused the developers undue grief from being plagued with questions that were already answered in the up to date versions.

Ce document fait partie des HOWTO Linux traduits en français. Vous pouvez trouver une liste à jour de ces documents à l'adresse http://www.freenix.org/unix/linux/HOWTO/Liste-des-HOWTO.html

Les HOWTO Linux font partie du Linux Documentation Project (LDP). Si vous souhaitez participer au LDP ou à sa traduction en français, vous pouvez consulter http://www.freenix.org/unix/linux/HOWTO/Liste-des-HOWTO.html ou contacter Eric Dumas, dumas@linux.eu.org.

Cette version française a été réalisée par Mathieu Arnold <arn_mat@club-internet.fr>, Stéphane Alnet <alnet@u-picardie.fr> était l'ancien traducteur. Elle est Copyright (c) 1997-1998, Mathieu Arnold, selon les termes de la notice ci-dessus.

Si vous constatez des erreurs dans la traduction en français, merci d'en informer le traducteur. Vos remarques seront prises en compte pour la prochaine version de la traduction.

10.5 Conclusion

Si vous avez trouvé une faute de frappe énaurme, ou des informations dépassées dans ce document, merci d'envoyer un courrier électronique. Il est énorme, et il est facile de rater certaines choses. Si vous avez envoyé un courrier à propos d'une modification, et qu'elle n'a pas été incluse dans la version suivante, n'hésitez pas à la ré-envoyer, car elle a pu se perdre dans le flot habituel de SPAM et de prospectus que je reçois.

Merci !

Paul Gortmaker, p_gortmaker@yahoo.com


Page suivante Page précédenteTable des matières