
                      Mini-HOWTO Machines Multi-Ethernet

Don Becker, becker@cesdis.gsfc.nasa.gov

   5 aot 1995
     _________________________________________________________________

   _Ce mini-Howto explique comment configurer Linux pour qu'il
   reconnaisse plusieurs cartes Ethernet sur une mme machine._
     _________________________________________________________________

1. Introduction

   Dans le cas de la plupart des distributions classiques de Linux, il
   suffit d'ajouter la ligne suivante au dbut de votre fichier
   /etc/lilo.conf et de relancer lilo :

append = "ether=0,0,eth1"

   C'est tout ce que vous avez  faire. Lors du prochain redmarrage de
   la machine, Linux devrait reconnatre la seconde carte.

2. Les diffrentes solutions

   Par dfaut, le noyau Linux ne recherche qu'une seule carte Ethernet,
   et ne va pas plus loin ds qu'il en a trouv une. Il y a trois faons
   de contraindre le noyau  rechercher des cartes supplmentaires. Par
   ordre de simplicit (et de souplesse) croissante :
     * fournir des paramtres au noyau lors du dmarrage ;
     * configurer le chargeur pour qu'il fournisse lui-mme
       systmatiquement ces paramtres au noyau ;
     * modifier les tables de dtection des cartes Ethernet du noyau dans
       le fichier drivers/net/Space.c (et recompiler le noyau aprs
       coup).

   Dans la plupart des cas, c'est la deuxime solution qui convient le
   mieux, et correspond  ce que nous avons dcrit en introduction. Les
   deux premires solutions reposent sur le passage de paramtres au
   noyaux et sont dcrites dans la section suivante. La troisime
   solution est dcrite ensuite.

3. Transmettre des paramtres au noyau

   Le noyau Linux admet qu'on lui fournisse un certain nombre de
   paramtres lors de son lancement. Le plus souvent ces paramtres
   dcrivent des aspects de la configuration qui ne peuvent tre
   dtermins qu'au moment du dmarrage. Pour les cartes rseaux, le
   paramtre est le suivant :

ether=IRQ,adresse-E/S,param1,param2,nom

   Les valeurs numriques admises peuvent tre exprimes en dcimal, en
   octal (prcdes par un '0') ou en hexadcimal (prcdes par '0x').
   Le premier argument qui n'est pas une valeur numrique est pris comme
   _nom_ du priphrique (ici une carte rseau). Les paramtres vides
   (entre virgules) ont zro comme valeur par dfaut, et les paramtres
   manquants avant le nom ne sont pas modifis.

   _IRQ_
          Ce paramtre indique l'IRQ (ligne d'interruption)  configurer
          (pour les cartes admettant un paramtrage logiciel de l'IRQ) ou
           utiliser (pour celles o l'IRQ est configure avec des
          cavaliers sur la carte). Une valeur nulle (0) indique de
          demander  la carte quelle IRQ utiliser (si elle le permet) ou
          d'utiliser l'autoIRQ si la carte ne le permet pas.

   _adresse-E/S_
          Ce paramtre indique l'adresse d'entre/sortie  tester. Une
          valeur nulle (0) demande le test de toutes les adresses
          d'entre/sortie raisonnables. Celles-ci sont dtermines
          d'aprs une carte des zones d'entre/sortie habituelles pour
          les diffrents types de priphrique. Cette carte des zones est
          ignore si une adresse d'entre/sortie est spcifie. Utilis
          avec le paramtre reserve=_base_,_taille_,...

     Se reporter  la documentation _Lilo_.

          ceci permet d'empcher l'auto-test d'une zone d'entre/sortie
          par d'autres pilotes et d'viter ainsi le dysfonctionnement
          d'un priphrique qui se trouverait pertub par ces tests.

   _param1,param2_
          Au dpart, ces paramtres permettaient d'indiquer l'adresse
          d'une zone de mmoire partage pour les cartes qui utilisaient
          cette technique, comme la WD8013. Leur utilisation a ensuite
          t tendue  la transmission d'autres informations propres aux
          diffrents types de cartes.

   _nom_
          Ce paramtre indique le nom d'un priphrique prdfini. Le
          noyau standard dfinit ainsi au moins "eth0", "eth1", "eth2" et
          "eth3". D'autres noms peuvent tre prdfinis (pour PPP, SLIP,
          etc.) mais ils ont une smantique diffrente (pour toute
          prcision, se reporter aux FAQ et HOWTO correspondants).

   Deux mthodes peuvent tre utilises pour fournir ces paramtres au
   noyau Linux lors de son lancement. La mthode habituelle est de les
   indiquer directement aprs le nom de l'image noyau  charger.
   L'exemple suivant permet de tester les quatre emplacements possibles :

