Probleme beim Booten Der Kernel Linux Erstinstallation Inhalt Index


Plug and Play

Plug and Play ist eine feine Sache... Dem Slogan Karte einbauen, Computer starten, fertig glauben ohnehin nur noch die größten Optimisten. Auch wenn für Otto Normalverbraucher mit seiner einen Plug-and-Play-Karte tatsächlich der Administrationsaufwand schwindet, erweist sich die vom BIOS vorgenommene Initialisierung schnell als Falle, wenn sich in einem Rechner gleich mehrere solcher Karten um die Zuweisung der wenigen freien Interrupts und Adressen bewerben. Während für Windows, DOS und Co. die Treiber für solche Karten noch mitgeliefert werden, müssen dieselben von Freaks in ihrer Freizeit erst noch für Linux entwickelt werden. Und während der Hersteller einer Karte noch weiß (wissen sollte), für welche Adressen und Interrupts er seine Treiber zurechtbastelt, beschränken sich die Linux-Treiber meist nur auf ausgewählte ("die normalen") Bereiche. Weist das BIOS einer Karte jetzt Ressourcen zu, die der Treiber nicht vorsieht, wird dieser die Hardware nicht entdecken...

Nun bleiben einem als Linux-Guru drei Offerten übrig:

Anhand der Installation einer Vibra 16 PnP Karte sollen die Schritte zur Einbindung demonstriert werden.

  1. Der Treiber im Kernel ist als Modul zu realisieren. Am wenigsten Probleme bereitet es, wenn man die Einstellungen (Interrupt, IO-Adressen, DMA-Kanäle) entsprechend den Parametern unter DOS/Windows wählt. Ansonsten hilft nur experimentieren, wobei man vorab Interrupts bzw. IO-Adressen, die von anderer Hardware genutzt werden, ausschließen sollte.

    Die verwendeten Interrupts bereits benutzter (!) Geräte erfährt man mittels

    user@sonne> cat /proc/interrupts

    Vorsicht: Wurde z.B. der Drucker noch nicht angesprochen, wird der von ihm verwendete Interrupt nicht erscheinen.

    Die Belegung der I/O-Ports vermittelt

    user@sonne> cat /proc/ioports
  2. Die Konfigurationsdatei /etc/isapnp.conf   ist zu erzeugen:

    root@sonne> pnpdump >/etc/isapnp.conf

    pnpdump testet die Hardware und schreibt alle ermittelten Daten in die Datei. Diese muss nun bearbeitet werden und die Zeilen, die mit den Einstellungen im Modul korrespondieren, sind zu entkommentieren. Für eine Vibra16 PnP mit den Einstellungen IRQ=5, DMA 0 auf Kanal 1, DMA 1 auf Kanal 5, IO-Port 0x0220 sieht der entsprechende Ausschnitt wie folgt aus:

    # ***** GEKUERZTE DATEI ****
    #
    # $Id: pnpdump.c,v 1.17 1998/11/10 22:45:04 fox Exp $
    # This is free software, see the sources for details.
    # This software has NO WARRANTY, use at your OWN RISK
    #
    # For details of this file format, see isapnp.conf(5)
    #
    # ...
    #
    # Board 1 has serial identifier e5 ff ff ff ff 70 00 8c 0e

    # Card 1: (serial identifier e5 ff ff ff ff 70 00 8c 0e)
    # Vendor Id CTL0070, No Serial Number (-1), checksum 0xE5.
    # Version 1.0, Vendor version 1.0v # ANSI string -->Creative ViBRA16C PnP<--
    #
    # ...
    #
    # Don't forget to uncomment the activate (ACT Y) when happy

    (CONFIGURE CTL0070/-1 (LD 0
    #
    # Multiple choice time, choose one only !

    #     Start dependent functions: priority preferred
    #       IRQ 5.
    #           High true, edge sensitive interrupt (by default)
     (INT 0 (IRQ 5 (MODE +E)))
    #       First DMA channel 1.
    #             8 bit DMA only
    #             Logical device is not a bus master
    #             DMA may execute in count by byte mode
    #             DMA may not execute in count by word mode
    #             DMA channel speed in compatible mode
     (DMA 0 (CHANNEL 1))
    #       Next DMA channel 5.
    #             16 bit DMA only
    #             Logical device is not a bus master
    #             DMA may not execute in count by byte mode
    #             DMA may execute in count by word mode
    #             DMA channel speed in compatible mode
     (DMA 1 (CHANNEL 5))
    #       Logical device decodes 16 bit IO address lines
    #             Minimum IO base address 0x0220
    #             Maximum IO base address 0x0220
    #             IO base alignment 1 bytes
    #             Number of IO addresses required: 16
     (IO 0 (SIZE 16) (BASE 0x0220))
    #
    # *** hier wurde stark gekuerzt ***
    #
     (NAME "CTL0070/-1[0]{Audio               }")
     (ACT Y)
    ))
    #
    # *** es folgt weitere Hardware ***
    #
  3. Die Karte muss nun initialisiert und das Modul geladen werden: 

    root@sonne> isapnp /etc/isapnp.conf
    root@sonne> modprobe sound.o
  4. Test: Ob die Karte korrekt erkannt wurde, verrät z.B. der belegte Interrupt (Alternativ zeigt lsmod, ob das Modul geladen wurde):

    user@sonne> cat /proc/interrupts
       0:      90403   timer
       1:       1387   keyboard
       2:          0   cascade
       5:       2961   sound blaster
       8:          2 + rtc
      10:      26394   aic7xxx
      12:      35025   PS/2 Mouse
      13:          1   math error
      15:       1520   eth0

    Ist der Interrupt nicht aufgeführt, stimmt vermutlich die Ressourcenzuteilung im Modul und/oder im Konfigurationsfile nicht.


  5. Damit die Karte zukünftig gleich beim Hochfahren des Systems initialisiert wird, ist (bei SuSE) z.B. die Datei boot.local um die beiden Einträge aus Punkt 3 zu ergänzen. Bei SuSE befindet sich ein entsprechender Eintrag in der Datei /sbin/init.d/boot, so dass bei Existenz der Datei /etc/isapnp.conf das Tool isapnp automatisch gestartet wird.

