Als allererstes: Der obige Hinweis bezüglich Kernel installieren sollte ernst genommen werden. Grund: Jeder modularisierte Treiber _braucht_ Zugriff auf die korrekt konfigurierten Sourcen genau des Kernels, unter dem er später laufen soll. Dies gilt ganz besonders, wenn der Kernel mit CONFIG_MODVERSIONS gebaut wurde (das ist um einiges sicherer!).
Wenn sich die Module nicht laden lassen, weil insmod Sachen wie "kfree" nicht findet, dann liegt das daran, daß die Version der Sourcen des Kernels, des laufenden Kernels, und der ISDN-Treiber, nicht übereinstimmt.
Also: cd /wo/auch/immer/ist/src/linux; make config; make dep; make; make modules; make modules_install; cp arch/i386/boot/zImage /boot/linux\ .versionsnummer; vi /etc/lilo.conf; lilo; reboot.
Disclaimer: So mache ich das.
config.new und config.dist und config.data. Das Problem ist, daß ich an der config.data gelegentlich was ändern muß, aber der Benutzer daran auch rumspielt (dazu ist die Datei da). Was tun? Einfach: Mit den Parametern der alten config.data wird die neue config.dist "geladen", und das Ergebnis liegt nun in config.new. Dasselbe passiert, wenn es noch keine config.data gibt. In beiden Fällen tut man gut daran, sich die Datei config.new näher anzusehen, evtl. mit der alten config.data zu vergleichen, und dann "mv config.new config.data". Sicherheitshalber weigert sich das Makefile in config/, ohne diesen Schritt weiterzuarbeiten.
Autoconfig und wieso nicht: Nein, ich weigere mich (momentan), automatisch nach Karten, deren Interrupts, deren Konfigurationsregister etc.pp. zu suchen. Bei einem laufenden Kernel ist das alles andere als einfach!
Stattdessen müssen die entsprechenden Daten in /lib/modules/modules.isdn eingetragen werden. Wenn irgendwas nicht stimmt, wird im allgemeinen die Karte nicht erkannt und das Treibermodul nicht geladen. Ausnahme: IRQs, die werden momentan nicht überprüft. Das kann man manuell machen: nach der installation der Treiber beim ISDN-Anschluß der Karte anrufen. Dann "cat /proc/interrupts". Wenn neben dem Wort ISDN eine Zahl kleiner drei steht, stimmt was nicht -- anderen Interrupt probieren, BIOS-Konfiguration überprüfen: auch korrekt eingestellte Interrupts können Probleme machen, wenn zB das BIOS eines PCI-Rechners den Interrupt zu einem PCI- anstatt zu einem ISA-Slot routet. (Evtl müssen da trotz BIOS- Konfiguration noch Jumper auf dem Mainboard umgesetzt werden. Doku des Teils lesen!)
Hier stimmt ziemlich wahrscheinlich die Ladereihenfolge der Module
nicht. Man muß sich auf jeden Fall streng an die Reihenfolge in
/lib/modules/modules.isdn.all
halten und darf diese in
der Datei auch nicht verändern, wenn man einzelne Module herausnimmt,
die man nicht braucht.
Next Chapter, Previous Chapter
Table of contents of this chapter, General table of contents
Top of the document, Beginning of this Chapter