Asterisk mit HFC Teil 2
Damit wir nicht jedesmal unsere hfc-Treiber manuell laden müssen, richten wir uns ein init-Scripte ein.
Da ich selbst nur Debian nutze, kann ich nicht versichern das es so auch auf andere Systeme so funktioniert.
Unter Linux werden verschiedene Dienste per initscripte gestartet.
Diese Scripte liegen in einem Zentralen Verzeichniss.
/etc/init.d/
Dort hab ich folgendes Script hinzugefügt:
Code:
# Laden der hfc-Treiber per zaphfc
DEBUG=0
JITTERB=2
MODES=1
case "$1" in
start)
modprobe zaptel debug=$DEBUG
sleep 1
modprobe zaphfc jitterbuffer=$JITTERB modes=$MODES debug=$DEBUG
sleep 1
ztcfg -v
;;
stop)
/usr/sbin/asterisk -r -x "stop now"
sleep 2
modprobe -r zaphfc
modprobe -r zaptel
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
Das Script läd zuerst den zaptel-Treiber, danach den zaphfc-Treiber.
DEBUG=0|1 (Fehlersuche aus|ein]
MODES=0|1|2|3 (0 = alle Karten als TE, 1 = erste Karte NT zweite TE; 2 = erste Karte TE zweite NT, 3 = beide Karten als NT)
JITTERB=X (ein kleiner Puffer damit die Paket noch mal sortiert werden können)
"ztcfg -v" initalisiert die hfc-Karten
Das Script sollte root gehören und muss ausführbar sein.
Code:
chown root. /etc/init.d/zaptreiber.sh
chmod +x /etc/init.d/zaptreiber.sh
Testen könner wir es mit:
Code:
/etc/init.d/zaptreiber.sh stop
/etc/init.d/zaptreiber.sh start
"stop" beendet Asterisk und entfernd die Kernel-Module
"start" läd die Kernel Module
Ein Linuxsystem wir über Runlevel gestartet, bei Debian ist das per default der Runlevel 3
Die Runlevels findet man unter /etc.
Auf das Thema runlevel möchte ich an dieser Stelle nicht weiter eingehen.
Wir wechseln in das Verzeichniss /etc/rc3.d/ und legen einen symbolischen Link zu unserem Script an.
Code:
cd /etc/rc3.d/
ln -s ../init.d/zaptreiber.sh ./S14zaptreiber
Das S14 bewirk, das wenn wir den Runlevel betreten wird an 14ter Possition der Treiber geladen.
Damit der Treiber auch entladen wird legen wir noch einen zweiten Link an.
Code:
cd /etc/rc3.d/
ln -s ../init.d/zaptreiber.sh ./K14zaptreiber
Wenn wir das nächste mal unsere Linux-Kiste starten, wird automatisch die hfc-Treiber geladen.
Kontrollieren könen wir das mit:
Code:
lsmod |grep zap
zaphfc 13724 6
zaptel 188548 17 zaphfc
Nun möchten wir natürlich auch, das unser Asterisk-Server automatisch startet.
Wir können hierfür auch ein init-Script erzeugen, das im gleichen Runlevel allerdings später (z.B. S20) gestartet wird.
Ich selbst bin einen anderen Weg gegangen, weil ich, fals der Asterisk-Dienst stirb, ihn wider automatisch starten wollte.
Da ich nicht so fitt im Scripte Programieren bin nutze ich "/etc/inittab"
Dort hab ich als letzter Eintrag folgene Zeile eingetragen:
Code:
ax:3:respawn:/usr/sbin/asterisk -f
Dadurch wird /usr/sbin/asterisk immer wider gestartet solange wir uns im Runlevel 3 befinden und der Dienst Asterisk sich beendet hat.
das "-f" bewirk das sich der Prozess nicht in den Hintergrund legt.
Wenn wir das "-f" weglassen wird Asterisk bis zum Systemstillstand immer wider gestartet.
Die Runlevels kann man mit "init" ändern. "init 2" bewirk, das wir in den Runlevel 2 wechseln.
Über ein gutes init-Script zum starten und überwachen des Asterisk Prozesses würde ich mich an dieser Stelle freuen.