Software bei DB0HRO
|
||||||||||||||||
Diese Dokumentation beschreibt den Aufbau und die Wirkunsweise der Software der automatischen Amateurfunkstelle DB0HRO (Digipeater). Weitere Komponenten des Digipeaters sind selbstverständlich die Transceiver, Antennen, die TNCs und die gesamte Installation | ||||||||||||||||
Der Aufbau des Systems ist historisch gewachsen. Während ursprünglich mehrer PCs für einzelne Komponenten eingesetzt wurden, ist heute alles mit einem PC realisiert. Der Digipeater stellt folgende Funktionen zur Verfügung: | ||||||||||||||||
TheNetNode Netzwerkknoten mit Interlink zu den Nachbarn, Benutzeroberfläche, Convers
Alle Programme müssen gleichzeitig auf dem PC ausgeführt werden. Dazu dient das Multitasking Betriebssystem. Die Cluster- und die Mailboxsoftware steht nicht unter MS-DOS oder MS-Windows zur Verfügung. Weiterhin würden durch ein Microsoft-Betriebssystem lizenzrechtliche Probleme auftauchen oder weitere Kosten entstehen. Daher wurde als Betriebssystem Linux ausgewählt.
|
||||||||||||||||
Linux als Betriebssystem | ||||||||||||||||
|
||||||||||||||||
Startvorgang | ||||||||||||||||
Linux single ein. Danach wird Init nur die absolut notwendigen Programme starten. Von dieser Stelle sind Reparaturen in der Konfiguration aber auch am Filesystem möglich. Normalerweise startet jedoch das Betriebssystem automatisch und es sind dann keine Eingriffe erforderlich. Start der Amateurfunkprogramme Für den Digipeater sind folgende Programme zu starten:
Dabei ist PostgreSQL eigentlich kein Amateurfunkprogramm, sondern eine Datenbankengine (RDBMS), wird aber für den Betrieb von CLX benötigt. Die Programme sind für unterschiedliche Zwecke beschrieben, einige haben eine Konsole auf der man interaktiv arbeiten kann, andere sind Server. Daher ist für jedes Programm die richte Methode zum Starten auszuwählen. TheNetNode und TNT haben eine Konsole,
an der der Sysop mit Bildschirm und Tastatur arbeiten kann. Für diese beiden Programme erfolgt der Start wie auch für jede andere Konsole, an der der Sysop sich am System anmelden kann. Sollte das Programm beendet werden, wird es automatisch neu gestartet. Die anderen Programme arbeiten im Hintergrund, sie werden beim Systemstart nur einmal gestartet. Dazu gibt es Scripte, die in einer festgelegten
Reihenfolge, in jedem Fall aber vor TheNetNode und TNT ausgeführt werden. Gesteuert wird dieses alles von dem Linux-Programm init mit seinen Runlevel. |
||||||||||||||||
Linux Runlevel | ||||||||||||||||
S Single-User, kein Netzwerk Beim Start des System wird in einen default Runlevel gewechselt. Dieser default Runlevel ist in der Datei /etc/inittab eingetragen. Er steht in der Zeile Der Runlevel kann als nutzer root mit Hilfe des Befehls init umgeschaltet werden. Damit kann der Übergang und insbesondere der Bootvorgang simultiert werden, ohne den Rechner neu zu starten. Runlevel werden auf zwei Wegen wirksam. Zunächst gibt es die Datei /etc/inittab. Der Vater aller Prozesse init liest diese Datei und startet nach einer Vorschrift die hier angegebenen Programme. Wenn ein Programm terminiert, wird es neu gestartet. So werden z.B. die Konsolen an denen man sich einloggen kann gestartet und nach dem Ausloggen beendet.
Init überwacht die Prozesse und startet das login erneut, wie es in der /etc/inittab definiert ist. Dieser Vorgang wird in den Zeilen 2:123:respawn:/sbin/mingetty tty2 3:123:respawn:/sbin/mingetty tty3 4:123:respawn:/sbin/mingetty tty4 5:123:respawn:/sbin/mingetty tty5 6:123:respawn:/sbin/mingetty tty6 definiert. Mingetty ist das Programm, das den Loginvorgang einleitet. Neben dem Login kann auch jedes andere Programm, daß </dev/tty11 >/dev/tty12> auf einer Konsole arbeitet gestartet werden. Auf diese Weise werden TheNetNode und TNN gestartet: Auch hier sorgt der respawn Parameter für den automatischen Neustart. Damit die Programme auf den Konsolen 11 und 12 arbeiten, wird die Eingabe und Ausgabe mit dieser Konsole verbunden. Die Umschaltung der Konsole auf TheNetNode erfolgt daher mit alt-F11 und auf TNT mit alt-F12. Die Zahl hinter dem ersten Doppelpunkt gibt an, in welchem Runlevel das Programm gestartet wird. Die Amateurfunkprogramme laufen also nur in Runlevel 2 und 3. Die zweite Bedeutung der Runlevel wird durch die Zeilen l0:0:wait:/sbin/init.d/rc 0 1:1:wait:/sbin/init.d/rc 1 l2:2:wait:/sbin/init.d/rc 2 l3:3:wait:/sbin/init.d/rc 3 l6:6:wait:/sbin/init.d/rc 6 erreicht. Nach dem Setzen des neuen Runlevels wird das Script /sbin/init.d/rc mit dem jeweiligen Runlevel als Parameter aufgerufen. Das Script arbeitet mit dem Verzeichnis /etc/rc.d zusammen. In diesem Verzeichnis liegen Scripte, die bestimmte Programme starten, stoppen und auch beeinflussen können. Wird z.B. /etc/rc.d/clx mit dem Parameter start aufgerufen, sorgt das Script dafür, daß das Clusterprogram CLX gestartet wird. /etc/rc.d/clx stop sorgt dementsprechend für die Terminierung. Im Verzeichnis /etc/rc.d gibt es weiterhin Verzeichnisse für jeden Runlevel, also rcS.d, rc0.d, .. rc6.d. In diesen Verzeichnissen befinden sich Verweise (symlinks) auf die Scripte. Diese symlinks haben jedoch eine besondere Namensstrukur. Sie beginnen mit einen S (start) oder K (kill), gefolgt von einer zweistelligen Zahl und einem Namen. Wenn also /sbin/init.d/rc durch einen Runlevelwechsel aufgerufen wird, werden das Verzeichnis für den alten und für den neuen Runlevel untersucht. Zunächst werden alle symlinks, die mit K beginnen, in der Reihenfolge der Nummer untersucht. Gibt es im Verzeichnis für den neuen Runlevel keinen passenden symlink mit einem S wird das Script mit dem Argumtent stop aufgerufen und dadurch das zugehörige Programm beendet. Danach wird das neue Verzeichnis nach symlinks, die mit S beginnen in der Reihenfolge der Nummer durchsucht. Existiert im alten Verzeichnis keinen passsenden Symlink, der mit K beginnt, wird das Script mit dem Parameter start aufgerufen, womit das Proramm i.a. gestartet wird.
|
||||||||||||||||
Manueller Programmstart/-stop | ||||||||||||||||
/etc/rc.d/clx stop |
||||||||||||||||
Dateizugriff | ||||||||||||||||
fread /rl/etc/inittab verwendet werden. Es gibt kein chdir Kommanod, alle Pfade müssen vollständig eingegeben werden. Weiterhin ist zu beachten, unter welchem Benutzerkonto die Programme laufen. DpBox läuft auf dem Nutzerkonto dpbox. Damit ist kein globaler Zugriff auf alle Dateien notwendig. Daher ist es zweckmäßig, die Dateien über die Shell an einem anderen Ort zu kopieren, die Zugriffsrechte anzupassen und dann zu übertragen. Die Amateurfunkprogramme laufen auf folgenden Nutzerkonten:
Wenn also eine Datei von clx zu modifizieren ist, sollte sie in der Shell (von root) nach /tmp kopiert werden. Dort sind deren Zugriffsrechte so zu setzen, daß dpbox sie lesen kann. Nach der Übertragung durch die DpBox löscht man die Datei in /tmp. Jetzt wird die Datei auf dem Heim-PC des OM’s bearbeitet. Danach erfolgt die neue Einspielung durch die DpBox in /tmp. Der Eigentümer der Datei ist automatisch dpbox, weil die Datei durch das Programm DpBox geschrieben wird. In der Shell muß die Datei dann kopiert und der Eigentümer korrekt auf clx_us gesetzt werden(beliebige Reihenfolge). Da die Kopie immer dem Kopierenden gehört, ist es auch möglich, in der Shell den Nutzer zu setzen und als richtiger Nutzer den Kopiervorgang auszuführen. z.B. db0hro:/tmp # su - clx_us db0hro:/tmp $ cp /tmp/clx_par /usr/local/clx/config db0hro:/tmp $ exit db0hro:/tmp # |
||||||||||||||||
Konfiguration TheNetNode | ||||||||||||||||
|
||||||||||||||||
Konfiguration TFKISS | ||||||||||||||||
|
||||||||||||||||
Konfiguration TNT | ||||||||||||||||
|
||||||||||||||||
Konfiguration DpBox | ||||||||||||||||
|
||||||||||||||||
Konfiguration CLX | ||||||||||||||||
In der cluster_par ist die Verbindung zu DB0SUE-7 als Typ Wampes eingetragen. Damit dieses funktioniert ist in der TNT-Konfiguration, Datei tnt.up der Wampes-Socket aktiviert (socket netcmd *:4718 db0hro-6).
|
||||||||||||||||
Routing | ||||||||||||||||
|
||||||||||||||||
Architektur DB0HRO | ||||||||||||||||