linux ether=0,0,eth1 ether=0,0,eth2 ether=0,0,eth3

   Pour viter d'avoir  taper ceci  chaque dmarrage, il est plus
   pratique de configurer votre chargeur.

3.1 Configurer votre chargeur

   Il est suppos dans ce qui suit que vous utilisez le chargeur Linux
   standard _Lilo_.

   Il est bien videmment pnible d'avoir  taper une srie de paramtres
   lors de chaque dmarrage, et de plus cela empcherait tout redmarrage
   involontaire de s'effectuer correctement

     Bien que ce type de redmarrage ne se produise pas sous Linux
     ;-)(_N.D.T._).

   . L'ajout d'une ligne append  votre fichier de configuration _Lilo_
   (/etc/lilo.conf) vous permet de fournir automatiquement ces paramtres
   au noyau (n'oubliez pas de relancer lilo pour mettre  jour votre
   configuration).

append = "ether=0,0,eth1 ether=0,0,eth2 ether=0,0,eth3"

   Cet exemple est quivalent au prcdent (test des quatre
   emplacements), en utilisant cette fois _Lilo_ pour transmettre 
   chaque dmarrage ces paramtres au noyau.

4. Modifier le noyau

   Si vous pouvez configurer votre systme sans toucher au code source du
   noyau, nous vous recommandons fortement de faire ainsi (cf. supra). Il
   est difficile de garder une trace d'une modification apporte au code
   source et cela complique grandement les mises  jour du noyau.
   Toutefois, cela s'impose dans les situations suivantes :

     * lorsque vous avez besoin de plus de quatre cartes (seules eth0 
       eth3 sont dfinies dans le source drivers/net/Space.c) ;
     * vous devez resteindre les types de priphriques recherchs  un
       sous-ensemble prcis de types de cartes quand, par exemple, le
       mcanisme de dtection confond des types de cartes diffrents ;
     * quand vous voulez utiliser un nom de priphrique diffrent de
       eth_x_.

5. Notes sur la dtection de quelques cartes particulires

5.1 Cartes Lance/PCNET

   Le pilote Lance a besoin de tampons DMA en mmoire basse, ce qui fait
   que la procdure de dtection des cartes Lance est spcifique  ce
   type de cartes, et effectue avant la dtection des autres
   priphriques rseaux. L'avantage est que les cartes Lance multiples
   sont automatiquement dtectes par cette procdure, l'inconvnient est
   que le pilote Lance ignore (pour le moment) les paramtres _Lilo_
   telle l'IRQ.

5.2 La 3C509 en mode ISA

   La 3C509 prsente la caractristique unique de permettre une dtection
   vraiment sre par le bus ISA. C'est une caractristique intressante,
   mais malheureusement pour les situations qui nous intressent ici,
   cela ne fait pas trs bon mnage avec les autres mcanismes de
   dtection.

   Le problme le plus important est qu'il est difficile de savoir quelle
   carte sera reconnue en premier, l'ordre dpendant de l'adresse
   Ethernet des cartes. Cela signifie que la carte avec l'adresse la plus
   basse se verra affecte  eth0, et ainsi de suite. Si la carte
   correspondant  eth0 est retire, toutes les autres cartes voient leur
   nom de priphrique dcal d'une unit vers eth0.

   Un problme li est qu'il n'est pas possible de laisser une premire
   carte inactive, ou une carte active  une adresse ou  une IRQ
   diffrentes de celles indiques dans l'EEPROM, ou encore de configurer
   une carte  une adresse spcifique.

5.3 La 3C579 EISA et la 3C509 en mode EISA

   Les noyaux de version antrieure  la 1.1.25 ne dtecteront pas
   correctement les cartes multiples en mode EISA. Si plusieurs
   priphriques eth_x_ sont indiqus, la _mme_ carte 3C509 sera
   dtecte plusieurs fois. La solution est de spcifier l'adresse
   d'entre/sortie directement. Les noyaux de version ultrieure
   dtecteront correctement plusieurs cartes en mode EISA, et dtecteront
   aussi des cartes en mode ISA supplmentaires, une fois toutes les
   adresses potentielles de cartes en mode EISA testes.

     Don Becker, becker@cesdis.gsfc.nasa.gov
