1.101 Plug and Play für Linux

Gichtwespe_Gasteruption_assectator_Richard_Bartz

Media Commons, Richard Bartz

Aus dem Bereich 1.101 – Hardware und Systemarchitektur der Unterlangen für die Linux Zertifizierung LPIC-1 [101]

Plug and Play für Linux

Wie in der Beschreibung über die Hardwareparameter schon gezeigt, benötigen {de:Industry_Standard_Architecture|ISA}-Karten die korrekte Einstellung ihrer Parameter wie IRQ, IO-Port und DMA-Kanal. Das Betriebssystem muß sich im Klaren über diese Parameter sein, damit es die entsprechende Hardware ansprechen kann. Bei einer Installation einer solchen Karte müssen also normalerweise die entsprechenden Einstellungen sowohl auf der Harwareseite, als auch der Softwareseite vorgenommen werden, damit die Karte dann funktioniert. Die moderneren ISA-Karten haben zur Vereinfachung dieser Einstellungen einen Standard entwickelt, der die Karte und das Betriebssystem in die Lage versetzen soll, miteinander zu kommunizieren. Mit Hilfe dieser Verständigung sollte es möglich werden, daß sich die Karte beim Betriebssystem erkundigt, welche Ressourcen (IO-Ports, IRQs, usw) noch frei sind und dann selbstständig eine entsprechende Einstellung vornimmt. Das Betriebssystem selbst kann diese Einstellung dann aus der Karte lesen und den Gerätetreiber entsprechend konfigurieren. Diese Technik stellt natürlich entsprechende Anforderungen an die Erweiterungskarte. Sie muß einen ROM-Speicher besitzen, der die denkbaren Parameter enthält und die entsprechende Verdrahtung oder Logik, die diese Einstellungen dann nutzt. Dieser Standard wird {de:Plug_and_Play|Plug and Play} genannt, also etwa Einstecken und loslegen. Voraussetzung für die korrekte Funktionsweise ist es aber, daß das Betriebssystem diese Technik beherrscht. Unter Linux funktioniert Plug and Play erst seit kurzem, sie dazu das pdf Hardware Erkennung – Plug’n Play (unter Linux) und warum es erst jetzt funktionert. Um mit Linux sogenannte ISA-PnP Karten anzusprechen, muß eine passende Einstellung an die Karte geschickt werden, die ihre Ressourcen fest zuweist. Wenn das geschehen ist, kann Linux die Karte genauso behandeln, als ob es eine Karte mit fester manueller oder softwaremäßiger Einstellung wäre. Das heißt, beim Laden der Gerätetreiber können die entsprechenden Parameter angegeben werden. Um die entsprechenden Einstellungen vorzunehmen gibt es zwei Programme, die diese Aufgabe in zwei Schritten übernehmen. Allerdings ist dazu etwas Handarbeit nötig. Die beiden Programme sind:

* pnpdump und * isapnp