Tipps zu Plug&Play-Soundkarten

Die obige Beschreibung gleicht eher einer komplizierten Bastelanleitung...

Speziell zur Administration von Plug&Play-Soundkarten hat RedHat ein Frontend geschaffen, das automatisch die korrekten Einstellungen in der Datei /etc/isapnp.conf vornimmt.

Den auf RedHat basierenden Distributionen liegt das Tool sndconfig ohnehin bei; wer eine andere Distribution verwendet, kann sich die Sourcen von einem der zahlreichen FTP-Server besorgen und das Programm übersetzen.

Nach dem Start des Programmes versucht sndconfig die Soundkarte automatisch zu erkennen. Ist die Suche erfolgreich, werden kurze Klangdateien abgespielt und die Konfiguration getestet.

Scheitern obige Versuche, fordert das Tool zur Angabe der im System befindlichen Soundkarte auf.

Manuelle Auswahl des Soundkartentyps

Mit "OK" gelangt man in einen Dialog, der zur Angabe der Parameter Interrupts, DMA-Kanäle und IO-Ports auffordert. Die voreingestellten Werte entsprechen den Standardwerten des jeweiligen Kartentyps.

Einstellen der Parameter

Mit "OK" werden die Einstellungen übernommen und die Konfiguration wiederum anhand von Klangbeispielen verifiziert. Geht etwas schief, deutet die Ausschrift meist auf das Problem hin, z.B. dass der Interrupt von einem anderen Gerät benutzt wird. Hier hilft nur, die Einstellungen durchzuprobieren, bis eine Konstellation konfliktfrei funktioniert. Viele Soundkartenchips lassen sich als unterschiedliche Typen konfigurieren (z.B. als Sb16 und/oder WSS), somit ist der Test eines anderen Kartentyps ein weiterer Versuch, seinem System die Töne beizubringen.


Probleme beim Booten Der Kernel Linux Erstinstallation Inhalt Index