  Mehrere Ethernet-Karten in einem Rechner HOWTO
  Philipp JW Grau (phgrau@wi-bw.tfh-wildau.de)
  v0.2, 5. Februar 1998

  Dieses Dokument beschreibt die Nutzung mehrere Ethernet-Karten in
  einem Linux-Computer.

  1.  Copyright

  Dieses Dokument ist urheberrechtlich geschtzt. Das Copyright fr die
  englische Multiple-Ethernet mini-HOWTO, auf der dieses Dokument
  basiert, liegt bei Don Becker. Das Copyright fr die deutsche Version
  liegt bei Philipp JW Grau.

  Das Dokument darf gem der GNU General Public License verbreitet
  werden. Insbesondere bedeutet dieses, da der Text sowohl ber
  elektronische wie auch physikalische Medien ohne die Zahlung von
  Lizenzgebhren verbreitet werden darf, solange dieser Copyright
  Hinweis nicht entfernt wird. Eine kommerzielle Verbreitung ist erlaubt
  und ausdrcklich erwnscht. Bei einer Publikation in Papierform ist
  das Deutsche Linux HOWTO Projekt hierber zu zu informieren.

  2.  Schnellstart: Ladbare Kernel-Module fr Netzwerkkarten

  2.1.  PCI-Karten

  PCI-Karten knnen vom Kernel sicher erkannt werden, d.h. man mu nur
  einen Eintrag in die Modul Konfigurationsdatei /etc/conf.modules
  machen.

       alias eth1 tulip

  Hierbei steht tulip fr das gewnschte Karten-Modul

  2.2.  ISA-Karten

  Die Erkennung von ISA-Karten ist meist etwas gefhrlich, deshalb mu
  man die I/O-Addresse der Ethernetkarten angeben. Wenn mehrere Karten
  von einem Modul untersttzt werden, mu fr jede Karte die I/O-
  Addresse angegeben werden. Das sieht in /etc/conf.modules z.B. so aus:

       alias eth0 ne
       alias eth1 ne
       alias eth2 ne
       options ne io=0x280,0x300,0x320

  Oder fr eine einzelne Karte:

       options ne io=0x280 irq=5

  Hierbei steht ne fr das gewnschte Karten-Modul

  3.  Schnellstart: Eingebaute Netzwerkkarten-Treibern

  Fr die meisten Anwender, die einen Kernel mit eincompilierten
  Netzwerkkarten-Treibern benutzen, sollte es reichen, folgende Zeilen
  an den Anfang ihrer /etc/lilo.conf zu schreiben und 'lilo' aufzurufen:

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

  Das ist alles, was zu tun ist. Wenn Linux nun neu gebootet wird,
  sollte die zweite und dritte Ethernet-Karte erkannt werden.
  Voraussetzung ist, da fr alle Netzwerkkarten die Untersttzung im
  Kernel enthalten ist.

  4.  Ladbare Kernel-Module fr Netzwerkkarten

  Fr Distributionen wie Debian und RedHat, die fast nur ladbare Device-
  Treiber nutzen, ist die Situtation etwas komplizierter und
  Distributions-abhngig.  Wenn man wissen mchte, ob schon Module
  geladen sind, kann man mit dem Befehl lsmod nachsehen. Man kann auch
  cat /proc/modules benutzen, das alle geladenen Module anzeigt.

  Ladbare Module werden entweder von einem Proze kerneld, der die
  Kernelanfragen fr Netzwerkschnittstellen verwaltet, oder von
  modprobe, das jedes Treiber-Modul ldt, um ein passendes zufinden,
  geladen.

  Der kerneld-Proze liest die Konfigurationsdatei /etc/conf.modules,
  die jeden Treiber beschreibt, der geladen werden soll.

  Auerdem kann man noch dem Kernel sagen, welche Module schon beim
  Booten zu laden sind. Hierzu kann man die zu ladenden Module in die
  Datei /etc/modules eintragen.

       # /etc/modules: kernel modules to load at boot time.
       #
       # This file should contain the names of kernel modules that are
       # to be loaded at boot time, one per line.  Comments begin with
       # a #', and everything on the line after them are ignored.
       # An entry named auto' will cause the system to start kerneld immediately.
       # Kerneld then loads modules on demand. noauto' disables kerneld completely.

       #auto
       ne
       lp
       sg

  5.  Eincompilierte Treiber: Was gemacht wurde und wie...

  Normalerweise sucht ein gewhnlicher Linux-Kernel nach einer einzelnen
  Ethernet-Karte. Wenn diese gefunden wird, ist der Test auf
  Netzwerkkarten abgeschlossen.

  Es gibt drei Wege, um den Kernel nach weiteren Karten suchen zu
  lassen.

  1. Parameterbergabe zur Bootzeit, am LILO-Prompt;

  2. den Bootlader so zu konfigurieren, da die Parameter immer mit
     bergeben werden;

  3. die Netzwerkkarten-Tabelle des Kernels zu modifizieren.

  Fr die meisten Anwender ist die zweite Methode das richtige
  Verfahren, und oben wurde eben dieses beschrieben.

  6.  Parameterbergabe mit dem Boot-Loader

  Im folgenden wird angenommen, da der Standard Linux-Boot-Lader "LILO"
  benutzt wird.

  Der Linux-Kernel kennt viele Parameter, die zur Bootzeit bergeben
  werden knnen. Die meisten Parameter spezifizieren Aspekte, die nicht
  von Kernel selbstbestimmt werden knnen. Fr Netzwerk-Adapter werden
  die folgenden Parameter ausgewertet:

       ether=<IRQ>,<IO-ADDR>,<PARAM1>,<PARAM2>,<NAME>

  Gltige numerische Argumente knnen als dezimale, oktale (mit
  fhrender "0") oder hexadezimale (mit dem Prefix "0x") Zahl angegeben
  werden. Das erste nicht-numerische Argument wird als NAME der Device
  genommen. Leere Argumente werden als Null angenommen, und leere
  Argumente vor dem Namen werden nicht verndert.

     IRQ:
        Dieser Parameter spezifiziert den IRQ, der gesetzt werden soll,
        auf Karten, die den IRQ per Software setzen, oder der benutzte
        IRQ, auf Karten mit gejumperten IRQ. Der Wert "0" bedeutet, da
        der IRQ wenn mglich von der Ethernetkarte gelesen werden soll,
        oder das "autoIRQ" genutzt werden soll, wenn die Netzwerkkarte
        keine Weg bereitstellt den IRQ zu lesen.

     IO-ADDR:
        Dieser Parameter legt die Basis-I/O-Adresse fest, auf der nach
        der Karte gesucht werden soll. Ein Wert von Null sagt, da alle
        sinnvollen Adresse getestet werden sollen.

        Normalerweise wird ein reservierter Adressbereich benutzt, um zu
        entscheiden, ob eine Stelle getestet werden soll. Dieser
        Adressbereich wird ignoriert, wenn eine I/O-Adresse angegeben
        wird. Dies erlaubt dem "reserve="-Parameter Device-Proben in
        einer I/O-Region zu unterbinden.

     PARAM1, PARAM2:
        Ursprnglich wurden diese Parameter dazu benutzt, um die
        Speicher-Adressen fr Adapter, die Shared-Memory benutzen, wie
        der WD8013, festzulegen. Im Laufe der Zeit wurden sie erweitert,
        um anderen Treibern spezifische Optionen zu bergeben.

     NAME:
        Der Name eines definierten Device. Der Standard-Kernel definiert
        im allgemeinen "eth0", "eth1", "eth2" und "eth3". Andere Device-
        Namen (z.B. fr PPP, SLIP oder ein Pocket-Ethernet-Adapter) sind
        vielleicht vorhanden, gehorchen aber einer anderen Semantik.

  LILO stellt zwei Wege bereit, Parameter zur Bootzeit dem Kernel zu
  bergeben. Der am hufigsten genutzte Weg, ist die direkte Eingabe am
  Boot-Prompt, hinter der Angabe des Kernelimages. Das folgende Beispiel
  aktiviert alle vier mglichen Devices.

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

  Natrlich ist es ziemlich kompliziert, bei jedem Booten diese
  Parameter einzugeben, und erfordert unbeaufsichtigte Roboter. Man kann
  Kernel-Parameter permanent festlegen, durch die Einfgung einer
  "append" Zeile in die LILO-Konfigurations-Datei, /etc/lilo.conf, und
  einen anschlieenden Aufruf von lilo um die genderte Konfiguration zu
  aktivieren.

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

  7.  Modifizierung des Kernels

  Wenn mglich sollte das System ohne nderung der Kernelquellen
  konfiguriert werden. Eine nderung der Kernelquellen ist nicht
  selbstdokumentierent und fhrt zu Problemen, wenn ein Upgrade
  durchgefhrt wird. Es gibt aber ein paar Flle, bei denen die
  Modifizierung notwendig ist.

    Wenn man mehr als vier Devices bentigt. Die Datei
     drivers/net/Space.c hat nur Eintrge fr eth0 bis eth3.

    Wenn das Testen nach Karten limitiert werden mu, um Konflikten mit
     anderer Hardware vorzubeugen.

    Wenn andere Device-Namen als ethN verwendet werden sollen.

  Wenn man diesen Weg gehen will, mu man die Device-Liste in
  drivers/net/Space.c editieren. Man trage die gewnschten Werte ein.
  Wird ein neues Device eingefgt, sollte man darauf achten, da die
  Verkettung erhalten bleibt. Man sollte die vorhandenen Eintrge als
  Hilfe nutzen.

  8.  Hinweise auf spezielle Karten

  8.1.  PCI-Karten

  PCI- und EISA-Karten knnen sicher und zuverlig vom Kernel erkannt
  werden.  Deshalb finden die meisten PCI-Treiber alle untersttzten
  Karten ohne zustzliche Parameter. Die Ausnahme bilden Treiber, die
  sowohl die ISA- als auch die PCI-Versionen von Netzwerkkarten
  untersttzen: NE2000- und der ltere LANCE/PCnet-Netzwerkkarten-
  Treiber.

  8.2.  LANCE/PCnet Karten

  Der Kernel 1.2.13 und frhere Versionen des LANCE-Treiber erfordern
  spezielle DMA-Buffer im "Low-Memory". Aus diesem Grunde ist die LANCE-
  Erkennung etwas anders und frher als andere Tests nach
  Netzwerkkarten. Erfreulicherweise kann man diesen ganzen Abschnitt
  ignorieren: mehrere LANCE-Karten werden automatisch gefunden.
  Andererseits kann der LANCE-Treiber z.Z. (noch) keine LILO-Parameter
  nutzten, z.B. die IRQ-Einstellung.

  8.3.  3c509 im ISA-Modus

  Die 3c509 hat ein einzigartiges Feature, das wirklich sicheres Testen
  auf dem ISA-Bus erlaubt. Das ist prima, aber leider pat diese Methode
  nicht mit den anderen Proben zusammen.

  Der wichtigste Aspekt ist, da es schwierig ist, a priori festzulegen,
  welche Karte als erste erkannt wird.  Die Reihenfolge hngt von der
  Ethernet-Adresse der Karte ab.  Das heit, da die Ethernetzkarte mit
  der niedrigsten Nummer eth0 zugewiesen wird, und der nchsten eth1,
  etc. Wenn die Karte eth0 entfernt wird, rutschen alle eine Nummer
  niedriger.

  Daraus folgt, da es nicht mglich ist, eine frhe Karte unbenutzt zu
  lassen, eine Karte auf einer Adresse oder IRQ verschieden von den
  EEPROM-Einstellungen zu verwenden oder eine Karte auf einer
  bestimmenten Adresse zu enablen.

  8.4.  EISA 3c579 und 3c509 im EISA-Modus (alt)

  Kernel vor 1.1.25 testen nicht sauber auf mehrere EISA-Modus Karten.
  Wenn mehere ethN angegeben werden, wird die gleiche 3c5x9 mehrmals
  gefunden. Um dies zu umgehen, kann man die I/O-Adresse fr jede Karte
  einzeln angeben. Kernel nach 1.1.25 finden mehere EISA-Modus Karten,
  und suchen danach zustzliche ISA-Modus Karten, nach dem alle
  potentiellen EISA-Modus-Adressen getestet wurden.

  9.  Ergnzungen (Neu in der deutschen Version)

  9.1.  Auswahl der Karten bei Kernel-Konfiguration

  Wenn ein neuer Kernel konfiguriert wird, sollten natrlich nur die
  Karten ausgewhlt werden, die tatschlich gebraucht werden. Vorteile:
  kleinerer Kernel.

  9.2.  Andere deutschsprachige HOWTOs

  Andere deutsche Linux-Dokumentation, insbesondere die deutschen HOWTOs
  gibts an folgenden Stellen:

    http://www.tu-harburg.de/~semb2204/dlhp/

    ftp.uni-stuttgart.de:/pub/systems/linux/local/doc/

  Verweisen mchte ich auerdem noch auf das deutsche Bridging mini-
  HOWTO von Ralph Wetzel, das beim Bau einer Brcke mit Linux sehr
  ntzlich ist.

  9.3.  Andere Verweise

    Die Seiten von Don Becker, dem Autor dieses HOWTOs und Maintainers
     der 3Com Netzwerkarten Kernel-Module:
     http://cesdis.gsfc.nasa.gov/pub/linux/drivers/index.html

    Don Beckers Linux-Seiten:
     http://cesdis.gsfc.nasa.gov/pub/linux/linux.html

    Diagnose-Programmme fr Netzwerkkarten:
     http://cesdis.gsfc.nasa.gov/pub/linux/diag/diagnostic.html

