Bewertung: 1


Die Kandidaten sollten in der Lage sein, eine Linuxinstallation so zu konfigurieren, dass PCMCIA unterstützt wird. Dieses Prüfungsziel beinhaltet die Konfiguration von PCMCIA Geräten, wie Ethernet-Adapter, die automatisch erkannt werden, sobald sie eingesteckt sind.

Schlüsseldateien, Begriffe und Hilfsmittel beinhalten:

  • /etc/pcmcia
  • *.opts
  • cardctl
  • cardmgr

PCMCIA-Karten werden heute in der Regel in Notebooks eingesetzt und dienen dort als Ersatz für die in Desktop-Rechnern vorhandenen Erweiterungssteckplätze. Es existieren verschiedenste solcher Karten, insbesondere sind hier die folgenden Karten nennenswert:

  • Netzwerkkarten
  • Modems
  • Speicherkarten
  • SCSI-Adapter

Das wesentliche an diesen Karten ist die Fähigkeit, dass sie im laufenden Betrieb hinzugefügt und entfernt werden können (hot-plugging). Das automatische Erkennen eingesteckter Karten ermöglicht außerdem die korrekte Konfiguration des jeweiligen Gerätes. Eine Netzwerkkarte, die im laufenden Betrieb eingesteckt wird, sollte also sofort ansprechbar sein.

