Kernelkonfigurationen und Treiber
Kernel Konfigurationen, Treiber für ISDN Karte, Startscript für Hardwaretreiber und -module
Zurück
Weiterführende Links zu diesem Thema:
Linux
im WAN
Artikel der c´t, der die Konfiguration von isdn4linux sehr gut beschreibt.
ISDN for LINUX
Linksammlung mit weiterführenden Artikeln über Linux und ISDN und frei zugängliche
Software.
ftp.franken.de/pub/isdn4linux/
Sourcen für isdn4linux
ISDN4Linux
Der aktuellste Link mit den neuesten downloads der Sourcen.
ftp.suse.de
Achtung: hier gibts die hisax Treiber, die man zuladen muß!
Ich beschreibe die ganze
Geschichte für eine AVM Fritz Card. Das ist die immer noch preiswerteste und
stabilste Konfiguration unter Linux. Mittlerweile gibt es zwar Treiber für alle Karten
der Welt, dann muß man halt selbst ein wenig Grundlagenforschung und Quellenstudium im
Internet treiben und mit etwas Fortune klappts dann auch.
Als erstes lädt man sich den
Kartentreiber runter. Diesen fügt man gemäß README in seine Kernel Quellen ein und
konfiguriert die makefiles entsprechend. Hier sehe man unter /usr/src/linux/README
nach. In der Regel reicht ein 'make menuconfig' in diesem
Verzeichnis aus.
Den Treiber für die Karte
konfiguriert man per Hand oder Menügeführt in seinen Kernel ein. Dem Kernel sollte man
noch folgende Parameter mitgeben (also: einschalten), damit das mit dem Routing auch
wirklich klappt:
TCP/IP Networking
Um zu Routen, muß natürlich diese Option eingeschaltet sein und mindestens eine weitere
echte Netzwerkkarte (z.B. eine 3Com) drin sein.
IP forwarding/gatewaying
siehe oben.
multicasting
syn cookies
firewalling
Diese Option ist wichtig, wenn man die Paketfilter über ipchhain bzw. ipfwadm einschalten
möchte.
firewall packet logging
Damit man weiß, was so abgeht...
masquerading
Dringendst erforderlich, um hinter dem Rechner im LAN
liegende PC's aufs Internet zugreifen zu lassen!
ICMP masquerading
Nur erforderlich, wenn die anderen Rechner hinter dem Router ICMP Messages ins Internet
verschicken sollen/wollen (ping, traceroute,
...).
Diese Optionen sollten
engeschaltet sein. Zusätzlich sollte man den HiSAX Treiber als Modul in den Kernel ladbar
machen (lsmod, insmod, delmod, modprobe). Danach einen Kernel
erzeugen, nicht ohne den alten gesichert zu haben!
Alte Hasen gehen hier wie folgt vor:
Alten Kernel irgendwo auf der Boot Partition hinkopieren (/boot/stable/linuz)
und über lilo diesen Kernel bootbar machen.
Danach den neuen Kernel nach /linuz kompilieren und binden.
Damit hat man denn immer noch einen Fallstrick, falls der neue Kernel nicht laufen sollte
oder aus anderen Gründen nicht bootet.
Nun sollte die ISDN Karte
ansprechbar sein. Dies bekommt man am besten heraus, in dem man den Treiber entweder in
die /etc/conf.modules einträgt oder aber mittels modprobe den Treiber "per Hand" lädt.
Geschickterweise hat man das
ganze modular aufgebaut (also den Treiber als Kernelmodul kompiliert), dann kann man das
ISDN Interface beliebig laden und runterfahren ohne ständig neu booten zu müssen
(schließlich haben wir ein echtes Unix, was nicht bei jedem Treiberwechsel gleich neu
gestartet werden muß wie dieser M....$... ....... Krempel)
Zu diesem Zweck habe ich mir ein
kleines init-Script geschrieben: isdnsubsys.
Diese Datei runterladen
und als "isdnsubsys" im Verzeichnis /etc/rc.d/init.d speichern. Der entscheidende Teil ist das Laden
des Treibers mit der Zeile
insmod hisax type=5 protocol=2 io=0x200 irq=5
Die Parameter sind in den README's beschrieben, wichtig ist halt der
Interrupt (irq=5) und die Memoryadresse (io=0x200). protocol=2 gibt das EURO-ISDN Protokol
an. Es gibt die ISDN Protokolle 1TR6 (meist USA) und DSS1 oder EURO-ISDN. Letzteres ist
das von der Deutschen Telekom und anderen verwendete. Der Parameter type=5 heißt
Fritz-Karte. Aber besser ist nachlesen: RTFM.
Die Zeile "telesctrl ..." ist mittlerweile in der Syntax veraltet,
funktioniert aber noch. Wo nicht, sollte man den neueren "isdnctrl
..." nehmen, der ist kartenunabhängig. Die ersten Treiber waren für die Teles
Karten, von denen ich nur dringendst abraten möchte.
Ansonsten hört sich Alles viel
komplizierter an als es ist, und ich kann nur jedem empfehlen: Nur Mut, der Aufand lohnt!
Zurück
Die Prozedur "isdnsubsys"
#!/bin/sh
#
# Starting isdn SubSys
# 07.11.97, A. Amthor
#
. /etc/rc.d/init.d/functions
VERSION=`cat /proc/version | awk '{ print $3 }' `
SYSPATH="/sbin/"
MODULES="ppp slhc hisax"
DEVICE=ippp0; export DEVICE
MOD=$1; export MOD
if [ x$MOD = x ]
then
echo "$0: $0 {start|stop}"
exit 0
fi
if [ x$1 = xstart ]
then
echo "starting isdn Subsystem for $DEVICE:"
for mod in $MODULES
do
S="already loaded modules: "
lsmod | grep $mod >/dev/null 2>&1
if [ $? = 0 ]
then
loaded="$loaded $mod"
fi
done
echo "$S $loaded"
for mod in $loaded
do
$SYSPATH\/rmmod $mod
done
# load VJ-compression module
# if VJ compression is compiled into kernel .. you can omit this
$SYSPATH\/insmod /lib/modules/$VERSION\/net/slhc.o
# load isdn4linux and teles driver
# if these modules are compiled into kernel -> remove this lines
$SYSPATH\/insmod isdn
$SYSPATH\/insmod hisax type=5 protocol=2 io=0x200 irq=5
telesctrl HiSax 1 4 # enable verbose '4' mode
exit 0
fi
if [ x$1 = xstop ]
then
for mod in $MODULES
do
rmmod $mod
done
exit 0
fi
echo "$0: $0 {start|stop}"
exit 1
|