![]() |
|
Linux - Wegweiser für NetzwerkerOnline-VersionCopyright © 2001
by O'Reilly Verlag GmbH & Co.KG Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen. Wünschen Sie mehr Informationen zu der gedruckten Version des Buches Linux - Wegweiser für Netzwerker oder wollen Sie es bestellen, dann klicken Sie bitte hier. |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Wie bereits mehrfach erwähnt, stellt Linux Ethernet-Treiber für Karten diverser Hersteller bereit. Die meisten Treiber stammen von Donald Becker, der eine Treiber-Familie für Karten geschrieben hat, die auf dem Chip NSC 8390 von National Semiconductor basieren. Sie werden auch als Treiber der “Becker-Serie” bezeichnet. Viele andere Entwickler haben ebenfalls Treiber beigesteuert. Heute gibt es nur noch sehr wenige Ethernet-Karten, die nicht von Linux unterstützt werden. Die Liste aller unterstützten Ethernet-Karten wächst ständig, so daß Sie davon ausgehen können, daß Ihre nagelneue Netzwerkkarte demnächst auch unterstützt wird.
Früher hätten wir vielleicht noch den Versuch unternommen, sämtliche von Linux unterstützten Ethernet-Karten aufzulisten. Aber da die Liste mittlerweile einfach zu umfangreich geworden ist, würde dies jetzt zuviel Zeit und Platz in Anspruch nehmen. Glücklicherweise hat sich Paul Gortmaker dieser Sache angenommen und in seinem Ethernet-HOWTO alle unterstützten Karten aufgelistet und diese sogar noch mit nützlichen Zusatzinformationen über ihre Anwendung in Linux versehen.1 Es erscheint monatlich in der Newsgruppe comp.os.linux.answers und kann außerdem von jedem Spiegelserver des Linux Documentation Projects heruntergeladen werden.
Auch wenn Sie überzeugt sind, genau zu wissen, wie Sie eine bestimmte Netzwerkkarte in Ihrem System installieren müssen, sollten Sie trotzdem unbedingt einen Blick ins Ethernet-HOWTO werfen. Denn dort finden Sie Informationen, die über das allgemeine Wissen über Netzwerkkonfiguration hinausgehen. So ersparen Sie sich Kopfschmerzen, wenn Sie sich z.B. über das Verhalten mancher DMA-basierter Ethernet-Karten klarwerden, die standardmäßig denselben DMA-Kanal wie der SCSI-Controller Adaptec-1542 verwenden. Wenn Sie eine der beiden Karten nicht auf einen anderen DMA-Kanal verlegen, werden Sie damit rechnen müssen, daß die Netzwerkkarte IP-Pakete auf irgendwelche Sektoren Ihrer Festplatte schreibt!
Um eine dieser Karten mit Linux zu verwenden, können Sie einen fertigen Kernel aus einer der vielen Linux-Distributionen verwenden. Diese Kernel haben im allgemeinen Treiber für alle Karten eingebunden. Bei der Installation können Sie in der Regel angeben, welche Treiber geladen werden sollen. Auf lange Sicht ist es allerdings besser, wenn Sie sich Ihren eigenen Kernel bauen und nur diejenigen Treiber verwenden, die Sie tatsächlich brauchen; das spart Festplatten- und Hauptspeicher.
Viele der Ethernet-Treiber von Linux sind intelligent genug, um die Einstellungen Ihrer Netzwerkkarte automatisch herauszufinden. Das erspart Ihnen die manuelle Eingabe dieser Daten. Im Ethernet-HOWTO ist angegeben, ob ein bestimmter Treiber ein Autoprobing durchführt und in welcher Reihenfolge er nach den I/O-Adressen der Karte sucht.
Der Autoprobing-Code hat drei Einschränkungen: Erstens ist es möglich, daß eine Karte nicht korrekt erkannt wird. Das ist zwar recht selten, kommt aber gelegentlich bei billigeren Nachbildungen gängiger Marken vor. Zweitens erkennt der Kernel nur eine Netzwerkkarte automatisch, es sein denn, Sie haben explizit angegeben, daß er weitere Karten suchen soll. Das ist durchaus beabsichtigt, da davon ausgegangen wird, daß Sie die Kontrolle darüber haben wollen, welches Interface welcher Karte zugewiesen wird. Am zuverlässigsten erreichen Sie dies, indem Sie die Ethernet-Karten manuell konfigurieren. Die dritte Einschränkung besteht darin, daß der Treiber nicht unbedingt die Adresse ausprobiert, für die Ihre Karte konfiguriert ist. Im allgemeinen führen die Treiber zwar ein Autoprobing an Adressen durch, für die ein bestimmtes Gerät konfiguriert werden kann, jedoch werden dabei manchmal bestimmte Adressen ausgeklammert, um Hardwarekonflikte mit anderen Kartentypen zu vermeiden, die dieselben Adressen für sich beanspruchen.
PCI-Netzwerkkarten sollten eigentlich immer zuverlässig erkannt werden. Wenn Sie allerdings mehrere Karten verwenden oder die Erkennung Ihrer Karte durch Autoprobing fehlschlägt, haben Sie die Möglichkeit, dem Kernel die Basisadresse und den Namen der Netzwerkkarte explizit mitzuteilen.
Beim Booten können Sie dem Kernel explizit Argumente übergeben, die jede Kernel-Komponente auslesen kann. Dieser Mechanismus gestattet Ihnen die Übergabe von Informationen an den Kernel, die die Netzwerktreiber dazu verwenden können, Ihre Netzwerkhardware auch ohne Autoprobing zu erkennen.
Wenn Sie lilo als Boot-Lader einsetzen, können Sie dem Kernel verschiedene Parameter direkt beim Booten oder durch die append-Option in der Datei lilo.conf übergeben. Der ether-Parameter beschreibt ein Ethernet-Gerät und hat folgendes Format:
ether=
irq
,base_addr
,[param1
,][param2
,]name
Die ersten vier Parameter sind Zahlen, während der letzte der Name des zuzuordnenden Interfaces ist. Die Parameter irq
, base_addr
und name
sind immer anzugeben, die param
-Parameter dagegen optional. Für numerische Werte, die auf null gesetzt werden, versucht der Kernel, den Wert automatisch herauszufinden, bzw. verwendet eine Voreinstellung.
Der erste Parameter legt den IRQ des Gerätes fest. Ist kein Wert angegeben, versucht der Kernel, den IRQ-Kanal selbst festzustellen. Der 3c503-Treiber hat ein spezielles Feature das einen freien IRQ aus der Liste 5, 9, 3 und 4 auswählt und die Karte so konfiguriert, daß sie diesen Interrupt verwendet. Der Parameter base_addr
gibt die I/O-Adresse der Karte an; ein Wert von null veranlaßt den Kernel, sie über den üblichen Autoprobing-Mechanismus zu suchen.
Die verbleibenden zwei Parameter werden von verschiedenen Treibern unterschiedlich interpretiert. Für Karten wie die WD80x3, die auf Shared Memory basieren, geben sie die Anfangs- und Endadresse des Shared Memory-Bereichs an. Die meisten anderen Karten interpretieren param1
als den Umfang, in dem Debugging-Informationen ausgegeben werden. Werte von 1 bis 7 bezeichnen zunehmende “Geschwätzigkeit”, während 8 diese Informationen völlig unterdrückt. Null wählt einen Voreinstellungswert aus, der von Karte zu Karte verschieden sein kann. Der 3c503-Treiber verwendet param2
, um zwischen dem internen Transceiver (Voreinstellung) und einem externen Transceiver (Wert von 1) zu unterscheiden. Die erste Variante stellt die BNC-Buchse der Karte ein, die zweite den AUI-Port. Die param
-Argumente brauchen Sie allerdings nicht anzugeben, wenn Sie nichts Spezielles zu konfigurieren brauchen.
Das erste nicht-numerische Argument wird vom Kernel als Gerätename interpretiert. Für jede Netzwerkkarte, die Sie beschreiben, müssen Sie einen Gerätenamen angeben.
Wenn Sie zwei Karten verwenden, können Sie Linux die erste Karte automatisch erkennen lassen und die Parameter der zweiten mit lilo übergeben (Sie können aber auch Parameter für beide Karten angeben). Dabei müssen Sie allerdings sicherstellen, daß der Treiber die zweite Karte nicht aus Versehen zuerst findet, da sonst die andere überhaupt nicht konfiguriert wird. Das erreichen Sie, indem Sie lilo eine reserve-Option übergeben, die den Kernel ausdrücklich anweist, den von der zweiten Karte belegten I/O-Bereich nicht zu testen. Wenn Sie zum Beispiel Ihre zweite Karte auf die Adresse 0x300 konfiguriert haben, übergeben Sie dem Kernel folgende Parameter:
reserve=0x300,32 ether=0,0x300,eth1
Die reserve-Option stellt sicher, daß kein Treiber auf den angegebenen I/O-Bereich von 0x300 bis 0x31F zugreift, wenn er das Vorhandensein eines Geräts prüft. Diesen Parameter können Sie auch benutzen, um bei der Konfiguration Ihrer ersten Karte den Autoprobing-Mechanismus zu umgehen:
reserve=0x340,32 ether=0,0x340,eth0
Sie können das Autoprobing für Ihre Ethernet-Karte auch vollständig abschalten. Das ist zum Beispiel dann angebracht, wenn eine Ethernet-Karte temporär entfernt wurde und der Kernel deswegen kein Autoprobing durchführen soll. Um das Autoprobing für Ihre Ethernet-Karte vollständig auszuschalten, können Sie eine Basisadresse von -1 angeben:
ether=0,-1,eth0
Damit diese Parameter beim Boot-Vorgang an den Kernel übergeben werden können, sind sie am Lilo-Prompt einzugeben. Damit der Prompt “boot:” auf Ihrem Bildschirm erscheint, drücken Sie eine der Tasten Strg, Alt oder Shift. Wenn Sie an diesem Prompt Tab drücken, wird Ihnen eine Liste der Kernel angezeigt, die Sie booten können. Um einen Kernel mit den oben genannten Parametern zu booten, geben Sie den Namen des gewünschten Kernels ein, gefolgt von einem Leerzeichen und den Parametern. Wenn Sie danach die Enter-Taste betätigen, bootet lilo den gewählten Kernel mit den angegebenen Parametern.
Damit diese Änderung bei jedem Neustart automatisch durchgeführt wird, tragen Sie die Parameter mit der Anweisung append=
in die Datei /etc/lilo.conf ein. Das kann zum Beispiel so aussehen:
boot=/dev/hda root=/dev/hda2 install=/boot/boot.b map=/boot/map vga=normal delay=20 append="ether=10,300,eth0" image=/boot/vmlinuz-2.2.14 label=2.2.14 read-only
Nach Änderungen in der Datei lilo.conf muß das Kommando lilo ausgeführt werden, um sie wirksam zu machen.
1. |
Paul ist erreichbar unter gpg109@rsphy1.anu.edu.au. |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Weitere Informationen zum Linux - Wegweiser für Netzwerker
Weitere Online-Bücher & Probekapitel finden Sie in unserem Online Book Center
© 2001, O'Reilly Verlag