Unter Linux wird diese Funktionalität durch einen Daemon-Prozess erzeugt. Das Programm cardmgr überwacht alle PCMCIA-Sockets und erkennt, ob Karten hinzugefügt oder entfernt werden. Anhand einer Konfigurationsdatenbank (/etc/pcmcia/config) können Karten erkannt und anschließend über entsprechende Konfigurationsdateien (/etc/pcmcia/*.opts) konfiguriert werden. Der cardmgr läd auch die notwendigen Kernelmodule, mit denen die Karten betrieben werden und aktiviert sie.

Vorgehensweise

Damit PCMCIA unter Linux funktioniert, müssen die entsprechenden Fähigkeiten in den Kernel kompiliert werden oder als Module geladen sein. Wenn – was empfehlenswert ist – diese Fähigkeiten als Module geladen werden sollten, so müssen nach dem Aufruf von cardmgr die folgenden Module (ohne die jeweiligen Karten, also mit leeren Slots) mit lsmod zu sehen sein:

  Module:        #pages:  Used by:
  ds                 2
  i82365             3
  pcmcia_core        7    [ds i82365]

Die jeweiligen Module, die für die einzelnen Karten existieren, müssen als Module kompiliert sein und im systemweiten Modulverzeichnis (/lib/modules/Kernelversion) liegen. Die zentrale Konfigurationsdatenbank /etc/pcmcia/config sollte für die jeweilige Karte dann auf das entsprechende Modul verweisen. Soll z.B. eine Standard-Netzwerkkarte (ne2000 kompatibel) als PCMCIA-Karte geladen werden, so wird sie als pcnet_cs angesprochen. Entsprechend sollte der Eintrag in der Konfigurationsdatenbank wie folgt lauten:

  device "pcnet_cs"
  class "network" module "net/8390", "pcnet_cs"

Die zweite Zeile erklärt die Geräteklasse und zeigt, welche Module geladen werden müssen um diese Karte betreiben zu können. Läuft der cardmgr und eine derartige Karte wird eingesteckt, dann sollte der cardmgr die neue Karte erkennen. Hat er erkannt, dass eine Karte einesteckt wurde, so gibt er er einen Piepton aus. Jetzt sucht er nach der entsprechenden Information über diese Karte und läd die entsprechenden Module. War das erfolgreich, so gibt er erneut einen Piepton aus, ist er gescheitert, wird es ein tiefer Ton sein. Jetzt sollte lsmod zusätzlich zu den oben genannten Modulen noch die folgenden ausweisen:

  pcnet_cs                8736   1 
  8390                    6228   0  [pcnet_cs]

Anhand der erkannten Geräteklasse weiß cardmgr jetzt, um welche Art Gerät es sich bei der geladenen Karte handelt. In unserem Fall also „network“. Im Verzeichnis /etc/pcmcia finden sich für alle Klassen jetzt zwei Dateien. Eine trägt den Namen der Klasse und ist ausführbar, die andere trägt auch diesen Namen, besitzt aber noch die Endung .opts. Die .opts Datei enthält Variablendefinitionen, die für die Konfiguration des Geräts notwendig sind, bei Netzwerkkarten (also in der Datei /etc/pcmcia/network.opts) stehen hier beispielsweise die IP-Adressen, Netzmasken und alle anderen Angaben, um die Karte zu aktivieren. Die erste Datei (in unserem Beispiel also /etc/pcmcia/network) enthält ein Shellscript, das alle notwendigen Befehle enthält, die für die Konfiguration der Karte – zusammen mit den Variablen aus der passenden .opts-Datei notwendig sind.

Wie die Startscripts für init, enthält dieses Shellscript jeweils mehrere Sektionen, die aufgerufen werden, wenn eine Karte hinzugefügt wurde (start), herausgenommen wurde (stop) und optional auch um ihren Status zu lesen (check) oder sie in den Suspend-Mode zu setzen (suspend).

Der cardmgr-Daemon kann jetzt die jeweils notwendigen Schritte einleiten, wenn eine Karte hinzugefügt oder entfernt wurde. Üblicherweise wird cardmgr durch ein init-script beim booten gestartet und ist damit dann sofort bereit, die entsprechenden Aktionen vorzunehmen.

Verschiedene Schemata

Die Dynamik der PCMCIA-Karten wird noch unterstützt durch das Prinzip der Schemata. Wenn z.B. an einem Notebook eine PCMCIA-Netzwerkkarte installiert ist und dieser Notebook an verschiedenen Netzwerken betrieben werden soll (was bei einem Notebook eben üblicher ist, als bei einem Desktop-Rechner), dann benötigen wir unterschiedliche Einstellungen für diese unterschiedlichen Netze. Aus diesem Grund können die .opts-Dateien, die ja die relevanten Konfigurationsinformationen beinhalten, verschiedene Schemata (engl. scheme) enthalten. Es könnte z.B. folgedes in der Datei /etc/pcmcia/network.opts stehen:

  case "$ADDRESS" in
  Arbeit,*,*,*)
       # Definition der Netzwerkkarte im Arbeit Schema
       ...
       ;;
  Heim,*,*,*|default,*,*,*)
       # Definition der Netzwerkkarte im zu Hause Schema
       ...
       ;;
  esac

Der erste Teil einer PCMCIA-Geräteadresse ist also das verwendete Schema. Ein Schema ist immer das Default (voreingestellte) Schema, andere sind optional. In userem Beispiel würden also zwei Schemata existieren, eines für zu Hause („Heim“ gleichzeitig ist das auch das voreingestellte Schema) und eines für die Arbeit („Arbeit“). Für beide sind die entsprechenden Angaben über IP-Adressen, Netzwerkmasken, Gateways usw. separat gemacht. Mit dem Befehl cardctl kann jetzt von Schema zu Schema gewechselt werden. Dazu wird das Programm für unser Beispiel folgendermaßen aufgerufen um das Schema „heim“ aufzurufen:

  cardctl scheme Heim

Um dann in der Arbeit das entsprechende Schema aufzurufen, genügt ein

  cardctl scheme Arbeit

Das Programm cardctl fährt dann die Karten herunter und startet sie mit der neuen Konfiguration neu. Um herauszufinden, welches Schema augenblicklich genutzt wird, reicht ein

  cardctl scheme 

Das Programm cardctl kann auch benutzt werden, um weitere Kommandos an die entsprechenden PCMCIA-Karten weiterzugeben. Eine genaue Auflistung der Kommandos finden Sie auf der Handbuchseite.