  Linux PCMCIA HOWTO
  David Hinds (dhinds@hyper.stanford.edu) und Dirk Geschke
  (geschke@physik.uni-kassel.de)
  v1.0-3, 5. September 1997

  Dieses Dokument beschreibt die Installation und den Gebrauch des PCM
  CIA Card Service Pakets fr Linux.


  1.  Vorwort zur deutschen PCMCIA HOWTO

  Wenn man bedenkt, wieviele mgliche PCMCIA Karten es gibt, so
  erscheint es schon erstaunlich, da diese doch fast alle auch unter
  Linux funktionieren. Noch erstaunlicher ist die Einfachheit, mit der
  solche Karten mit dem PCMCIA Card Service Paket erkannt und
  konfiguriert werden knnen. Ja sogar die Installation des Paketes
  erweist sich doch als beraus einfach. Allerdings kann es passieren,
  da das Paket den gegebenen Besonderheiten angepat werden mu, bevor
  es richtig luft. Dazu dient dieses PCMCIA HOWTO. Das Originalpaket
  inklusive der englischsprachigen PCMCIA HOWTO stammt von David Hinds.

  Bei der bersetzung habe ich mich meist eng an die Vorlage gehalten.
  Daher klingt manches noch steif und zum Teil unverstndlich. Ich werde
  mich bemhen, dieses in nchster Zeit, falls ich solche finden werde,
  zu verbessern. Anmerkungen, Anregungen, Verbesserungen oder gar ganzen
  neuen Kapiteln stehe ich daher sehr aufgeschlossen gegenber. Die
  jetzt hiermit vorliegende Version ist wirklich noch in einer
  Rohfassung und mu noch berarbeitet werden. Allerdings habe ich mir
  gedacht, lieber eine solche Version bereitzustellen als gar keine.


  2.  Allgemeine Informationen und Hardwareanforderungen

  2.1.  Einfhrung

  PCMCIA Card Services realisiert ber ladbare Kernelmodule die volle
  Untersttzung von PCMCIA. Ein Kartenmanager-Daemon (cardmgr) berwacht
  die PCMCIA Slots auf Einschub oder Entfernung von Karten. Gleichzeitig
  werden die bentigten Treiber geladen oder wieder entfernt. Karten
  knnen daher jederzeit gewechselt werden.

  Diese Software ist immer noch in der Entwicklung. Sie enthlt daher
  wahrscheinlich noch Fehler und sollte daher mit Vorsicht verwendet
  werden.


  2.2.  Copyright

  Dieses Dokument ist urheberrechtlich geschtzt. Das Copyright fr die
  englische PCMCIA HOWTO, auf der dieses Dokument basiert, liegt bei
  David A. Hinds. Das Copyright fr die deutsche Version liegt bei Dirk
  Geschke.

  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 informieren.


  2.3.

  Was ist die aktuelle Version und wo kann man sie bekommen?


  Die aktuelle Major Version des Card Service Pakets ist die Version
  2.9; die Aktualisierungs- und Fehlerbeseitigungsversionen (Minor
  Versionen) sind mit den Nummern 2.9.1, 2.9.2 usw. versehen.

  Der Quellcode der neuesten Version ist auf dem FTP-Server


       hyper.stanford.edu:/pub/pcmcia



  unter dem Namen pcmcia-cs-2.9.?.tar.gz erhltlich. Gewhnlich befinden
  sich hier mehrere Versionen. David behlt nur die neueste Minor
  Version einer gegeben Major Version. Er bewahrt ebenfalls die letzte
  Version der frheren Major Version als Notanker auf, da neue Major
  Versionen teilweise ungetesteten Code enthalten. Der aktuelle Notanker
  ist die Version 2.8.23. Es liegt an einem selber, welche Version man
  verwendet. Die Datei CHANGES zeigt die wesentlichen Unterschiede der
  Versionen auf.

  hyper.stanford.edu wird auf folgendem Server gespiegelt:
  metalab.unc.edu.  Neue Versionen sollten auch ber tsx-11.mit.edu
  verfgbar sein.

  Wenn man selber die PCMCIA Treiber nicht bersetzen will, so sind die
  Treiber bereits vorbersetzt in den meisten Linux Distributionen
  enthalten.


  2.4.

  Welche Systeme werden untersttzt?

  Dieses Programmpaket sollte auf fast allen Linux-tauglichen Notebooks
  laufen. Alle gebruchlichen PCMCIA Controller, wie z.B. Intel, Cirrus,
  Vadem, VLSI, Ricoh und Databook Chipstze werden untersttzt.
  Controller, die blicherweise in Notebooks von IBM und Toshiba
  eingebaut sind, werden auch untersttzt. PCMCIA Karteneinschbe fr
  Desktop-Computer, die direkt an den ISA-Bus angeschlossen werden,
  sollten eher funktionieren als SCSI-zu-PCMCIA oder IDE-zu-PCMCIA
  Adapter.

  Der Controller 6AHC05GA von Motorola, der in einigen Hyundai Notebooks
  Verwendung findet, wird nicht untersttzt. Das gleiche gilt fr den
  Controller, der gewhnlich im HP Omnibook 600 verwendet wird. PCI zu
  CardBus bridge Controller von SMC, Ricoh, Cirrus und TI sind derzeitig
  nur im langsamen 16-Bit Modus verwendbar und dieser ist immer noch
  experimentell.


  2.5.

  Welche PCMCIA Karten werden untersttzt?

  Die aktuelle Version enthlt Treiber fr eine Vielzahl von
  Ethernetkarten, einen Treiber fr Modem- und serielle Schnittstellen-
  Karten, verschiedene Treiber fr SCSI Adapter, einen Treiber fr
  ATA-/IDE-Laufwerkskarten und Speicherkartentreiber, welche die meisten
  SRAM-Karten und einige Flash-Karten untersttzen sollten.  Die
  SUPPORTED.CARDS Datei, die jedem Card Service Paket beiliegt, listet
  alle Karten auf, von denen bekannt ist, da sie mindestens in einem
  aktuellen System laufen.

  Die Wahrscheinlichkeit, da eine Karte, die nicht auf der Liste steht,
  funktioniert, hngt vom Typ der Karte ab. Im wesentlichen sollten alle
  Modemkarten mit den mitgelieferten Treibern funktionieren. Einige
  Ethernetkarten knnen funktionieren, wenn sie OEM Versionen der
  untersttzten Karten sind. Andere Varianten von I/O-Karten (Frame
  Buffer, Soundkarten, etc.) werden solange nicht funktionieren, bis
  sich einer findet, der einen geeigneten Treiber schreibt.


  2.6.  Wann wird meine neue Karte untersttzt?

  Unglcklicherweise wird gewhnlich kein Geld fr die Entwicklung von
  Treibern gezahlt. Daher mu man selber Hand anlegen, wenn man einen
  Treiber fr seine bevorzugte Karte haben will. David Hunt arbeitet auf
  ein Modell wie den Linux-Kernel zu, wo er nur noch fr die Entwicklung
  des Kern-PCMCIA Codes zustndig ist und andere die Entwickelung und
  Pflege der Treiber fr die speziellen Karten bernehmen. Die Datei
  SUPPORTED.CARDS erwhnt einige Karten, fr welche die Entwicklung im
  Gange ist. David will dabei helfen, wo es geht. Allerdings ist die
  Analyse und Entwicklung von Treibern via E-Mail nicht besonders
  effektiv.


  2.7.


  Mailinglisten

  David bemht sich um den Erhalt einer Datenbank und Mailingliste von
  PCMCIA-Anwendern. Aktuell betreibt er eine Webseite mit Berichten zur
  Installation und Konfiguration verschiedener PCMCIA-Karten unter
  Linux. Auch finden sich hier Hinweise zur Programmierung und
  Fehlersuche. Die Linux PCMCIA-Informationsseite ist unter


       http://hyper.stanford.edu/HyperNews/get/pcmcia/home.html


  zu finden. Anwender knnen Benachrichtigung per E-Mail zu Antworten
  auf besondere Fragen oder alle neuen Nachrichten zu speziellen
  Kategorien anfordern. David hofft, da dies eine brauchbare Sammlung
  an Informationen fr die Fragen wird, die auerhalb des Rahmens dieser
  HOWTO liegen.

  Es existiert eine Linux Mailingliste, die dem Thema Notebook gewidmet
  ist: linux-laptop. Fr mehr Informationen mu man eine Nachricht, die
  das Wort help enthlt, an majordomo@vger.rutgers.edu senden. Zum
  Eintrag in die Mailingliste mu eine E-Mail mit dem Titel subscribe
  linux-laptop an diese Adresse geschickt werden. Die Mailingliste kann
  ein gutes Forum fr die Diskussion von PCMCIA-Themen sein.

  Die Linux Laptop Homepage enthlt zahlreiche Links zu Stellen, die
  Informationen ber die Konfiguration spezieller Notebooks mit Linux
  enthalten. Auerdem ist hier eine durchsuchbare Datenbank zu finden,
  die Informationen zur Konfiguration von Systemen enthlt.


  3.  Kompilierung, Installation und Konfiguration

  3.1.

  Vorbemerkungen und Kernelkonfiguration

  Vor dem Beginn sollte man darber nachdenken, ob es wirklich
  erforderlich ist, das PCMCIA-Paket selber zu kompilieren. Die meisten
  Linux Distributionen werden mit einem vorkompilierten PCMCIA-
  Treiberpaket ausgeliefert. Im allgemeinen mu das Paket nur dann
  selbst kompiliert werden, wenn man eine neuere Version des PCMCIA-
  Paketes bentigt, weil erst diese einen bestimmten Treiber oder eine
  bestimmte Funktionalitt besitzt, oder man eine andere Kernelversion
  installiert hat, als die, die mit der Distribution ausgeliefert worden
  ist. Das Kompilieren des PCMCIA-Pakets ist technisch nicht schwierig,
  setzt allerdings eine gewisse Vertrautheit mit Linux voraus.

  Die folgenden Dinge mssen installiert sein, bevor man mit der
  Installation des Paketes beginnen kann:


    Einer der folgenden Kernel: 1.2.8 bis 1.2.13, 1.3.30, 1.3.37,
     1.3.39 bis 1.3.99, 2.0.x oder 2.1.x.

    Die passende Version der Programme fr Module.

    Optional die XForms Bibliothek fr ein X11 User Interface

  Die neueste Version verlangt einen Kernel der Version 1.2.18 oder
  hher, oder ein Entwickler-Kernel 1.3.30 oder neuer. Version 1.3.38
  funktioniert nicht und die Versionen 1.3.31 bis 1.3.36 sind nicht
  getestet worden. Es werden auch relativ neue Modulprogramme bentigt.
  Es gibt keine Kernel-Patches speziell fr PCMCIA.

  Man bentigt einen kompletten Quellbaum des Linux-Kernels. Ein bereits
  bersetzter Kernel allein gengt nicht. Das PCMCIA Modul enthlt
  einige Referenzen auf Kernel-Quelltexte. Whrend man einen neuen
  Kernel bersetzen will, um unntige Treiber zu entfernen, ist dies fr
  die Installation von PCMCIA nicht notwendig.

  Aktuelle stabile Kernelquellen und Patches sind unter folgenden
  Adressen erhltlich:


    http://metalab.unc.edu/pub/Linux/kernel/v2.0

    http://tsx-11.mit.edu/pub/linux/sources/system/v2.0

  Aktuelle Modulwerkzeuge sind dort unter modules-2.0.0.tgz zu finden.
  Entwicklungskernel sind in den entsprechenden v2.1 Verzeichnissen zu
  finden. Einige aktuelle Entwicklungskernel und Compiler arbeiten
  schlecht mit lteren Modulwerkzeugen zusammen. Bei der Verwendung von
  2.1-Kerneln mu man sicherstellen, da man die richtige Kombination an
  Libraries und Modulwerkzeugen einsetzt. Die neuesten Modulwerkzeuge
  sowie Versionen fr ltere Kernel sind unter


       http://www.pi.se/blox/modules



  zu finden.


  Wird der Einsatz einer PCMCIA Ethernetkarte geplant, so ist bei der
  Konfiguration des Kernels die Untersttzung fr Netzwerke zu
  aktivieren und die normalen Linux Ethernettreiber einschlielich der
  Treiber fr Pocket und portable Adapter zu deaktivieren. Die PCMCIA-
  Netzwerkkartentreiber sind alle als ladbare Module implementiert.
  Jeder unntig in den Kernel einkompilierte Treiber verschwendet nur
  Platz.

  Wenn SLIP, PPP oder PLIP verwendet werden sollen, mssen die
  entsprechenden Treiber entweder in den Kernel einkompiliert werden
  oder die Treiber als Module geladen werden. In der Kernelkonfiguration
  der 1.2.x-Kernel ist es nicht mglich, Optionen wie SLIP-Kompression
  fr ladbare Module zu aktivieren. Daher wird es hier wohl besser sein,
  SLIP direkt in den Kernel zu binden, wenn diese Funktionalitt
  bentigt wird.


  Soll ein PCMCIA-Token Ring Karte verwendet werden, so mu der Kernel
  mit der Option Token Ring driver support bersetzt worden sein,
  wobei die Option CONFIG_IBMTR ausgeschaltet sein sollte.

  Sollen PCMCIA IDE-Karten verwendet werden, so sollte im Kernel
  CONFIG_BLK_DEV_IDE_PCMCIA aktiviert sein. Diese Funktion gibt es nur
  bei den Kerneln 1.3.72 bis 2.1.7. ltere Kernel haben keine
  Untersttzung fr wechselbare IDE-Gerte; neuere Kernel bentigen
  keine spezielle Konfiguration.

  Bei der Verwendung von PCMCIA SCSI-Karten sollte in der
  Kernelkonfiguration CONFIG_SCSI aktiviert sein. Ebenso sollten die
  Haupttreiber fr die geplanten SCSI-Gerte wie Festplatten,
  Bandlaufwerke, CD-ROMs oder generische Devices aktiviert sein,
  wohingegen die Treiber fr spezielle SCSI-Controller-Karten nicht
  bentigt werden.

  Wenn Treiber des Kernels, die fr die PCMCIA-Gerte bentigt werden,
  als Module bersetzt wurden, so ist die Datei /etc/pcmcia/config
  entsprechend zu modifizieren, so da jeweils die bentigten Module fr
  eine Karte geladen werden. Wenn zum Beispiel ein serieller Treiber
  modularisiert wurde, mu die serielle Gertedefinition wie folgt
  gendert werden:



       device "serial_cs"
         class  "serial" module "misc/serial", "serial_cs"




  Wenn der Kernel mit der Option CONFIG_MODVERSIONS (Kontrolle der
  Versionsnummer von Modulen) kompiliert wurde, so wird das
  Konfigurationsskript nach der Existenz der Datei
  /usr/include/linux/modversions.h, der Moduldatenbank, suchen. Diese
  wird erstellt, wenn im Kernelquellverzeichnis der Befehl make dep
  ausgefhrt wird.

  Dieses Paket enthlt eine auf X11 basierte Kartenstatusanzeige mit dem
  Namen cardinfo. Dieses Programm basiert auf der kostenlos vertriebenen
  Widgetbibliothek XForms, welche installiert sein mu, wenn man
  cardinfo verwenden will. Eine binre Version ist unter


       hyper.stanford.edu:/pub/pcmcia/extras



  sowohl im a.out als auch im ELF Format erhltlich. Es mssen
  zustzlich alle gewhnlichen X11 Headerdateien und Bibliotheken
  installiert sein.


  3.2.


  Installation

  Hier ist ein bersicht des Installationsprozesses:



    Entpacken von pcmcia-cs-2.9.?.tar.gz in /usr/src.

    Starte make config in dem neu entstandenen Verzeichnis pcmcia-
     cs-2.9.?.

    Starte make all, danach make install.

    Anpassen des PCMCIA-Startskripts und der Optionsdatei in
     /etc/pcmcia an die eigenen Bedrfnisse.

  Whrend des Laufs von make config werden einige
  Konfigurationseinstellungen abgefragt und es wird berprft, ob das
  System fr die Installation der PCMCIA-Untersttzung entsprechend
  vorbereitet ist. In den meisten Fllen knnen die
  Standardeinstellungen verwendet werden. Fr den Fall, da Probleme
  auftreten, ist es ratsam, auf die Ausgaben dieses Programmes zu
  achten.

  Wird das PCMCIA-Paket fr den Gebrauch auf einem anderen Computer
  kompiliert, so sollte ein anderes Installationsverzeichnis angegeben
  werden, wenn danach gefragt wird. Dies sollte ein absoluter Pfad sein.
  Alle PCMCIA-Dateien werden relativ zu diesem Pfad installiert. Danach
  ist man in der Lage, das ganze Unterverzeichnis in eine tar Datei zu
  schreiben und zum Zielcomputer zu kopieren, wo das Archiv dann im
  Root-Verzeichnis entpackt werden mu, um das PCMCIA-Paket an der
  richtigen Stelle zu installieren.

  Wenn das Paket fr einen andere Architektur, z.B. fr einen Linux
  Rechner mit einer Alpha CPU, crosskompiliert werden soll, so kann ein
  anderer Compiler und Linker angegeben werden. Dies kann auch auf
  Systemen mit gemischtem a.out- und ELF-Formaten hilfreich sein.  Auch
  wird das Skript nach zustzlichen Optionen des Compilers fr's
  Debugging fragen.

  Einige der Programme (cardctl und cardinfo) knnen entweder in der
  safe- oder trusting-Form kompiliert werden. Die safe-Form verhindert,
  da Nicht-Root-Anwender die Kartenkonfiguration ndern knnen. Die
  trusting-Form erlaubt normalen Anwendern, Befehle abzusetzen, um
  Karten anzuhalten, wiederanzufahren, zurckzusetzen und die aktuelle
  Konfiguration zu ndern. Das Konfigurationsskript wird nach einer der
  beiden Formen fragen. Die Voreinstellung ist safe.

  Es gibt ein paar Einstellungen der Kernelkonfiguration, die
  Auswirkungen auf die PCMCIA-Werkzeuge haben. Das Konfigurationsskript
  kann diese meistens aus dem laufenden Kernel herauslesen. Alternativ,
  wenn fr einen anderen Computer kompiliert wird, kann diese
  Konfiguration aus einem Kernelquellcode-Verzeichnisbaum herausgelesen
  werden oder sie knnen interaktiv abgefragt werden.

  Das Durchlaufen von make all gefolgt von make install wird die
  Kernelmodule und Anwendungsprogramme erzeugen und installieren. Die
  Kernelmodule werden in /lib/modules/{version}/pcmcia installiert.  Die
  Programme cardmgr und cardctl werden in /sbin installiert. Wenn
  cardinfo erstellt wird, so wird es in /usr/bin/X11 installiert.

  Die Konfigurationsdateien werden in das Verzeichnis /etc/pcmcia
  kopiert. Wird ber eine alte Version installiert, so werden die alten
  Kofigurationsdateien umbenannt, bevor die neuen installiert werden.
  Die alten Skriptdateien bekommen Endungen wie *.~1~, *.~2~ und so
  weiter.

  Wenn nicht bekannt ist, welcher PCMCIA Controller Chip in den Rechner
  eingebaut ist, so kann die probe Funktion im Unterverzeichnis von
  cardmgr/ verwendet werden, um den Chiptyp zu ermitteln. Es gibt zwei
  Hauptarten an Chips: der Databook TCIC-2 Typ und der Intel i82365SL
  kompatible Typ.
  Ein Daemon auf Anwenderebene berwacht, ob eine Karte eingeschoben
  oder entfernt wird. Dieser Daemon heit cardmgr. Dieser ist hnlich in
  der Funktion wie Barry Jaspans pcmdiad in frheren Versionen. cardmgr
  liest die Konfigurationsdatei /etc/pcmcia/config, welche die bekannten
  PCMCIA Karten beschreibt. Es werden darin ebenso die zustzlichen
  Module erwhnt, die fr den Gebrauch der PCMCIA-Karte notwendig sind
  und eventuell auf das eigene System angepat werden mssen. Sollten
  weitere Informationen bentigt werden, sollte die Manual Page
  weiterhelfen.


  3.3.


  Abschlu der Installation bei Systemen, die BSD Initskripte verwenden

  Einige Linux Distributionen, wie z.B. Slackware, verwenden eine BSD-
  Anordnung der Systemstartskripte. Wenn die Datei /etc/rc.d/rc.M
  existiert, gehrt das System zu dieser Gruppe. Das Skript rc.pcmcia,
  das in /etc/rc.d installiert ist, kontrolliert den Start und Stopp des
  PCMCIA-Systems. make install verwendet das Kommando probe, um den
  Chiptyp zu ermitteln und das Skript rc.pcmcia entsprechend anzupassen.
  Es sollte dann eine Zeile in der Startdatei /etc/rc.d/rc.M eingefgt
  werden, die das PCMCIA-Startskript aufruft:



       /etc/rc.d/rc.pcmcia start




  Es ist nicht wichtig, wo diese Zeile erscheint, solange sie nach dem
  Start von syslogd steht.


  3.4.  Startskripts folgen



  Abschlu der Installation bei Systemen, die den System V

  RedHat, Caldera und Debian Linux haben Startskripts, die dem System V
  folgen. Wenn ein Verzeichnis mit dem Namen /etc/init.d oder
  /etc/rc.d/init.d existiert, gehrt die Distribution zu dieser Gruppe.
  Das rc.pcmcia Skript wird dann entsprechend in /etc/init.d oder
  /etc/rc.d/init.d installiert. Es besteht hier keine Notwendigkeit,
  irgendeine Startdatei zu editieren, um PCMCIA zu aktivieren: Dies
  geschieht automatisch.

  Wenn das Verzeichnis /etc/sysconfig existiert, wird eine separate
  Konfigurationsdatei zum Starten als /etc/sysconfig installiert. Wenn
  in diesem Fall irgendwelche Moduloptionen, wie z.B. PCIC= oder
  PCIC_OPTS= Einstellungen, gendert werden sollen, so ist dies in
  dieser Datei einzutragen und nicht im Startskript. Bei nachfolgenden
  Installationen wird diese Datei nicht berschrieben. Einige Systeme
  werden mit Systemkonfigurationsdateien ausgeliefert, die PCMCIA per
  Voreinstellung deaktivieren (wie z.B. S.u.S.E.). Daher sollte der
  Inhalt solcher Dateien vorher berprft werden (bei S.u.S.E.:
  /etc/rc.config).

  Einige frhere Versionen verwendeten die PCMCIA-Skripte in
  /etc/sysconfig anstelle von /etc/pcmcia. Die aktuelle Version und
  zuknftige werden das Verzeichnis /etc/pcmcia auf allen Systemen
  verwenden. Existierende PCMCIA-Skripte in /etc/sysconfig werden nach
  /etc/pcmcia verschoben.
  3.5.



  Computerspezifische Konfigurationsoptionen

  Card Services sollte es automatisch vermeiden, auf Ports und
  Interrupts zuzugreifen, die von anderen Gerten verwendet werden. Es
  wird ebenfalls versucht, Konflikte mit anderen unbekannten Gerten zu
  entdecken. Allerdings ist dies nicht absolut zuverlssig. In einigen
  Fllen mssen bestimmte Bereiche fr einen Treiber explizit
  ausgeschlossen werden. Dies erreicht man ber die Datei
  /etc/pcmcia/config.opts.

  Hier sind einige Einstellungen fr spezielle Notebooks:


    Beim AMS SoundPro vermeide IRQ 10.

    Bei einigen AMS TravelPro 5300 Modellen sollte der Speicherbereich
     0x8000-0xcffff verwendet werden.

    Beim Chicony NB5 sollten die IRQs 5 und 9 nicht verwendet werden.

    Die Ports 0x2f8-0x2ff, IRQ 3 und IRQ 5 sollten beim Compaq Presario
     1020 ausgeschlossen werden.

    Die Ports 0x300-0x30f sollten beim HP Omnibook 4000C vermieden
     werden.

    Die IRQs 5 und 9 sollten beim Micron Millenia Transport nicht
     verwendet werden.

    Beim NEC Versa M schliee die Ports 0x2e0-0x2ff und IRQ 9 aus.

    Beim NEC Versa P/75 sollten die IRQs 5 und 9 ausgeschlossen werden.

    Bei der NEC Versa 6000 Serie sollten die IRQs 9 und 12
     ausgeschlossen werden.

    Beim ProStar 9200, Altima Virage und Acquiline Hurricane DX4-100
     vermeide IRQ 5, Port 0x330-0x35f. Versuche eventuell den
     Speicherbereich 0xd8000-0xdffff.

    Verwende auf dem TI TravelMate 5000 den Speicherbereich
     0xd4000-0xdffff.

    Bei dem Toshiba T4900 CT schliee IRQ5 und die Ports 0x2e0-0x2e8
     und 0x330-0x338 aus.

    Bei dem Twinhead 5100, HP 4000, Sharp PC-8700 und PC-8900 schliee
     IRQ 9 (Sound) und IRQ 12 aus.

    Bei der MPC 800 Serie sollten IRQ 5 und der Port 0x300-0x30f fr
     das CD-ROM-Laufwerk vermieden werden.

  Einige PCMCIA-Controller haben optionale Eigenschaften, die bei
  einigen Systemen eventuell implementiert sind. Es ist generell
  unmglich, fr einen PCMCIA-Treiber festzustellen, ob diese speziellen
  Eigenschaften eingebaut sind. Man lese daher die Manual Page des
  eingebauten Treibers fr die mglicherweise implementierten und
  aktivierbaren Eigenschaften.

  In wenigen Fllen ist das probe Kommando nicht in der Lage, den
  Controllertyp automatisch zu ermitteln. Bei Halikan NBD 486-Systemen,
  die einen TCIC-2-Controller an einer ungewhnlichen Stelle haben, mu
  die Datei rc.pcmcia editiert werden, damit das tcic Modul geladen
  wird. Dabei mu der Parameter PCIC_OPTS auf tcic_base=0x02c0 gesetzt
  werden.

  Die Treibermodule tcic und i82365 haben zahlreiche Parameter zur
  Behandlung der Busgeschwindigkeit, welche fr besonders schnelle
  Prozessoren angepat werden mssen. Symptome fr
  Geschwindigkeitsprobleme sind unter anderem Probleme der
  Kartenerkennung, Blockierung bei hoher Prozessorbelastung, groe
  Fehlerraten oder schlechte bertragungsraten der Gerte. Man
  kontrolliere die entsprechenden Manual Pages fr nhere Informationen.
  Hier ist eine kurze Zusammenfassung:


    Cirrus Controller haben zahlreiche anpabare
     Geschwindigkeitsparameter. Der wichtigste scheint die cmd_time
     Option, die die Dauer von PCMCIA-Buszyklen festlegt, zu sein.
     Schnelle 486-Systeme (insbesondere DX4-100) scheinen oft von einer
     Erhhung von 6 (Voreinstellung) auf 12 oder 16 zu profitieren.

    Der Cirrus PD6729 PCI Controller hat eine fast_pci Einstellung,
     welche gesetzt werden sollte, falls die PCI-Busgeschwindigkeit
     grer als 25 MHz ist.

    Bei Vadem VG-468- und Databook TCIC-2-Controllern ndert die
     async_clock Option die relative Geschwindigkeit des PCMCIA-Busses
     zum Hauptbus. Wird diese Option gesetzt, so werden extra
     Wartezyklen bei einigen Operationen eingefgt werden. David hat von
     einem Notebook gehrt, das diese Option bentigte.

    Das pcmcia_core Modul besitzt einen cis_speed Parameter zum ndern
     der Geschwindigkeit, mit der auf den Speicher der Card Information
     Structure (CIS) zugegriffen wird. Bei einigen Systemen mit
     schnellen Busgeschwindigkeiten kann die Erhhung dieses Parameters,
     d.h. Verlangsamung des Kartenzugriffs, die Erkennung einzelner
     Karten begnstigen.

    Dies ist keine Geschwindigkeitseigenschaft, ist aber hilfreich,
     wenn sich mehr als ein PCMCIA-Controller im System befindet oder
     mehrere Einschbe sich in einer Docking Station befinden. In
     diesem Fall hilft es, wenn beim Laden des i82365 Moduls die Option
     extra_sockets=1 gesetzt ist.

  Alle diese Optionen sollten durch Modifizierung der Datei rc.pcmcia
  konfiguriert werden. Zum Beispiel:



       # sollte entweder i82365 oder tcic sein
       PCIC=i82365
       # Geschwindigkeitsparameter des Treibers sollten hier
       # stehen
       PCIC_OPTS="cmd_time=12"
       # pcmcia_core Optionen werden hier angegeben
       CORE_OPTS="cis_speed=500"




  Hier sind ein paar Geschwindigkeitseinstellungen fr spezielle
  Systeme:


    Beim ARM Pentium-90 oder Midwest Micro Soundbook Plus sollten die
     Optionen "freq_bypass=1 cmd_time=8" verwendet werden.

    Beim Midwest Micro Soundbook Elite verwendet man "cmd_time=12".

    Beim Gateway Liberty versuche man die Option "cmd_time=16".

  Bei einigen Systemen, die den Cirrus-Controller verwenden, wie z.B.
  der NEC Versa M, versetzt das BIOS den Controller in einen speziellen
  Ruhemodus whrend des Einschaltens. Auf solchen Systemen wird das
  probe-Kommando keinen PCMCIA-Controller entdecken. Wenn dies
  geschieht, mu die Datei rc.pcmcia von Hand wie folgt abgendert
  werden:



       # sollte entweder i82365 oder tcic sein
       PCIC=i82365
       # Geschwindigkeitsparameter des Treibers sollten hier
       # stehen
       PCIC_OPTS="wakeup=1"





  3.6.

  Probleme beim Laden der Kernelmodule

  Das Konfigurationsskript stellt normalerweise sicher, da die PCMCIA-
  Module mit dem installierten Kernel funktionieren. Daher lassen sich
  Probleme mit dem Laden der Module meist darauf zurckfhren, da der
  Installationsvorgang nicht korrekt durchgefhrt worden ist. Einige
  solcher Fehlermeldungen werden direkt auf der Linuxkonsole ausgegeben,
  andere werden in der Systemlogdatei aufgezeichnet. Diese heit
  normalerweise /usr/adm/messages oder /var/log/messages. Dies hngt von
  der Konfiguration des syslogd Daemons ab und wird in der Datei
  /etc/syslog.conf festgelegt. Um den Fehler einzugrenzen, sollten
  dieses Log-Dateien genau untersucht werden. Auf diese Weise kann auch
  herausgefunden werden, welches Modul das Problem verusacht.

  Einige der PCMCIA-Module bentigen Kerneldienste, die nur dann
  vorhanden sind, wenn der Kernel entsprechend konfiguriert wurde.  Zum
  Beispiel verlangt der SCSI-Kartentreiber, da der Kernel mit SCSI-
  Untersttzung bersetzt wurde. Analog bentigt der Netzwerktreiber die
  Netzwerkuntersttzung des Kernels. Wenn dem Kernel die notwendigen
  Treiber fehlen, kann es sein, da sich insmod mit der Begrndung von
  undefinierten Symbolen weigert, ein Modul zu laden.

  Wenn insmod von wrong version-Fehlern berichtet, so bedeutet dies,
  da die Module fr eine andere Kernelversion als die aktuell auf dem
  System laufende bersetzt worden sind. Dieses kann passieren, wenn die
  Module auf einem anderen Computer mit anderer Konfiguration bersetzt
  worden sind und auf den eigenen kopiert wurden oder wenn der Kernel
  nach der Installation der PCMCIA-Module neu konfiguriert wurde.

  Eine andere Fehlerquelle besteht darin, da die Module und der Kernel
  mit unterschiedlichen Einstellungen von CONFIG_MODVERSIONS bersetzt
  worden sind. Wenn ein Modul mit Versionskontrolle in ein Kernel ohne
  diese Kontrolle geladen wird, so wird insmod sich ber undefinierte
  Symbole beschweren.

  Zum Schlu sind noch relativ neue Versionen der binutils inkompatibel
  mit den lteren Versionen der Modulwerkzeuge. Dies kann
  Inkompatibilitten der Module verursachen. Eine bliche Fehlermeldung
  in einem solchen Fall ist die Meldung, da gcc_compiled nicht
  definiert sei. Wenn diese Fehlermeldungen erscheinen, sollte man auf
  die neuesten Modulwerkzeuge aufrsten. Diese sind unter
       http://www.pi.se/blox/modules

  zu bekommen.


  3.7.

  Interruptprobleme beim Wechsel des Kartenstatus

  In den meisten Fllen wird der Treiber (i82365 oder tcic) automatisch
  einen Interrupt suchen und auswhlen, um den Kartenstatus anzuzeigen.
  Diese automatische Interruptsuche funktioniert bei einigen Intel-
  kompatiblen Controllern nicht, wie z.B. Cirrus Chips und einige in IBM
  ThinkPads verwendeten Chips. Wenn ein Gert whrend des Testvorgangs
  inaktiv ist, kann es passieren, da der Interrupt dieses Gertes als
  frei erscheint. In solchen Fllen kann es passieren, da dieser
  Interrupt vom Treiber verwendet wird.

  Bei den i82365 und dem tcic Treibern kann die Option irq_mask
  verwendet werden, um die mglichen Interrupts einzuschrnken. Diese
  Maske schrnkt den Satz der mglichen Interrupts, die fr den Gebrauch
  mit PCMCIA-Karten oder fr die Anzeige von Kartenstatusnderungen
  verwendet knnen, ein. Die Option cs_irq kann ebenfalls verwendet
  werden, um explizit den Interrupt festzulegen, mit welchem der Wechsel
  des Kartenstatus berwacht wird.

  Wenn ein funktionierender Interrupt nicht gefunden werden kann, so
  besteht die Mglichkeit, einen Pollingmodus zu verwenden. Sowohl der
  i82365 als auch der tcic Treiber akzeptieren die Option
  poll_intervall=100, durch welche festgelegt wird, da sie jede Sekunde
  Kartenstatus pollen. Diese Option sollte auch verwendet werden, wenn
  der Spielraum fr freie Interrupts fr den Gebrauch durch PCMCIA stark
  eingeschrnkt ist. Insbesondere fr Systeme mit mehreren PCMCIA
  Controllern ist die Zahl der Interrupts zur Anzeige der
  Statusinformationen der Karten stark eingeschrnkt.

  Alle diese Optionen sollten in der PCIC_OPTS= Zeile in der Datei
  rc.pcmcia gesetzt werden.


  3.8.

  Probleme mit der Konfiguration des Speicherfensters

  Per Voreinstellung reservieren sich die PCMCIA-Treiber Speicherfenster
  im Bereich 0xc0000-0xfffff nach der berprfung dieses Bereiches auf
  den Gebrauch durch ROM oder andere Gerte. Dieses Fenster wird in der
  Datei /etc/pcmcia/config.opts definiert. Die berprfung dieses
  Bereichs wird durchgefhrt, wenn ein Treiber versucht, eine neue Karte
  zu konfigurieren. Dieser Prfvorgang ist nicht Narrensicher, so da
  Probleme auftreten knnen. Wenn ein Speicherbereich erkannt wurde, der
  von einem anderen Gert verwendet wird, so kann es passieren, da die
  Karte nicht korrekt erkannt wird. Durch das von einigen Chipstzen
  untersttzte BIOS Shadowing knnen ebenfalls Fehler entstehen. Wenn
  man feststellt, da alle Karten flschlicherweise immer als
  Speicherkarten erkannt werden, sollte man sichergehen, da das BIOS
  Shadowing beim Computer ausgeschaltet ist. Ein gutes Fenster zu
  finden, erfordert manchmal einiges Herumexperimentieren. Einige gute
  Fensteralternativen, die man versuchen kann, sind die Bereiche
  0xd8000-0xdffff, 0xc0000-0xcffff und 0xc8000-0xcffff.

  Wenn man DOS PCMCIA Treiber besitzt, kann man versuchen, anhand dieser
  einen guten Speicherbereich herauszufinden. Es ist jedoch zu beachten,
  da diese Adressen oft in Segmentform angegeben sind. Es fehlt in
  diesem Fall die letzte hexadezimale Ziffer. Die absolute Adresse
  0xd0000 wrde also z.B. als 0xd000 angegeben werden. Man sollte also
  darauf achten, diese letzte Ziffer hinzuzufgen, falls man solche
  Werte bernimmmt.

  Wenn das Anpassen des Fensters im Speicherbereich das Problem der
  Kartenerkennung nicht lst, so liegt wahrscheinlich ein
  Geschwindigkeitsproblem (timing) vor.


  3.9.  Warum werden die PCMCIA-Treiber nicht binr vertrieben?

  Das Vertreiben von binren Treibern ist schwierig, da einige
  Eigenschaften erst beim bersetzen der Dateien angegeben werden
  knnen. Die PCMCIA-Module hngen auch von der richtigen
  Kernelkonfigutation und -version ab. Daher mssten binre Versionen
  zusammen mit passenden Kerneln vertrieben werden. Der grte Bedarf an
  vorbersetzten Modulen besteht bei der Installation einer Linux-
  Distribution. In diesem Fall werden die PCMCIA-Module zum Teil direkt
  fr die Installation bentigt, um z.B. ber eine PCMCIA-Netzwerkkarte
  die Pakete der Distribution von einem Server zu beziehen.

  PCMCIA ist heute Bestandteil der meisten Linux-Distributionen.


  3.10.  Warum ist das PCMCIA-Paket so gro?

  Eigentlich ist das Paket nicht so gro. Alle Treibermodule zusammen
  bentigen weniger als 200 KB an Speicherplatz auf der Festplatte. Mit
  den zustzlichen Werkzeugen werden es zustzlich weitere 70 KB und das
  Verzeichnis /etc/pcmcia belegt ungefhr 30 KB. Im Betrieb bentigen
  die Hauptmodule ungefhr 48 KB Hauptstpeicher. Der cardmgr-Daemon wird
  generell direkt ausgelagert und nur beim Kartenwechsel aktiv. Das
  gesamte Paket belegt nicht mehr Platz als die DOS-Varianten.



  4.  Gebrauch und Eigenschaften

  4.1.

  Werkzeuge zur berwachung der PCMCIA-Gerte

  Der cardmgr-Daemon piept normalerweise, wenn eine neue Karte
  eingefhrt wird. Der Piepton zeigt den Status der neuen Karte an. Zwei
  hohe Tne bedeuten, da die Karte erkannt und konfiguriert wurde. Ein
  hoher und ein tiefer Ton zeigen an, da die Karte erkannt aber nicht
  konfiguriert werden konnte. Lediglich ein tiefer Ton zeigt an, da die
  neue Karte nicht erkannt wurde.

  Wenn die Module korrekt geladen wurden, sollte das Kommando lsmod,
  ohne eingefhrte Karten, folgende Ausgabe zeigen:



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




  Alle PCMCIA-Module und der cardmgr-Daemon senden Statusmeldungen an
  den syslog-Daemon. Diese Meldungen werden dann gewhnlich in die Datei
  /var/log/messages oder /usr/adm/messages geschrieben. Diese Dateien
  sollten bei der Fehlersuche als erstes untersucht werden. Wenn ein
  Fehlerreport geschrieben wird, sollte der Inhalt dieser Datei
  mitgeschickt werden. Wenn Probleme bestehen, die Systemmeldungen zu
  finden, sollte die Datei /etc/syslogd.conf daraufhin untersucht
  werden, wie die verschiedenen Nachrichtenklassen behandelt werden.

  cardmgr speichert einige Informationen der aktuell genutzten Karten in
  jedem Slot in der Datei /var/run/stab. Hier ist ein Beispiel fr den
  Inhalt einer solchen Datei:



       Socket 0: Adaptec APA-1460 SlimSCSI
       0       scsi    aha152x_cs      0       sda     8       0
       0       scsi    aha152x_cs      1       scd0    11      0
       Socket 1: Serial or Modem Card
       1       serial  serial_cs       0       ttyS1   5       65




  Im ersten Feld steht der verwendet Slot, das zweite enthlt die
  Gerteklasse, das dritte den Treibernamen, das vierte wird verwendet,
  um die verschiedenen Gerte, die an den gleichen Treiber angeschlossen
  sind, durchzunumerieren. Das fnfte Feld ist der Gertename und die
  letzten beiden Felder enthalten die Major- und Minor-Gertenummern,
  falls diese angebbar sind.

  Das Kommando cardctl kann verwendet werden, um den Status der Slots zu
  ermitteln oder zu sehen, wie sie konfiguriert sind. Hier ist eine
  Beispielausgabe des cardctl config Kommandos:


       Socket 0:
       Socket 1:
         Vcc = 5.0, Vpp1 = 0.0, Vpp2 = 0.0
         Card type is memory and I/O
         IRQ 3 is dynamic shared, level mode, enabled
         Speaker output is enabled
         Function 0:
           Config register base = 0x0800
             Option = 0x63, status = 0x08
           I/O window 1: 0x0280 to 0x02bf, auto sized
           I/O window 2: 0x02f8 to 0x02ff, 8 bit




  Wenn X luft, wird das Programm cardinfo in einer grafischen Anzeige
  den Status aller PCMCIA-Slots anzeigen, hnlich wie es cardctl config
  tut.


  4.2.

  berblick der PCMCIA-Konfigurationsskripte

  Jedes PCMCIA-Gert ist mit einer Klasse verknpft, welche beschreibt,
  wie es konfiguriert und gehandhabt werden soll. Klassen sind mit
  Gertetreibern verknpft, die in /etc/pcmcia/config beschrieben sind.
  Aktuell sind dort fnf Ein-/Ausgabe-Gerteklassen (Netzwerk, SCSI, CD-
  ROM, Festplatten und serielle Gerte) und drei Speicherklassen (FTL,
  memory und pcmem) definiert. Zu jeder Klasse existieren zwei Skripte
  in /etc/pcmcia/config: Ein Hauptkonfigurationsskript, z.B.
  /etc/pcmcia/scsi fr SCSI-Gerte, und ein Optionsskript, z.B.
  /etc/pcmcia/scsi.opts. Das Hauptskript fr ein Gert wird aufgerufen,
  um eine Karte zu konfigurieren, die gerade eingeschoben wird und um
  das Gert herunterzufahren, wenn die Karte herausgenommen wird. Fr
  Karten mit mehreren Gerten wird das Skript fr jedes Gert gestartet.

  Das Konfigurationsskript entnimmt als erstes einige Informationen aus
  /var/run/stab. Jedes Skript bildet eine Gerteadresse, welche
  eindeutig das Gert beschreibt, welches es konfiguriert, und speichert
  sie in der ADDRESS Variablen. Diese wird an das *.opts Skript
  weitergegeben. Dieses Skript soll dann die Informationen fr die
  Konfiguration des Gertes an dieser Adresse liefern. Bei einigen
  Gerten ist diese Adresse lediglich die Slotnummer, bei anderen
  enthlt sie zustzliche Informationen, die hilfreich bei der
  Konfiguration sein knnen. Zum Beispiel enthalten die Gerteadressen
  von Netzwerkkarten die Ethernetadressen. Auf diese Weise kann das
  network.opts-Skript diese Karte von anderen Netzwerkkarten
  unterscheiden und somit zwischen verschiedenen Konfigurationen whlen.

  Der erste Teil aller Gerteadressen ist das aktuelle PCMCIA-Schema.
  Dieser Parameter wird verwendet, um zwischen verschiedene Stzen von
  Konfigurationen zu whlen. Eine Anwendung der Schemata knnte es sein,
  eine Konfiguration fr daheim und eine fr die Arbeit zu haben, welche
  verschiedene Parameter fr die Netzwerkkonfiguration bentigen. Das
  aktuelle Schema wird mit dem Kommando cardctl ausgewhlt. Die
  Voreinstellung, wenn kein Schema gesetzt wird, ist default.

  Eine generelle Regel fr die Konfiguration von Linux auf Notebooks
  ist, da alle PCMCIA-Gerte nur ber die PCMCIA-Gerte-Skripte
  konfiguriert werden. Man sollte nicht versuchen, PCMCIA-Gerte wie
  permanent angeschlossene Gerte zu konfigurieren.


  4.3.


  PCMCIA-Netzwerkkarten

  Ethernetkarten unter Linux haben normalerweise Namen wie eth0, eth1
  und so weiter. Token-Ring-Karten werden hnlich gehandhabt, allerdings
  haben sie Namen wie tr0, tr1 und so weiter. Das Kommando ifconfig wird
  verwendet, um den Status von Netzwerkkarten zu erfragen oder zu
  ndern. Eine Besonderheit unter Linux ist, da diese Netzwerkkarten
  keine entsprechenden Gertedateien in dem Verzeichnis /dev besitzen.
  Daher sollte man sich nicht wundern, wenn man dort auch keine findet.

  Wenn eine PCMCIA-Ethernetkarte entdeckt wird, so bekommt sie den
  ersten verfgbaren Schnittstellennamen; dieser wird wahrscheinlich
  eth0 sein. cardmgr wird das Skript /etc/pcmcia/network starten, um die
  Karte zu konfigurieren.

  Es ist nicht ratsam, die Konfiguration der PCMCIA-Ethernetkarte in die
  Startskripte des Linux-Systems einzutragen, da es passieren kann, da
  die Karte noch nicht vorhanden ist, wenn Linux hochgefahren wird. Wenn
  das System eine automatische Prozedur zur Konfiguration des Netzwerks
  hat, so sollte hier angegeben werden, da keine Netzwerkkarte
  vorhanden ist. Stattdessen sollte die Datei /etc/pcmcia/network.opts
  den Bedrfnissen des Netzwerks angepat werden. Die Skripte network
  und network.opts werden nur ausgefhrt, wenn eine Ethernetkarte
  anwesend ist.

  Die Gerteadresse, die network.opts bergeben wird, besteht aus vier
  durch Kommata getrennte Felder: Schema, Slotnummer, Gerteinstanz und
  die Hardware-Ethernetadresse der Karte. Die Gerteinstanz wird
  verwendet, um die Gerte von Karten, die mehrere
  Netzwerkschnittstellen enthalten, durchzunumerieren. Sie wird daher
  meistens 0 sein. Wenn mehrere Netzwerkkarten fr verschiedene
  Verwendungen benutzt werden sollen, so besteht eine Mglichkeit darin,
  die Karten ber ihre verschiedenen Slotnummern zu konfigurieren wie
  z.B. hier:
       case "$ADDRESS" in
       *,0,*,*)
           # Definition der Netzwerkkarte in Slot 0
           ;;
       *,1,*,*)
           # Definition der Netzwerkkarte in Slot 1
           ;;
       esac




  Alternativ knnen diese Karten ber ihre Hardware-Adressen
  konfiguriert werden:



       case "$ADDRESS" in
       *,*,*,00:80:C8:76:00:B1)
           # Definition einer D-Link Karte
           ;;
       *,*,*,08:00:5A:44:80:01)
           # Definition einer IBM Karte
       esac




  Um automatisch NFS-Dateisysteme einzubinden oder zu entfernen, ist es
  sinnvoll, alle diese Dateisysteme als ersten Schritt in die Datei
  /etc/fstab einzutragen. Allerdings sollte im Optionsfeld der Eintrag
  noauto stehen. In der Datei network.opts mssen dann die
  Verzeichnisse, in die die NFS-Dateisysteme gemountet werden, in der
  Variablen MOUNTS aufgelistet werden. Es ist besonders wichtig,
  entweder cardctl oder cardinfo zu verwenden, um eine
  Netzwerkverbindung zu unterbrechen, wenn NFS-Dateisysteme auf diese
  Weise verwendet werden. Es ist nicht mglich, ein NFS-Dateisystem
  sauber abzubauen, wenn lediglich die Karte ohne Warnung herausgenommen
  wird.

  Zustzlich zur gewhnlichen Netzwerkkonfiguration kann das Skript
  network.opts zustzliche Funktionen ausfhren, wenn die Netzwerkkarte
  schon konfiguriert worden ist oder bevor die Netzwerkverbindung
  abgebaut werden kann. Wenn network.opts eine Shellfunktion start_fn
  definiert, so wird diese nach der Konfiguration der Karte aufgerufen.
  Dabei wird der Schnittstellenname als einziges Argument bergeben.
  Analog wird die Funktion stop_fn, wenn sie definiert ist, aufgerufen,
  bevor die Netzwerkkarte heruntergefahren wird.


  4.3.1.



  Auswahl des Transceivers

  Der Transceiver-Typ kann durch Verwendung der Variablen IF_PORT
  bestimmt werden. Dies kann entweder ein numerischer Wert sein, wie er
  in frheren PCMCIA-Versionen verwendet wurde, oder ein Schlsselwort,
  das den Transceiver-Typ bestimmt. Das voreingestellte Verhalten aller
  Netzwerktreiber ist es, den Typ automatisch zu erkennen, wenn dies
  mglich ist, oder 10baseT zu verwenden. Das Kommando ifport kann
  verwendet werden, um den aktuellen Typ zu kontrollieren oder zu
  ndern. Zum Beispiel:


       # ifport eth0 10base2
       # ifport eth0
       eth0    2 (10base2)




  Aktuelle Versionen des 3c589-Treibers versuchen, die
  Netzwerkverbindung automatisch zu entdecken. Allerdings scheint es so,
  als ob dies noch nicht einwandfrei funktioniert. Damit die
  automatische Erkennung luft, sollte das Netzwerkkabel an der Karte
  angeschlossen sein, wenn diese konfiguriert wird. Alternativ kann man
  nach Anschlu des Netzes den Treiber zwingen, die Verbindung noch
  einmal zu berprfen:



       # ifconfig eth0 down up





  4.3.2.

  Anmerkungen zu speziellen Karten


    Bei IBM CCAE und Socket EA Karten mu der Transceiver-Typ (10base2,
     10baseT oder AUI) nach Konfiguration der Netzwerkkarte festgelegt
     werden. In der Systemlog-Datei sollte danach der richtige
     Transceiver-Typ erscheinen. Dies sollte man berprfen.

    Die Treiber fr SMC-, Megahertz-, Ositech- und 3Com-Karten sollten
     den angeschlossen Netzwerktyp (10base2 oder 10baseT) automatisch
     erkennen. Das Setzen des Transceiver-Typs, wenn der Treiber geladen
     wird, hilft der Karte, den richtigen Typ zu erraten.

    Die Farallon EtherWave-Karte basiert auf einer 3Com 3c589 mit einem
     speziellen Transceiver. Obwohl die EtherWave die 10baseT-
     Verbindungen verwendet, verlangt der Transceiver, da der
     3c589-Treiber den 10base2-Modus verwendet.

    Wenn Probleme mit den Karten IBM CCAE, NE4100, Thomas Conrad oder
     Kingston bestehen, sollte man die Speicherzugriffszeit erhhen,
     indem man die Option mem_speed=\# beim Modul pcnet_cs verwendet.
     Ein Beispiel, wie dies zu machen ist, findet man in der
     Standarddatei config.opts. Man sollte Zeiten bis zu 1000
     Nanosekunden verwenden.

    Fr die New Media Ethernetkarte kann es bei einigen Systemen
     notwendig sein, die Zugriffszeit auf die I/O-Ports zu erhhen. Dies
     geschieht mit der Option io_speed=\#, wenn das Modul pcmcia_core
     geladen wird. Um diese Option zu setzen, mu die Variable CORE_OPTS
     im Startskript editiert werden.

    Die Multicastuntersttzung des New Media Ethernettreibers ist
     unvollstndig. Der neueste Treiber wird mit den Multicast-Kerneln
     funktionieren, aber smtliche Multicast-Pakete ignorieren. Der
     Promiscuous Modus sollte normal funktionieren.

    Der Treiber fr IBM und 3Com Token-Ring-Karten scheint sich sehr
     schlecht zu verhalten, wenn die Karten bei der Initialisierung
     nicht mit einem Ring verbunden sind. Diese Karten sollten immer mit
     dem Netz verbunden werden, bevor sie eingeschoben werden.

    Neuere Linksys- und D-Link-Karten haben einen einzigartigen Weg, um
     den Transceiver-Typ auszuwhlen. Bis David einige Informationen von
     Linksys erhlt, ist der einzig gangbare Umweg der, da zuerst DOS
     gestartet wird und die herstellertypischen Konfigurationsprogramme
     verwendet werden, um den Transceiver-Typ auszuwhlen. Danach sollte
     ein Warmstart zu Linux erfolgen.


  4.3.3.


  Untersuchung von Problemen mit Netzwerkkarten


    Wird die Karte als Ethernetkarte erkannt? berprfen Sie die
     Systemlog-Dateien, stellen Sie sicher, da cardmgr die Karte
     korrekt erkennt und die richtigen Netzwerktreiber startet.  Wenn
     dies nicht geschieht, kann es sein, da die Karte trotzdem
     verwendbar ist, wenn sie mit einer untersttzten Karte baugleich
     ist. Dieses ist am einfachsten, wenn die Karte, was hufig der Fall
     ist, kompatibel zur NE2000 ist.

    Ist die Karte korrekt konfiguriert? Wenn eine untersttzte Karte
     verwendet wird und diese von cardmgr erkannt wird, aber dennoch
     nicht funktioniert, so kann ein Interrupt- oder Port-Konflikt mit
     einem anderen Gert vorliegen. Dazu sollte man die Ressourcen, die
     die Karte verwendet, mit Hilfe der Systemlog-Datei herausfinden und
     versuchen, diese in der Datei /etc/pcmcia/config.opts
     auszuschlieen, um die Karte zu zwingen, andere zu verwenden.

    Wenn Meldungen wie network unreachable bei Zugriff auf das
     Netzwerk erscheinen, dann wurde wahrscheinlich die Datei
     /etc/pcmcia/network.opts falsch editiert. Auf der anderen Seite
     verursachen falsch konfigurierte Karten keine Meldungen.

    Bei der Analyse der Probleme in der Datei /etc/pcmcia/network.opts
     sollte man als erstes mit dem Kommando ping ausprobieren, ob andere
     Rechner im gleichen Subnetz unter Verwendung ihrer IP-Adresse
     erreichbar sind. Danach sollte man versuchen, das Gateway und zum
     Schlu Rechner innerhalb anderer Subnetze mittels ping zu
     erreichen. Die Verwendung von ping mit Computernamen sollte erst
     nach diesem simpleren Test erfolgen.

    Man sollte sicherstellen, da das Problem wirklich ein PCMCIA-
     Problem ist. Es kann hilfreich sein, zu kontrollieren, ob die Karte
     unter DOS mit den Treibern des Herstellers einwandfrei luft.  Man
     sollte die nderungen in dem Skript /etc/pcmcia/network.opts
     doppelt kontrollieren. Der Anschlu des Kabels, das T-Stck, die
     Abschluwiderstnde etc. sollten ebenfalls grndlich berprft
     werden.


  4.4.




  Serielle Schnittstellen und Modems

  Unter Linux wird auf serielle Schnittstellen ber die speziellen
  Dateien /dev/cua* und /dev/ttyS* zugegriffen. Die ttyS* Dateien werden
  fr eingehende Verbindungen (z.B. angeschlossenes Terminal) und die
  Dateien cua* fr ausgehende Verbindungen (z.B. Modem) verwendet. Jeder
  physische Anschlu hat sowohl eine ttyS* als auch eine cua*
  Gertedatei: Es hngt von einem selber ab, welche man verwendet.
  Jedoch ist ein Trend bei Linux zu erkennen, die cua* Devices nicht
  mehr zu benutzen. Debian GNU/Linux wird bereits ganz ohne die cua*
  Devices ausgeliefert. Die Konfiguration einer seriellen Schnittstelle
  kann mit dem Kommando setserial untersucht und verndert werden.

  Wird eine serielle oder Modem-PCMCIA-Karte entdeckt, so erhlt sie die
  erste freie Gerteadresse. Dies wird gewhnlich, abhngig von der Zahl
  der im Computer bereits eingebauten seriellen Schnittstellen,
  /dev/ttyS1 (cua1) oder /dev/ttyS2 (cua2) sein. Die ttyS* Gerte sind
  diejenigen, die in /var/run/stab angegeben sind. Das Standardskript
  fr serielle Gerte, /etc/pcmcia/serial.opts, wird das entsprechende
  cua* Gert auf die Datei /dev/modem linken.

  Man sollte nicht versuchen, das Systemstartskript fr serielle Gerte
  zur Konfiguration von PCMCIA-Modems zu verwenden. Dieses Skript sollte
  nur zur Konfiguration nicht-entfernbarer Gerte benutzt werden. Fr
  die spezielle Konfiguration eines Modems dient die Datei
  /etc/pcmcia/serial.opts. Auch sollte nicht das Kommando setserial
  verwendet werden, um die I/O-Adresse oder den Interrupt eines
  seriellen PCMCIA-Gertes zu verndern. Dies wrde den seriellen
  Treiber anweisen, das Gert an einer anderen Stelle zu suchen. Dies
  wrde aber nichts an der aktuellen Einstellung der PCMCIA-Karte
  ndern. Das serielle Konfigurationsskript erlaubt einem, sowohl
  setserial-Optionen anzugeben, als auch festzulegen, ob eine Zeile fr
  diese Schnittstelle in die Datei /etc/inittab eingefgt werden soll.

  Die Gerteadresse, die dem Skript serial.opts bergeben wird, besteht
  aus drei durch Kommata getrennte Felder: Das erste enthlt das Schema,
  das zweite die Slotnummer und das dritte die Gerteinstanz. Letztere
  kann fr Karten, die mehrere serielle Anschlsse untersttzen,
  verschiedene Werte annehmen. Fr Karten, die nur einen Anschlu haben,
  ist dieser Wert immer 0. Wenn gewhnlich mehrere PCMCIA-Modemkarten
  verwendet werden, knnen diese durch die Slotnummer unterschiedlich
  konfiguriert werden, wie z.B.:



       case "$ADDRESS" in
       *,0,*)
           # Optionen Modem in Slot 0
           LINK=/dev/modem0
           ;;
       *,1,*)
           # Optionen Modem in Slot 1
           LINK=/dev/modem1
           ;;
       esac




  Wenn ein PCMCIA-Modem bereits konfiguriert ist, wenn Linux gestartet
  wird, kann es passieren, da das Modem flschlicherweise als eine
  gewhnliche fest eingebaute serielle Schnittstelle identifiziert wird.
  Dies ist harmlos. Wenn der PCMCIA-Treiber Kontrolle ber das Modem
  bernimmt, wird diesem eine andere Gertedatei zugewiesen. Es ist
  daher gut, entweder die Datei /var/run/stab zu durchforsten oder
  /dev/modem zu verwenden, anstatt zu erwarten, da ein PCMCIA-Modem
  stets der gleichen Gertedatei zugeordnet wird.

  Wenn der Kernel konfiguriert wurde, die Grundtreiber fr die seriellen
  Gerte als ein Modul zu laden, so mu die Datei /etc/pcmcia/config
  editiert werden, damit diese Module geladen werden. ndern Sie in
  diesem Fall den seriellen Gerteeintrag auf diese Weise:



  device "serial_cs"
    class "serial" module "char/serial", "serial_cs"





  4.4.1.


  Analyse von Problemen mit seriellen Gerten



    Ist die Karte als ein Modem erkannt worden? Kontrollieren Sie die
     Systemlog-Dateien und stellen Sie sicher, da cardmgr die Karte
     korrekt erkennt und den serial_cs Treiber startet. Wenn dies nicht
     funktioniert, mu eventuell ein neuer Eintrag in der Datei
     /etc/pcmcia/config gemacht werden, so da die Karte richtig erkannt
     wird. Siehe Abschnitt ``PCMCIA Speicherkarten'' fr mehr Details.

    Wurde das Modem erfolgreich durch serial_cs konfiguriert? Erneut
     sollte die Systemlog-Datei untersucht werden. Sind Meldungen vom
     serial_cs Treiber vorhanden? Wenn Eintrge wie register_serial()
     failed erfolgt sind, kann es sein, da Konflikte in der I/O-Adresse
     mit anderen Gerten vorliegen. Ein anderer Hinweis auf ein Problem
     ist die Meldung, da die Karte eine 8250 sei. Die meisten modernen
     Modemkarten sollten als ein 16550A UART erkannt werden. Bei dem
     Verdacht auf einen Adressenkonflikt sollte die Datei
     /etc/pcmcia/config.opts editiert werden und der Adressenbereich,
     den das Modem belegt, ausgeschlossen werden.

    Besteht ein Interruptkonflikt? Wenn die Systemlog-Datei gut
     aussieht, aber das Modem trotzdem nicht zu funktionieren scheint,
     sollte man versuchen, ber das setserial Programm den Interrupt auf
     Null zu setzen und zu kontrollieren, ob das Modem so luft. Dies
     veranlat das Modem, den langsameren Polling-Modus anstelle des
     Interrupt-Modus zu verwenden. Wenn dies das Problem zu lsen
     scheint, ist es wahrscheinlich, da ein anderes Gert den gleichen
     Interrupt wie das PCMCIA-Gert verwendet.  In diesem Fall sollte
     eine Zeile in /etc/pcmcia/config.opts eingefgt werden, die diesen
     Interrupt ausschliet.

    Wenn es scheint, da das Modem wirklich sehr langsam luft, ist
     dies meist ein sicheres Kennzeichen fr einen Interruptkonflikt.

    Man sollte sicherstellen, da es sich wirklich um ein PCMCIA-
     Problem handelt. Es kann hilfreich sein, sich zu vergewissern, ob
     die Karte unter DOS mit den Herstellertreibern funktioniert. Ebenso
     sollte die Karte nicht gleich mit derart komplexen Dingen wie SLIP
     getestet werden, bis man sicher ist, da man einfache Verbindungen
     herstellen kann. Wenn einfache Verbindungen gelingen und SLIP
     fehlschlgt, so liegt das Problem wahrscheinlich bei SLIP und nicht
     bei PCMCIA.


  4.5.


  PCMCIA SCSI-Controller

  Alle derzeit untersttzten PCMCIA-Karten funktionieren genauso wie
  folgende ISA-Bus-Karten: Qlogic, Adaptec 152x oder Future Domain
  TMC-16x0. Die PCMCIA-Treiber werden durch Einbindung von einigem
  PCMCIA-spezifischen Programmcode (in qlogic_cs.c, toaster_cs.c oder
  fdomain_cs.c) aus den normalen Linux SCSI-Treibern gebildet.
  Wenn ein SCSI-Controller entdeckt wird, wird von dem SCSI-Treiber nach
  neuen SCSI-Gerten gesucht. Die Systemlog-Dateien sollten Auskunft
  darber geben, ob ein Gert ordentlich erkannt wird. Den neuen SCSI-
  Gerten werden die ersten verfgbaren SCSI-Devices zugewiesen.  Die
  erste SCSI-Festplatte wird /dev/sda, das erste Bandlaufwerk /dev/st0
  und das erste CD-ROM-Laufwerk wird /dev/scd0 sein.

  Mit Kernel 1.3.x und spteren Versionen sind die PCMCIA-Kerntreiber
  fhig, vom Kernel aus herauszufinden, welche SCSI-Gerte an der Karte
  angeschlossen sind. Diese werden in der Datei /var/run/stab
  aufgelistet und das SCSI-Konfigurationsskript, /etc/pcmcia/scsi, wird
  fr jedes angeschlossene Gert aufgerufen und zwar entweder um das
  Gert zu konfigurieren oder um es herunterzufahren. Das Standardskript
  unternimmt nichts, um SCSI-Gerte zu konfigurieren, aber gemountete
  Dateisysteme werden ordentlich aus dem Verzeichnisbaum entfernt, wenn
  die PCMCIA-Karte aus dem Rechner genommen wird.

  Mit Kernel 1.2.x knnen die PCMCIA-Treiber nicht automatisch erkennen,
  welches Gert an welchem SCSI-Controller angeschlossen ist. Wenn man
  eine normale SCSI-Gertekonfiguration hat, so kann man diese Gerte in
  der Datei /etc/pcmcia/scsi.opts auflisten. Zum Beispiel, wenn man
  normalerweise nur eine Festplatte und ein CD-ROM-Laufwerk verwendet,
  wrde man folgendes verwenden:



       # Kernel 1.2.x: Liste der angeschlossenen Komponenten
       SCSI_DEVICE="sda scd0"




  Die Gerteadressen, die dem Skript scsi.opts bergeben werden, sind
  kompliziert, da eine groe Zahl verschiedenartiger Gerte an einen
  SCSI-Controller angeschlossen werden kann. Die Adressen bestehen
  entweder aus sechs oder sieben durch Kommata getrennte Felder: Das
  aktuelle Schema, der Gertetyp, die Slotnummer, der SCSI-Kanal, die
  ID, die logische Einheitennummer (LUN) und eventuell die
  Partitionsnummer. Der Gertetyp wird sd fr Festplatten, st fr
  Bandlaufwerke, sr fr CD-ROM-Laufwerke und sg fr generische SCSI-
  Gerte sein. Bei den meisten Einstellungen wird der SCSI-Kanal und die
  Einheitennummer 0 sein. Fr Festplatten mit verschiedenen Partitionen
  wird scsi.opts erst fr das gesamte Gert mit einer fnf Felder
  enthaltenden Adresse aufgerufen. Das Skript sollte dann die Variable
  PARTS als eine Liste anlegen, die die Partitionen enthlt. Danach wird
  scsi.opts mit einer sieben Felder enthaltenden Adresse fr jede
  Partition aufgerufen. Hier ist zum Beispiel ein Skript zur
  Konfiguration einer Festplatte an SCSI ID 3 mit zwei Partitionen und
  einem CD-ROM-Laufwerk an SCSI ID 6:

















  case "$ADDRESS" in
  *,sd,*,0,3,0)
      # diese Festplatte hat zwei Partitionen
      PARTS="1 2"
      ;;
  *,sd,*,0,3,0,1)
      # Optionen Partition 1:
      # aktualisiere /etc/fstab und mounte ein ext2 fs
      # auf /usr1
      DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
      FSTYPE="ext2"
      OPTS=""
      MOUNTPT="/usr1"
      ;;
  *,sd,*,0,3,0,2)
      # Optionen Partition 2:
      # aktualisiere /etc/fstab und mounte ein MS-DOS fs
      # auf /usr2
      DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
      FSTYPE="msdos"
      OPTS=""
      MOUNTPT="/usr2"
      ;;
  *,sr,*,0,6,0)
      # Optionen CD-ROM an SCSI ID 6
      PARTS=""
      DO_FSTAB="y" ; DO_FSCK="n" ; DO_MOUNT="y"
      FSTYPE="iso9660"
      OPTS="ro"
      MOUNTPT="/cdrom"
      ;;
  esac




  Wenn der Kernel keine Grundtreiber fr besondere SCSI-Gerte wie
  Festplatten, Bandlaufwerke, etc. enthlt, dann wird das Gert nicht
  vom PCMCIA-Treiber konfiguriert. Als ein Nebeneffekt wird der
  Gertename in var/run/stab etwas wie sd\#nnnn sein, wobei nnnn eine
  vierstellige Hexadezimalzahl ist. Dies passiert, wenn cardmgr nicht in
  der Lage ist, die SCSI-ID-Nummer in einen entsprechenden Linux-
  Gertenamen zu bersetzen.

  Es ist mglich, die SCSI-Grundtreiber fr den Kernel zu
  modularisieren, so da diese nur geladen werden, wenn ein PCMCIA-SCSI-
  Controller entdeckt wird. Um dies zu erreichen, mu die Datei
  /etc/pcmcia/config editiert werden, damit cardmgr wei, welche
  zustzlichen Module geladen werden mssen, um den Controller zu
  konfigurieren. Zum Beispiel



       device "aha152x_cs"
         class "scsi" module "scsi/scsi_mod", "scsi/sd_mod",
           "aha152x_cs"




  wrde das SCSI-Kernmodul und die Grundmodule fr SCSI-Festplatten vor
  dem regulren PCMCIA-Treiber laden. Das PCMCIA-Konfigurationsskript
  wird nicht automatisch modularisierte SCSI-Module entdecken, so da
  die SCSI-Untersttzung manuell in die Konfigurationsskripte
  eingetragen werden mu.

  SCSI-Gerte sollten immer als erstes, vor dem Notebook oder dem
  Einfhren der Karte, eingeschaltet werden, so da der SCSI-Bus
  ordentlich terminiert ist, wenn der Controller konfiguriert wird. Man
  sollte auch uerst vorsichtig sein, bevor man eine SCSI-
  Controllerkarte entfernt. In diesem Fall sollte man sicher sein, da
  alle angeschlossenen SCSI-Gerte ordnungsgem heruntergefahren
  wurden. Der sicherste Weg dies zu erreichen ist es, entweder cardctl
  oder cardinfo zu verwenden und eine Kartenentfernung anzufordern,
  bevor man die Karte physisch entfernt. Bis jetzt mssen alle SCSI-
  Gerte eingeschaltet sein, bevor der SCSI-Controller eingefhrt wird
  und sollten solange angeschlossen bleiben, bis der Controller wieder
  entfernt wird oder das Notebook ausgeschaltet wird.

  Es besteht die Mglichkeit von Komplikationen bei Karten, die bei
  normalen ISA-Bus-Controllern nicht bestehen. Der SCSI-Bus enthlt eine
  Termination Power Leitung, welche fr den ordentlichen Betrieb von
  passiven SCSI Terminatoren notwendig ist.  PCMCIA-SCSI-Controller
  speisen diese Leitung nicht. Falls die Leitung bentigt wird, mu sie
  von einem anderen SCSI-Gerte gespeist werden.  Einige externe SCSI-
  Gerte knnen so konfiguriert werden, da sie diese Leitung speisen.
  Andere, wie z.B. das ZIP-Laufwerk oder das Syquest EZ-Laufwerk
  verwenden aktive Terminierungen und bentigen diese Leitung daher
  nicht. In einigen Fllen kann es notwendig sein, einen speziellen
  externen Termininator wie den APS SCSI Sentry 2 zu verwenden, der ber
  ein eigenes Netzteil verfgt.

  Der Adaptec APA-460 SlimSCSI-Controller wird nicht untersttzt. Diese
  Karte wurde ursprnglich unter dem Namen Trantor verkauft. Nach der
  bernahme von Trantec durch Adaptec wurde dieser Controller als Teil
  der Adaptec-Produktserie verkauft. Der APA-460 ist mit keinem
  existierenden Linuxtreiber kompatibel. David ist sich nicht sicher,
  wie schwer es sein wird, einen Treiber fr diesen Controller zu
  schreiben. Er vermutet, da niemand die dazu notwendigen technischen
  Informationen von Adaptec erhalten wird.

  Der nicht untersttzte Trantor SlimSCSI-Controller kann auf folgende
  Weise erkannt werden:



       Trantor / Adaptec APA-460 SlimSCSI
       FCC ID: IE8T460
       Shipped with SCSIworks! driver software




  Der nicht untersttzte Adaptec SlimSCSI-Controller kann auf folgende
  Weise erkannt werden:



       Adaptec APA-1460 SlimSCSI
       FCC ID: FGT1460
       P/N: 900100
       Shipped with EZ-SCSI driver software





  4.5.1.

  Untersuchung von Problemen mit SCSI-Controllern


    Bei dem aha152x_cs Treiber, dieser wird von Adaptec, New Media und
     ein paar anderen verwendet, scheint die Untersttzung von
     Disconnect/Reconnect eine hufige Fehlerquelle bei Bandlaufwerken
     zu sein. Um diese Eigenschaft abzuschalten, mu folgendes in der
     Datei /etc/pcmcia/config.opts hinzugefgt werden:


       module "aha152x_cs" opts "reconnect=0"





  4.6.

  PCMCIA Speicherkarten

  Das Standardstartskript fr Speicherkarten erzeugt Block- und
  zeichenorientierte Gerte fr den Zugriff auf alle Bereiche der
  Speicherkarte. Es gibt zwei Treiber fr Speicherkarten. Einen lteren
  Treiber pcmem_cs, der gut mit einfachen statischen RAM-Karten
  zusammenarbeitet, und einen neueren Treiber memory_cs, der meistens
  fr den direkten Zugriff auf Flashkarten verwendet wird. Fr eine
  genauere Beschreibung der Gertenamen sollte man die Manual Pages
  befragen.  Beide, sowohl Block- als auch zeichenorientierte
  Gertedateien, werden erzeugt. Die Blockgerte werden fr einen
  Festplattenhnlichen Zugriff verwendet (Erzeugung und Mounten von
  Dateisystemen etc.). Die zeichorientierten Gertedateien werden fr
  rohe (raw), nichtgepufferte Lese- und Schreiboperationen an beliebigen
  Stellen verwendet.

  Bei den FTL und dem neuen Speichertreibern besteht die Gerteadresse,
  die an die Skripte ftl.opts und memory.opts weitergegeben wird, aus
  zwei Feldern, der Slotnummer und der Partitionsnummer. Gewhnliche
  Speicherpartitionen werden vor Attributspeicherpartitionen numeriert.
  Allgemein ist die interessanteste Partition die mit der Nummer 0.
  Dieses ist die Hauptpartition, auf der die Daten gespeichert werden.
  Hier ist ein Beispiel eines Skriptes, das automatisch, abhngig vom
  verwendeten Slot, eine Flashspeicherkarte in das System integriert:



       case "$ADDRESS" in
       *,0,0)
           # Integriere Dateisystem, aber aktualisiere nicht
           # /etc/fstab
           DO_FSTAB="n" ; DO_FSCK="y" ; DO_MOUNT="y"
           FSTYPE="ext2" ; OPTS=""
           MOUNTPT="/ftl0"
           ;;
       *,1,0)
           # Integriere Dateisystem, aber aktualisiere nicht
           # /etc/fstab
           DO_FSTAB="n" ; DO_FSCK="y" ; DO_MOUNT="y"
           FSTYPE="ext2" ; OPTS=""
           MOUNTPT="/ftl1"
           ;;
       esac








  4.6.1.  Einfache Speicherkarten

  Einige ltere Speicherkarten und die meisten einfachen statischen RAM-
  Karten besitzen keine Card Information Structure (CIS), welche das
  Schema ist, das PCMCIA-Karten verwenden, um sich selbst zu
  identifizieren. Normalerweise wird cardmgr annehmen, da Karten, die
  keine CIS aufweisen, einfache Speicherkarten sind und wird den
  pcmem_cs Treiber laden. Auf diese Weise erhlt man den Nebeneffekt,
  da andere unerkannte Karten flschlicherweise als Speicherkarten
  erkannt werden.

  Der pcmem_cs Treiber erzeugt drei logische Gertedateien fr eine
  Karte: pcmem?a ist eine Zeichengertedatei zum Zugriff auf
  Attributspeicher, pcmem?b ist eine Blockgertedatei und pcmem?c ist
  eine Zeichengertedatei. Da alle PCMCIA-Karten eine
  Speicherschnittstelle neben allen anderen Funktionen bentigen, kann
  der pcmem_cs Treiber mit allen Karten verwendet werden, um direkten
  Zugriff auf den Attribut- und allgemeinen Speicherraum zu erhalten.

  Der pcmem_cs Treiber verwendet ein Verfahren, um die Kapazitt einer
  Karte zu raten. Dieses Verfahren schlgt bei schreibgeschtzten Karten
  fehl und kann in einigen anderen Fllen zu Fehlern fhren. Wenn eine
  Karte falsch erkannt wurde, sollte ihre Gre explizit angegeben
  werden, wenn man Kommandos wie dd oder mkfs verwendet.


  4.6.2.




  Verwendung von Flashspeicherkarten

  Um eine Flashspeicherkarte wie ein gewhnliches festplattenhnliches
  Blockgert zu verwenden, mu als erstes eine Flash Translation Layer
  Partition auf diesem Gert mit dem Kommando ftl_format erstellt
  werden:



       ftl_format -i /dev/mem0c0c




  Man beachte, da dieses Kommando auf die Karte ber die rohe
  Speicherkartenschnittstelle zugreift. Einmal formatiert, kann die
  Karte wie ein normales Blockgert ber den ftl_cs Treiber verwendet
  werden:



       mke2fs /dev/ftl0
       mount -t ext2 /dev/ftl0 /mnt




  Es gibt zwei wesentliche Formate fr Blitzspeicherkarten: Das Flash
  Translation Layer und das Microsoft Flash File System. Das FTL-Format
  is generell flexibler, weil es erlaubt, irgendein gewhnliches,
  anspruchsvolles Dateisystem wie ext2 oder MS-DOS FAT auf dieser Karte
  zu verwenden, genauso als ob es eine normale Festplatte wre. Das FFS
  ist ein komplett neuer Typ von Dateisystem. Linux kann zur Zeit keine
  Karten handhaben, die mit diesem Dateityp formatiert sind.

  4.7.



  PCMCIA ATA-/IDE-Karten

  Die Untersttzung von ATA-/IDE-Treibern verlangt einen Kernel der
  Verison 1.3.72 oder hher. Der PCMCIA spezifische Teil des Treibers
  ist fixed_cs. Man sollte sicherstellen, da cardctl oder cardinfo
  verwendet werden, um ATA-/IDE-Karten herunterzufahren, bevor sie
  entnommen werden.

  Die Gerteadressen, die an fixed.opts weitergeleitet werden, bestehen
  aus drei oder vier Feldern: Das aktuelle Schema, die Slotnummer, die
  Seriennummer des Laufwerks und ebentuell die Partitionsnummer. So wie
  bei SCSI-Gerten wird fixed.opts zuerst fr das gesamte Gert
  aufgerufen.  Wenn fixed.opts eine Liste von Partitionen in der
  Variablen PARTS enthlt, wird das Skript noch einmal fr jede
  Partition aufgerufen.

  Hier ist eine Beispieldatei fixed.opts, die die erste Partition einer
  ATA-/IDE-Karte auf /mnt abbildet:



       case "$ADDRESS" in
       *,*,*)
           PARTS="1"
           ;;
       *,*,*,1)
           DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
           FSTYPE="msdos"
           OPTS=""
           MOUNTPT="/mnt"
           ;;
       esac




  Beachten Sie, da die vorgegebene Datei fixed.opts diese Zeilen in
  auskommentierter Form enthlt. Wenn es gewnscht wird, knnen ver
  schiedene Konfigurationen, basierend auf den Seriennummern der Karten,
  verwendet werden. Um die Seriennummer einer Karte herauszufinden, kann
  das Kommando ide_info verwendet werden. Danach kann ein Teil von
  fixed.info wie folgt aussehen:



       case "$ADDRESS" in
       *,*,Z4J60542)
           # Dies ist eine DOS Platte
           PARTS="1"
           ;;
       *,*,Z4J60542,1)
           DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y"
           FSTYPE="msdos"
           OPTS=""
           MOUNTPT="/mnt"
           ;;
       esac





  4.8.

  Multifunktionskarten

  Beginnend mit dem Linux-Kernel 1.3.73 kann ein einzelner Interrupt mit
  mehreren verschiedenen Treibern, wie z.B. dem seriellen Treiber und
  einem Ethernettreiber, geteilt werden. Wenn eine Multifunktionskarte
  unter einem neueren Kernel verwendet wird, knnen alle Funktionen ohne
  ein Ein- und Ausladen von Treibern verwendet werden.

  Simultaner Gebrauch von zwei Kartenfunktionen ist trickreich, und
  verschiedene Hardwarehersteller haben das Teilen von Interrupts auf
  ihre eigene, nicht kompatible Weise verwirklicht. Die Treiber fr
  einige Karten (Ositech Jack of Diamonds , 3Com 3c562, Linksys)
  untersttzen den gleichzeitigen Zugriff ordentlich, whrend andere
  (besonders Megahertz) dies nicht tun.

  Frhere Kernelversionen untersttzen das Teilen von Interrupts nicht,
  so da es fr PCMCIA-Treiber nicht mglich ist, gleichzeitig auf eine
  Ethernetkarte und ein Modem zuzugreifen. Die Treiber fr das Ethernet
  und die serielle Schnittstelle werden automatisch geladen. Wie dem
  auch sei, der Treiber fr das Ethernet besitzt per Voreinstellung den
  Interrupt der Karte. Um das Modem zu verwenden, mu der
  Ethernettreiber ausgeladen werden und der serielle neu konfiguriert
  werden wie z.B. hier:



       ifconfig eth0 down
       rmmod 3c589_cs
       setserial /dev/modem autoconfig auto_irq
       setserial /dev/modem




  Das zweite setserial Aufruf soll berprfen, ob der Treiber fr das
  Modem jetzt den Interrupt verwendet, der vorher von dem
  Ethernettreiber verwendet worden ist.


  4.9.  entfernen?  Wann ist es sicher, eine PCMCIA-Karte einzufhren
  oder zu

  Theoretisch kann eine PCMCIA-Karte jederzeit eingefhrt oder entfernt
  werden. Es ist jedoch eine gute Idee, eine Karte, die gerade von einem
  Programm in Gebrauch ist, nicht zu entfernen. Kernel die lter sind
  als Version 1.1.77 bleiben oft hngen, wenn eine serielle
  Schnittstellenkarte bzw. Modemkarte entfernt wird. Doch dies sollte
  mittlerweile behoben sein.


  4.10.



  Card Services und Advanced Power Management

  Card Services kann mit Untersttzung von APM kompiliert werden, wenn
  das Paket auf dem System installiert wurde. APM ist Bestandteil von
  Kernel 1.3.46 und neuer. Es wird derzeit von Rick Faith
  (faith@cs.unc.edu) betreut. APM-Werkzeuge knnen via FTP von

       ftp.cs.unc.edu:/pub/users/faith/linux


  bezogen werden. Die PCMCIA-Module werden automatisch fr APM konfig
  uriert, falls eine kompatible Version auf dem System erkannt wird.

  Ohne auf APM zurckzugreifen, kann der Befehl cardctl suspend vor dem
  Anhalten des Notebooks und der Befehl cardctl resume nach dem erneuten
  Anfahren des Notebooks verwendet werden, um die PCMCIA-Karten
  herunter- und wieder hochzufahren. Dies funktioniert nicht mit einem
  PCMCIA-Modem zusammen, das in Betrieb ist, da der serielle Treiber
  nicht in der Lage ist, die Arbeitsparameter des Modems zu sichern und
  wiederherzustellen.

  APM scheint auf einigen System instabil zu sein. Wenn solche
  Beobachtungen im Zusammenhang mit APM und PCMCIA gemacht werden,
  sollte versucht werden, den Fehler auf eines dieser beiden Pakete
  einzuschrnken, bevor ein Fehlerreport erstellt wird.

  Einige Treiber, ganz besonders PCMCIA-SCSI-Treiber, knnen aus einem
  Anhalte- und Wiederanfahrzyklus nicht zurckkehren. Wenn eine PCMCIA-
  SCSI-Karte verwendet wird, sollte daher das Kommando cardctl eject vor
  einem Anhalten des Systems ausgefhrt werden.


  4.11.  Wie wird eine PCMCIA-Karte abgeschaltet, ohne sie zu entnehmen?

  Dazu kann entweder das Kommando cardctl oder cardinfo verwendet
  werden. cardctl suspend \# wird einen Slot anhalten und
  herunterfahren. Das entsprechende resume Kommando wird die Karte
  wieder in den ursprnglichen Zustand zurckversetzen.


  4.12.  Wie wird ein PCMCIA-Treiber entfernt?

  Um das vollstndige PCMCIA-Paket zu entfernen, mu das Skript
  rc.pcmcia folgendermaen aufgerufen werden:



       /etc/pcmcia/rc.pcmcia stop




  Dieses Skript bentigt mehrere Sekunden, um zu laufen, da jedem
  Treiber Zeit gelassen wird, sanft herunterzufahren. Wenn ein PCMCIA-
  Gert gerade in Benutzung ist, wird das Herunterfahren unvollstndig
  sein und einige Module knnen im Kernel verbleiben. Um dieses zu
  vermeiden, sollten mit

       cardctl eject


  alle Slots heruntergefahren werden, bevor rc.pcmcia aufgerufen wird.
  Der Endestatus des cardctl Kommandos zeigt an, ob irgendein Slot nicht
  heruntergefahren werden konnte.


  5.  Anspruchsvollere Themen


  5.1.


  Bereitstellung der bentigten Ressourcen fr PCMCIA-Gerte

  Theoretisch sollte es egal sein, welcher Interrupt von welchem Gert
  verwendet wird, solange nicht zwei Gerte so konfiguriert sind, da
  sie den gleichen verwenden. In der Datei /etc/pcmcia/config.opts
  knnen bestimmte Interrupts, die bei nicht-PCMCIA-Gerten Verwendung
  finden, ausgeschlossen werden.

  Es ist nicht mglich, eine PCMCIA-Karte anzuweisen, eine bestimmte
  I/O-Adresse zu verwenden. Vielmehr erlaubt die Datei
  /etc/pcmcia/config.opts einem, einen Bereich von verfgbaren Adressen
  fr den Gebrauch durch PCMCIA-Gerte anzugeben oder einen Bereich vom
  Gebrauch auszuschlieen.

  Nach der Modifizierung der Datei /etc/pcmcia/config.opts kann cardmgr
  mit dem Befehl

       kill -HUP

  neu gestartet werden.

  Der Interrrupt, der verwendet wird, um den Kartenstatus zu berwachen,
  wird von dem Grundmodul (i82365 oder tcic) ausgewhlt, bevor cardmgr
  die Datei /etc/pcmcia/config durchforstet, so da diese Einstellungen
  durch diese Datei nicht beeinflut werden.  Um diesen Interrupt zu
  setzen, mu die cs_irq= Option verwendet werden, wenn der Slottreiber
  geladen wird. Dies wird durch Setzen der Variable PCIC_OPTS= im
  Startskript rc.pcmcia erreicht.

  Alle darauf aufbauenden Kartentreiber haben einen Parameter, der
  irq_mask= genannt wird und mit dem die Interrupts festgelegt werden,
  die von dem Treiber verwendet werden knnen. Jedes Bit von irq_mask
  entspricht einem Interrupt: Bit 0 ist IRQ0, Bit 1 IRQ1 und so weiter.
  Eine Maske von 0x1200 wrde den Interrupts 9 und 12 entsprechen. Um
  einen Treiber derart einzuschrnken, da dieser nur einen Interrupt
  verwendet, darf lediglich ein Bit gesetzt werden. Diese
  Treiberoptionen sollten in der Datei /etc/pcmcia/config angegeben
  werden. Zum Beispiel


       device "serial_cs"
         module "serial_cs" opts "irq_mask=0x1100"
         ...




  wrde bedeuten, da nur die Interrupts 8 und 12 verwendet werden
  drfen. Unabhngig von der Einstellung der Variablen irq_mask wird
  Card Services niemals einen Interrupt verwenden, der bereits von einem
  anderen Gert benutzt oder durch die Datei config ausgeschlossen wird.


  5.2.  zu Hause und frs Bro verwendet werden?

  Wie knnen verschiedene Gerteeinstellungen fr

  Dies ist wirklich eine einfache Anwendung der Untersttzung von
  PCMCIA-Schemata. Dazu verwendet man am besten zwei
  Konfigurationsschemata, genannt Arbeit und Heim. Hier ist ein Beispiel
  eines network.opts Skriptes mit schemaspezifischen Einstellungen:









  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-Gerteadresse ist immer das
  Konfigurationsschema. In diesem Beispiel wird der zweite Fall sowohl
  fr das Heim, als auch fr das default Schema verwendet. Wenn also das
  Schema aus irgendeinem Grund nicht gesetzt ist, wird automatisch das
  Heim Schema verwendet.

  Um jetzt zwischen diesen beiden Stzen von Einstellungen zu whlen,
  kann man eines dieser Kommandos starten:




       cardctl scheme home




  oder



       cardctl scheme work




  Das Kommando cardctl fhrt alle Karten herunter und startet diese neu.
  Dieses Kommando kann sicher verwendet werden, unabhngig davon, ob das
  PCMCIA-System geladen ist. Es kann aber fehlschlagen, wenn zur
  gleichen Zeit andere Gerte verwendet werden. Dies ist unabhngig
  davon, ob diese Gerte von der Einstellung des aktuellen Schemas
  abhngen oder nicht.

  Um das gerade eingestellte Schema herauszufinden, kann dieses Kommando
  verwendet werden:



       cardctl scheme





  5.3.



  Booten von einem PCMCIA-Gert

  Das Root-Dateisystem auf einem PCMCIA-Gert zu haben, ist trickreich,
  da das PCMCIA-System von Linux nicht dazu gedacht ist, in den Kernel
  fest eingebunden zu werden. Die Kernkomponenten, die ladbaren
  Kernelmodule und der cardmgr Daemon hngen von einem bereits laufenden
  System ab. Die initrd Mglichkeit des Kernels umgeht diese
  Voraussetzungen dadurch, da Linux erlaubt wird, vorbergehend ein
  RAM-Laufwerk als minimales Root-Dateisystem zu verwenden, die Treiber
  zu laden und dann ein anderes Root-Dateisystem an dessen Stelle zu
  mounten. Das temporre Root-Dateisystem kann dazu verwendet werden,
  PCMCIA zu konfigurieren und dann ein PCMCIA-Gert als Root-Dateisystem
  einzurichten.

  Einige Linuxdistributionen erlauben eine direkte Installation auf
  Gerten, die direkt an einem PCMCIA-SCSI-Controller hngen, als
  unbeabsichtigten Nebeneffekt der Untersttzung der Installation von
  einem PCMCIA-SCSI-CD-ROM-Laufwerk. Kein Installationsprogramm
  untersttzt die Konfiguration von initrd, um Linux mit einem PCMCIA-
  Root-Dateisystem zu booten. Um so ein System einzurichten, bentigt
  man ein anderes Linuxsystem, um ein initrd Startprogramm zu erzeugen.
  Wenn ein anderes Linuxsystem nicht vergbar ist, kann eine andere
  Option die temporre Installation eines minimalen Linuxsystems auf
  einem Nicht-PCMCIA-Laufwerk, die Erzeugung eines initrd Startprogramms
  und dann die Neuinstallation auf einem PCMCIA-Laufwerk sein.

  Das Linux Bootdisk HOWTO enthlt einige generelle Hinweise zur
  Erstellung von Bootdisketten aber nichts spezielles zu initrd. Die
  Hauptdokumentation zu initrd ist im Quellcode aktueller
  Kernelversionen in der Datei linux/Documentation/initrd.txt enthalten.
  Bevor man anfngt, sollte man diese Dokumentation lesen. Eine
  Vertrautheit mit LILO ist ebenfalls hilfreich. Die Verwendung von
  initrd erfordert, da der Kernel mit den aktivierten Optionen
  CONFIG_BLK_DEV_RAM und CONFIG_BLK_DEV_INITRD bersetzt wurde.


  5.3.1.


  Das Hilfsskript pcinitrd

  Das Skript pcinitrd erzeugt ein initrd Grundstartprogramm zum Booten
  mit einem PCMCIA-Root-Dateisystem.  Dies enthlt eine minimale
  Verzeichnishierarchie, ein paar Gertedateien, einige ausfhrbare
  Programme, Bibliotheken und einen Satz von PCMCIA-Treibermodulen. Wenn
  pcinitrd aufgerufen wird, mssen die Treibermodule angegeben werden,
  die verwendet werden sollen. Die Kern-PCMCIA-Komponenten, pcmcia_core
  und ds, sind automatisch enthalten.

  Als ein Beispiel fr den Fall, da das Notebook einen
  i82365-kompatiblen PCMCIA-Controller besitzt und Linux mit dem Root-
  Dateisystem auf einer Festplatte installiert werden soll, die an einem
  Adaptec SlimSCSI Controller angeschlossen ist, wrde man folgenden
  Befehl verwenden:



       pcinitrd -v initrd pcmcia/i82365.o pcmcia/aha152x_cs.o




  Um die Startsequenz von initrd anzupassen, kann das Dateisystem
  mittels des loopback Gertes eingefgt werden:



       mount -o loop -t ext2 initrd /mnt


  Danach sollte das Skript linuxrc editiert werden. Die PCMCIA-
  Konfigurationsdateien werden hierauf im Verzeichnis /etc installiert
  und knnen ebenfalls angepat werden. Dazu sollte die Manual Page von
  pcinitrd fr weitere Informationen gelesen werden.


  5.3.2.  Erstellen einer initrd Bootdiskette

  Nach der Erstellung durch pcinitrd kann durch Kopieren des Kernels,
  des gepackten initrd Startprogramms und einiger Hilfsdateien fr LILO
  auf eine leere Diskette eine Bootdiskette erstellt werden. Im
  folgenden Beispiel nehmen wir an, da das bentigte PCMCIA-Root-
  Dateisystem auf /dev/sda1 liegen soll:



       mke2fs /dev/fd0
       mount /dev/fd0 /mnt
       mkdir /mnt/etc /mnt/boot /mnt/dev
       cp -a /dev/fd0 /dev/sda1 /mnt/dev
       cp [kernel-image] /mnt/vmlinuz
       gzip < [initrd-image] > /mnt/initrd




  Erzeuge dann /mnt/etc/lilo.conf mit diesem Inhalt:



       boot=/dev/fd0
       compact
       image=/vmlinuz
           label=linux
           initrd=/initrd
           read-only
           root=/dev/sda1




  Zum Schlu mu lilo aufgerufen werden:



       /sbin/lilo -r /mnt




  Wenn lilo mit der Option -r aufgerufen wird, so wird es alle Aktionen
  relativ zu dem alternativ angegebenen Root-Dateisystem durchfhren.
  Der Grund fr das Erzeugen der Dateien unter /mnt/dev ist der, da
  lilo nicht in der Lage ist, die Dateien in /dev zu verwenden, wenn es
  in diesem alternativen root Modus luft.


  5.3.3.  Nicht-Linux-Laufwerk Installierung eines initrd Startprogramms
  auf einem

  Eine hufige Verwendung der initrd Mglichkeit ist der Gebrauch auf
  Systemen, wo die eingebaute Festplatte einem anderen Betriebssystem
  gewidmet ist. Der Linux-Kernel und das initrd Startprogramm knnen auf
  einer Nicht-Linux-Partition untergebracht werden und LILO oder LOADLIN
  knnen so konfiguriert werden, da sie Linux von dort starten knnen.

  Ausgehend von der Annahme, da der Kernel fr das entsprechende Root-
  Laufwerk konfiguriert wurde und das initrd Startprogramm auf einem
  anderen System erstellt wurde, ist der einfachste Weg, Linux mit
  LOADLIN zu starten:



       LOADLIN <kernel> initrd=<initrd-image>




  Wenn Linux erst einmal auf der Zielmaschine gestartet wurde, dann kann
  LILO installiert werden, um Linux direkt zu starten.  Als Beispiel sei
  /dev/hda1 die Nicht-Linux-Zielpartition und /mnt ein freies
  Verzeichnis zum Mounten der Partition.  Als erstes mu ein
  Unterverzeichnis fr Linux auf dieser Partition geschaffen werden:



       mount /dev/hda1 /mnt
       mkdir /mnt/linux
       cp [kernel-image] /mnt/linux/vmlinuz
       cp [initrd-image] /mnt/linux/initrd




  Wenn in diesem Beispiel /dev/sda1, ein SCSI-Laufwerk, auf welches ber
  einen PCMCIA-Controller zugegriffen wird, die Root-Partition von Linux
  enthalten soll, so mu zur Installation von LILO eine Datei lilo.conf
  mit folgendem Inhalt erstellt werden:



       boot=/dev/hda
       map=/mnt/linux/map
       compact
       image=/mnt/linux/vmlinuz
               label=linux
               root=/dev/sda1
               initrd=/mnt/linux/initrd
               read-only
       other=/dev/hda1
               table=/dev/hda
               label=windows




  Die boot= Zeile besagt, da LILO im Master Boot Record (MBR) des
  angegebenen Gertes installiert werden soll. Die root= Zeile
  kennzeichnet das gewnschte Root-Dateisystem, welches spter fr den
  Gebrauch des initrd Startprogramms verwendet werden soll, und kann
  berflssig sein, wenn der Kernel schon entsprechend konfiguriert
  worden ist. Der other= Abschnitt beschreibt das andere Betriebssystem,
  das auf /dev/hda1 liegt.

  Um LILO in diesem Fall zu installieren, sollte dies verwendet werden:



       lilo -C lilo.conf



  Beachten Sie, da in diesem Fall die Datei lilo.conf absolute
  Pfadnamen verwendet, die /mnt enthalten. David tat dies in diesem
  Beispiel, da das Zieldateisystem eventuell die Einrichtung von Linux
  Gertedateien fr die boot= und root= Optionen nicht untersttzt.


  6.  Handhabung von Karten, die nicht untersttzt werden


  6.1.

  Konfiguration nichterkannter Karten

  Angenommen, da die Karte von einem bestehenden Treiber untersttzt
  wird, so ist alles, was getan werden mu, ein Eintrag in die Datei
  /etc/pcmcia/config, um cardmgr mitzuteilen, wie die Karte
  identifiziert und welche Treiber fr diese Karte geladen werden
  mssen. Die Manual Page von pcmcia gibt Auskunft ber das richtige
  Format fr diese Konfigurationsdatei. Wenn eine unbekannte Karte
  eingefhrt wird, so notiert cardmgr normalerweise
  Identifikationsinformationen in den Systemlog-Dateien, die dazu
  verwendet werden knnen, einen config Eintrag zu erstellen.

  Hier ist ein Beispiel, wie cardmgr eine nichtuntersttzte Karte in den
  Systemlog-Dateien eintragen wird:



       cardmgr[460]: unsupported card in socket 1
       cardmgr[460]: version info: "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"




  Der entsprechende Eintrag in der Datei /etc/pcmcia/config wrde in
  diesem Fall so aussehen:



       card "Megahertz XJ2288 V.34 Fax Modem"
         version "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
         bind "serial_cs"




  Es kann das Zeichen * verwendet werden, um Zeichenketten anzugeben,
  die nicht exakt bereinstimmen mssen, so wie z.B.  Versionsnummern.
  Wenn Eintrge gemacht werden, sollte darauf geachtet werden, da die
  Zeichenketten exakt kopiert werden, also die Leerzeichen und die Gro-
  und Kleinschreibung beibehalten werden. Man sollte ebenfalls sicher
  sein, da der Eintrag in config dieselbe Anzahl an Zeichenketten
  enthlt, wie sie in der Log-Datei stehen.

  Nach dem Editieren der Datei /etc/pcmcia/config kann cardmgr ein
  Signal gesendet werden, damit die Datei neu geladen wird:



       kill -HUP `cat /var/run/stab`




  Wenn ein neuer Eintrag in die config-Datei gemacht wurde, so sollte
  man David eine Kopie davon zuschicken, damit dieser Eintrag in die
  Standardkonfiugartionsdatei eingefgt werden kann.


  6.2.  kompatible Ethernetkarten

  Hinzufgen einer Untersttzung fr NE2000

  Als erstes sollte kontrolliert werden, ob die Karte von cardmgr
  erkannt wird. Einige Karten, die nicht in der Datei SUPPORTED.CARDS
  stehen, sind OEM-Versionen von Karten, die bereits untersttzt werden.
  Wenn so eine Karte gefunden wird, sollte man David dieses mitteilen,
  damit er diese Karte in die Liste aufnehmen kann.

  Wenn die Karte nicht erkannt wird, sollte man den Anleitungen im
  Abschnitt ``PCMCIA Speicherkarten'' folgen, um einen
  Konfigurationseintrag fr diese Karte zu erstellen. Hierfr sollte die
  Karte an den Speicherkartentreiber, pcmem_cs, gebunden werden. Danach
  mu cardmgr neu gestartet werden, um die neue Konfigurationsdatei zu
  verwenden.

  Man bentigt die Ethernet-Hardwareadresse der Karte. Diese Adresse ist
  eine Serie von sechs zweistelligen Hexadezimalzahlen, die oft direkt
  auf die Karte gedruckt ist. Wenn diese nicht direkt auf der Karte
  steht, kann meist auch der DOS Treiber verwendet werden, um die
  Kartennummer zu ermitteln. Wenn diese erst einmal bekannt ist, kann
  man folgenden Befehl aufrufen:


       dd if=/dev/pcmem0a count=20 | od -Ax -t x1




  In der Ausgabe dieses Kommandos sucht man jetzt nach der Adresse. Hat
  man diese gefunden, notiere man sich den Offset des ersten Byte der
  Adresse. Danach editiere man die Datei modules/pcnet_cs.c und finde
  die hw_info Struktur. Man hat nun einen neuen Eintrag fr die neue
  Karte zu machen. Das erste Feld enthlt einen beschreibenden Namen,
  das zweite den Offset mit zwei multipliziert. Die nchsten drei Felder
  enthalten die ersten drei Bytes der Hardwareadresse. Das letzte Feld
  enthlt einige Einstellungen fr spezielle Karteneigenschaften. Als
  erstes sollte man hier eine 0 versuchen.

  Nach dem Editieren der Datei pcnet_cs.c mu diese kompiliert und das
  neue Modul installiert werden. Editieren Sie nun die Datei
  /etc/pcmcia/config erneut und wechseln Sie die Anbindung der Karte vom
  Modul pcmem_cs zu pcnet_cs. Folgen Sie der Anleitungen zum erneuten
  Laden der Konfigurationsdatei, und alles sollte richtig eingestellt
  sein. Bitte senden Sie David eine Kopie der neuen hw_info und des
  config Eintrags.

  Wenn die Hardwareadresse der Ethernetkarte in der hexadezimalen
  Ausgabe nicht gefunden werden kann, gibt es noch eine letzte
  Mglichkeit. Es ist mglich, die Adresse direkt anzugeben, wenn das
  pcnet_cs Modul initialisiert wird. Dazu mu die Datei
  /etc/pcmcia/config editiert werden und die Option hw_addr= eingefgt
  werden wie hier:



       module "pcnet_cs" opts "hw_addr=0x00,0x80,0xc8,0x01,0x02,0x03"




  Hier mu natrlich die eigene Hardwareadresse an den entsprechenden
  Stellen eingetragen werden.


  6.3.



  PCMCIA-Schnittstellenkarten fr Diskettenlaufwerke

  Die Schnittstellenkarte fr Diskettenlaufwerke, wie sie im Compaq Aero
  und einigen anderen Notebooks Verwendung findet, wird derzeit nicht
  untersttzt. Der Haken liegt hier darin, da der Aero einen
  modifizierten Controller Chip verwendet, um einen DMA-Zugriff auf das
  Diskettenlaufwerk zu ermglichen. Ohne zu wissen, wie dies genau
  abluft, kann keine Untersttzung unter Linux bewerkstelligt werden.

  Ist diese Gertekarte fr Diskettenlaufwerke anwesend, wenn der Aero
  eingeschaltet wird, so wird das BIOS des Aero die Karte konfigurieren
  und Linux wird sie als gewhnliches Diskettenlaufwerk erkennen. Wenn
  die Linux-PCMCIA-Treiber geladen werden, so erkennen diese, da diese
  Karte bereits konfiguriert und an eine Linux-Gertedatei angeschlossen
  wurde. Dieser Slot wird dann in Ruhe gelassen. Auf diese Weise kann
  das Laufwerk verwendet werden, wenn es zur Bootzeit anwesend war. Aber
  es ist nicht mglich, diese Karte whrend der Laufzeit des Systems zu
  wechseln, zu entfernen und wieder einzufhren.


  6.4.


  Was ist mit der Untersttzung von Xircom Karten?

  Ein Treiber fr die Unterstzung von Xircom Ethernet- und Xircom
  Ethernet/Modem-Karten ist im aktuellen PCMCIA-Paket, dank der Mithilfe
  von Werner Koch, enthalten. David hat ein HyperNews-Forum speziell zur
  Diskussion ber die Xircom-Treiberentwicklung unter folgender Adresse
  eingerichtet:

       http://hyper.stanford.edu/HyperNews/get/pcmcia/xircom.html


  Lange Zeit wurden Xircom-Karten nicht untersttzt, da Xircom die
  Firmenphilosophie verfolgte, keine technischen Informationen ber ihre
  Karten zu verbreiten. Wie dem auch sei, sie haben diese Haltung
  gelockert und geben nun Treiberinformationen weiter.


  7.  Programmierung

  Tips fr die Fehlersuche und Informationen zur


  7.1.  Wie kann ein hilfreicher Fehlerreport verschickt werden?

  Der beste Weg, einen Fehlerreport zu versenden, besteht darin, die
  HyperNews-Mitteilungsliste der PCMCIA-Homepage zu verwenden. Auf
  diesem Weg knnen andere Anwender die aktuellen Probleme und deren
  Lsungen oder Vermeidung, falls mglich, sehen. Hier sind einige
  Dinge, die in einem Fehlerreport enthalten sein sollten:

    Der Systemtyp und die Ausgabe des Kommandos probe.

    Welche PCMCIA-Karten werden verwendet?

    Version des Linuxkernels und des PCMCIA-Treibers.

    Alle nderungen, die in den Startdateien im Verzeichnis /etc/pcmcia
     oder dem PCMCIA-Startskript gemacht wurden.

    Alle im Zusammenhang mit PCMCIA stehenden Mitteilungen in der
     Systemlog-Datei.

     Vor dem Abschicken des Fehlerreports sollte man sicher sein, da
     die neuesten PCMCIA-Treiberpakete verwendet wurden. Es ist keine
     sehr gute Sache, die Zeit mit dem Lesen von Fehlerreporten zu
     verschwenden, wenn diese Fehler lngst behoben wurden.

  Wenn das Problem mit einem Kernelfehler einhergeht, so ist der
  Registerausdruck nur dann hilfreich, wenn die fehlerhafte Adresse,
  EIP, herausgefunden werden kann. Wenn diese im Hauptkernel liegt, kann
  die Adresse dazu verwendet werden, mittels der Datei System.map die
  fehlerhafte Funktion herauszufinden. Wenn der Fehler in einem ladbaren
  Modul liegt, ist diese Funktion ein wenig schwieriger herauszufinden.
  Von den aktuellen Modulwerkzeugen wird ksyms -m die Basisadressen der
  Module anzeigen. Man nehme dann das Modul, welches die EIP-Adresse
  enthlt und subtrahiere die Basisadresse von der EIP, um einen Offset
  innerhalb des Moduls zu bekommen. Danach kann das gdb Programm auf das
  Modul angewendet werden. Mit dem list Kommando kann dann dieser Offset
  betrachtet werden. Dies wird aber nur funktionieren, wenn das Modul
  mit der Option -g zum Einbinden von Debugginginformationen bersetzt
  wurde.

  Wenn kein Zugang zum WWW besteht, knnen Fehlerberichte direkt an
  David Hinds geschickt werden. David bevorzugt es aber, da diese
  Fehlerberichte direkt an die Website geschickt werden, da sie hier
  auch von anderen gelesen werden knnen.


  7.2.

  Hilfe zur Fehlersuche auf niedrigster Stufe

  Die PCMCIA-Module enthalten eine Menge Debuggingcode, der beim
  bersetzen eingebunden werden kann. Der meiste Code steht unter
  Kontrolle der PCMCIA_DEBUG Prprozessordefinition. Wenn diese
  undefiniert ist, wird der meiste Fehlersuchcode nicht bersetzt. Wenn
  dieser Wert auf 0 gesetzt ist, wird dieser Code zwar bersetzt, ist
  jedoch inaktiv. Grere Werte spezifizieren einen hheren Grad der
  Mitteilungsbereitschaft. Jedes Modul, das mit definiertem PCMCIA_DEBUG
  bersetzt wurde, enthlt einen ganzzahligen Parameter pc_debug, der
  die Meldebereitschaft des Moduls bestimmt. Dieser kann whrend des
  Ladens eines Moduls modifiziert werden, so da die Ausgabe auf
  Modulbasis angegeben werden kann, ohne da der Code neue bersetzt
  werden mu.

  Es sind einige Werkzeuge zur Fehlersuche in dem Unterverzeichnis
  debug_tools der PCMCIA-Distribution enthalten. Die Programme dumb_tcic
  und dumb_i365 erstellen komplette Registerauszge der PCMCIA-
  Controller und entschlsseln eine Menge der Registerinformationen.
  Diese sind besonders hilfreich, wenn man Zugang zu einem Datenblatt
  des zugehrigen Controller-Chips hat. Das Programm dump_tuples listet
  den Inhalt der CIS (Card Information Structure) auf und entschlsselt
  einige interessante Bits. Mit dem Programm dump_cisreg knnen die
  lokalen Konfigurationsregister einer Karte angezeigt werden.

  Der pcmem_cs Speicherkartentreiber kann manchmal auch sehr hilfreich
  sein. Dieser kann an irgendeine Karte gebunden werden und hat keine
  Wechselwirkungen mit anderen Treibern. Er kann verwendet werden, um
  direkten Zugriff auf den Attribut- oder allgemeinen Speicher einer
  Karte zu erlangen.


  7.3.

  Wie schreibt man einen Treiber fr eine neue Karte?

  Der Linux PCMCIA Programmer's Guide ist die beste Dokumentation der
  Linux-PCMCIA-Schnittstelle. Die neueste Version ist immer ber FTP
  erhltlich bei

       hyper.stanford.edu:/pub/pcmcia/doc

  oder per WWW bei

       http://hyper.stanford.edu/HyperNews/get/pcmcia/home.html



  Bei Gerten, die den normalen ISA-Gerten nahe stehen, kann man
  wahrscheinlich einen Groteil der existierenden Linuxtreiber
  verwenden. In einigen Fllen wird der grte Brocken die Anpassung
  existierender Treiber sein, so da diese das Hinzufgen und Entfernen
  der Gerte nach dem Booten handhaben knnen. Von den aktuellen
  Treibern ist der Speicherkartentreiber der einzige eigenstndige
  Treiber, der nicht von den Teilen des Linux Kernels abhngt und so die
  meiste Arbeit leisten mu.

  David hat einen Treiber als Grundgerst fr eigene Treiber
  geschrieben, der mit einer Menge an Kommentaren erklrt, wie die
  Kommunikation zwischen dem Treiber und den Card Services abluft.
  Dieser kann in der PCMCIA-Quelldistribution unter modules/skeleton.c
  gefunden werden.




