Das erste Programm, pnpdump, scant den ISA-Bus nach PnP-Karten ab und ließt von den gefundenen Karten die möglichen Einstellungen (Ressourcen) aus dem ROM. Diese Einstellungen werden dann in einem bestimmten (für Menschen lesbaren) Format auf die Standard-Ausgabe geschrieben. Die denkbaren Einstellungen sind angegeben, eine tatsächliche Konfiguration ist aber auskommentiert. Die Ausgabe von pnpdump wird üblicherweise in eine Datei umgeleitet und dann mit einem Editor bearbeitet um eine bestimmte Einstellung zu aktivieren. Die bearbeitete Datei wird dann zur Konfigurationsdatei des zweiten Programms, mit dem wir die Einstellungen dann an die Karten zurückgeben. Dieses zweite Programm ist isapnp Wir können also die Konfiguration von PnP-Karten in drei Schritte gliedern: * Aufruf von pnpdump pnpdump wird aufgerufen und seine Ausgabe am besten gleich in die Datei /etc/isapnp.conf umgeleitet. Das ist die voreingestellte Konfigurationsdatei von isapnp. Wir schreiben also pnpdump > /etc/isapnp.conf * Editieren der Datei /etc/isapnp.conf Die gerade erstellte Datei wird mit einem Editor bearbeitet, um die gewünschten Einstellungen zu aktivieren. Es ist jetzt möglich, die Hardwareparameter auszusuchen, die auf dem System noch frei sind. * Aufruf von isapnp Das Programm isapnp schreibt die Einstellungen aus seiner Konfigurationsdatei wieder zurück an die Karten. Dieser Vorgang muß nach jedem Booten wiederholt werden. Das Programm isapnp sollte also über ein Startscript bei jedem Systemstart aufgerufen werden. Nachdem diese drei Schritte vollzogen wurden, sind die ISA-Karten soweit, als wären es normale Karten, die über Jumper oder Software konfiguriert worden sind. Jetzt erst können – mit den entsprechenden Parametern – die Kernelmodule für diese Karte geladen werden. Eine Beispielkonfiguration Um den Vorgang der manuellen Einstellung einmal genauer zu betrachten folgt hier eine Beispielkonfiguration. Ein Rechner ist mit einer Plug and Play-fähigen Ethernetkarte ausgestattet. Der Aufruf von pnpdump > /etc/isapnp.conf erzeugt die Datei /etc/isapnp.conf mit folgendem Inhalt (gekürzt). Aus den Angaben kann folgendes ersehen werden: * Es wurde eine Plug and Play fähige Karte mit der Seriennummer 13 0e 1e 37 b4 19 01 89 14 gefunden. * Es handelt sich um eine Ethernet-Karte. Die eigentliche Konfigurationsarbeit findet zwischen den Zeilen (CONFIGURE EDI0119/236861364 (LD 0 und ) statt. Alle dort gemachten Angaben sind noch auskommentiert, also wirkungslos. Erst durch manuellen Eingriff werden sie aktiviert. Die Karte benötigt eine IO-Adresse und einen IRQ. Für diese beiden Einstellungen sind jeweils die Informationen angegeben, welche Angaben gemacht werden können. Zunächst die IO-Adresse: Aus dem Kommentar # Minimum IO base address 0x0240 # Maximum IO base address 0x03e0 # IO base alignment 32 bytes können wir entnehmen, daß die kleinste Adresse die 0x240 ist, die größte Adresse 0x3e0. Die Adressen dazwischen können in Schrittweiten von 32 Byte angegeben werden. Gültige IO-Adressen wären also: Jede dieser Adressen repräsentiert einen Adressbereich von dieser Adresse bis zur jeweils nächsten. Die Adresse 0x0240 meint also eigentlich den Bereich 0x0240-0x025f. Aus diesem Adressenpool muß nun eine Adresse ausgewählt werden, die noch nicht vom System oder einem anderen Gerät benutzt wird. Dazu wird die Datei /proc/ioports überprüft, die z.B. für den genannten Adressbereich folgende Angaben beinhalten könnte: Angaben für Adressbereiche Die Adressen 0x02e0-0x02ff sind für unser Beispiel also nicht zu gebrauchen, weil in diesem Bereich bereits eine Adresse (serial) vergeben ist. Auch die Adressen 0x0360 bis 0x03e0 sind bereits durch andere Geräte (ide1, Parport0, vga, ide0 und serial) belegt. Alle anderen Adressen stehen uns zur freien Verfügung. Wir wählen beispielsweise die Adresse 0x0300. Um diese Einstellung vorzunehmen ändern wir die Zeile # (IO 0 (BASE 0x0340)) entsprechend um, und entziehen ihr das Kommentarzeichen: (IO 0 (BASE 0x0300)) Ähnlich gehen wir jetzt mit dem IRQ um. Die Zeile # IRQ 3, 4, 5, 9, 10, 11, 12 or 15. zeigt uns alle IRQs, die unsere Karte zur Verfügung stellt. Ein Blick nach /proc/interrupts zeigt uns, welche IRQs auf unserem System schon belegt sind: belegte IRQs IRQ 5 wäre beispielsweise noch frei. Um diesen IRQ zu aktivieren, ändern wir die Zeile # (INT 0 (IRQ 10 (MODE +E))) entsprechend um und entfernen wiederum das Kommentarzeichen: (INT 0 (IRQ 5 (MODE +E))) Damit sind alle notwendigen Einstellungen erledigt, wir müssen die Karte jetzt nur noch aktivieren. Dazu wird der Zeile # (ACT Y)) das Kommentarzeichen entfernt. Damit sind die manuellen Einstellungen erledigt, die Datei kann abgespeichert werden. Um die vorgenommenen Einstellungen jetzt tatsächlich der Karte bekannt zu machen, muß das Programm isapnp aufgerufen werden. Das Programm bekommt den Namen der Konfigurationsdatei als Parameter, der Aufruf lautet also: /sbin/isapnp /etc/isapnp.conf Diese Zeile muß bei jedem Systemstart erneut ausgeführt werden. Sie sollte also in einem der init-Scripts eingetragen sein. Meist wird bei der Installation von isapnp bereits ein entsprechendes init-Script angelegt. Mit der hier besprochenen Einstellungsarbeit ist die ISA-Karte aber noch nicht ins System eingebunden. Das Einzige, was mit dieser Arbeit erreicht wurde ist, daß die Karte jetzt die entsprechenden Hardwareparameter benutzt. Die Arbeit entspricht also der manuellen Einstellung durch Jumper auf alten Karten. Das Laden der entsprechenden Module und die Übergabe der Hardwareparameter wird Thema der Vorbereitung auf die zweite Prüfung sein. Weblinks: The PNPDUMP.8 manual The ISAPNP.8 manual The ISAPNP.CONF.5 manual Plug-and-Play Hardware

Alle Artikel zur LPIC unterliegen der GNU Free Documentation License.

4 Gedanken zu „1.101 Plug and Play für Linux“

  1. Die, die wir schon haben schmeißen wir auf den Mist, damit wir uns endlich neue kaufen können? Meine ISA-Karten funktionieren alle noch hervorragend und über die Performance meines Clusters mit 20 Jahre alten 400ern kann ich mich auch nicht beklagen, lediglich mit dem hohen Stromverbrauch bin ich nicht zufrieden. 8)
    Abgesehen davon, kommt sie nur im ersten Teil des Artikels vor und das Wissen ist für die Prüfung zum LPI-Zertifikat anscheinend noch relevant. Naja, warum auch nicht, denn immerhin ist es ein gutes Beispiel, an dem man ein wenig Einblick in das Geschehen bekommen kann. Natürlich kann man heute auch unter Linux eine Erweiterungskarte einstecken und es ist nicht einmal ein Mausklick zur Inbetriebnahme erforderlich, sonst könnten die meisten Benutzer ja noch immer nicht mit Linux arbeiten und wir wären weiterhin auf MS angewiesen. 8)

  2. Pingback: Helmeloh’s NotizBlog für Linux, Web 3.0 … » 1.101 - Hardware und Systemarchitektur

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert