runvdr extreme Geschrieben von: Udo Richter <udo_richter(a)gmx.de> Projekt Homepage: http://www.udo-richter.de/vdr/scripts.html#runvdr Siehe Datei COPYING f�r Lizenz-Informationen �ber -------------------------------------------------------------------------- runvdr extreme ist ein runvdr-Skript, genau wie das runvdr-Skript aus der VDR-Distribution. Es ist nur rund 17 mal gr��er. Einige der Features von runvdr extreme: - L�dt die Grundkonfiguration aus runvdr.conf - Die gesamte Konfiguration kann per Kommandozeile gesetzt werden - Alle VDR-Optionen werden unterst�tzt - Verwaltet runvdr.pid Datei, reagiert auf Signale - Kann einen X-Server f�r Ausgabe-Plugins starten - Startet VDR im Falle von Fehlern neu - Kommandos, um VDR neu zu starten und DVB-Treiber neu zu laden - Beim VDR-Neustart wird die Konfiguration erneut gelesen - Vermeidet endlose Schleifen, wenn VDR sofort stirbt - Setzt Terminal zur�ck nachdem VDR beendet wurde - Starten von Wrapper-Programmen zum Debuggen - Wartet bis der VDR-Prozess beendet wurde, hartes Beenden nach Timeout - Kommandozeilenhilfe - Kann Konsole umschalten - Kann Landessprache f�r VDR setzen - Unterst�tzt Pluginsetup-Plugin optional - Unterst�tzt Setup-Plugin optional Dazu kommt runvdr-conf.d: - L�dt Konfigurationsdateien alphabetisch aus einem Verzeichnis, vergleichbar mit init.d-Verzeichnissen. - Kommandozeilentool zum Aktivieren/Deaktivieren von Plugins - Festlegen der Ladereihenfolge - Optional: Men�steuerung per osdserver-Plugin Schnellstart -------------------------------------------------------------------------- - Kopiere runvdr nach /usr/local/bin/ oder wo-auch-immer-du-magst - Kopiere runvdr.conf.example nach /etc/runvdr.conf, wenn runvdr als Server laufen soll, oder nach ~/.runvdr.conf, wenn runvdr durch einen Benutzer gestartet werden soll. - Bearbeite /etc/runvdr.conf nach deinem Bedarf Die runvdr.conf ist gr��tenteils selbsterkl�rend. Alle Optionen sind auch per Kommandozeile verf�gbar, siehe runvdr --help. F�r das init-Skript (Debian): - Kopiere init.d.runvdr.Debian nach /etc/init.d/runvdr - Benutze sysv-rc-conf oder update-rc.d um die Start-Runlevel zu konfigurieren. F�r runvdr-conf.d: - Kopiere runvdr-conf.d nach /usr/local/bin/ - /etc/runvdr/ anlegen und mit Dateien nach Vorbild der skeleton.example f�llen - INCLUDE /etc/runvdr/conf.d/* in runvdr.conf aufnehmen - runvdr-conf.d show|enable|disable zum Konfigurieren der Plugins verwenden - (Optional) "runvdr-conf.d osdserver" in commands.conf hinzuf�gen. Details -------------------------------------------------------------------------- Die Optionen werden in dieser Reihenfolge ausgewertet: 1. Kommandozeilenoptionen haben h�chste Priorit�t. 2. runvdr.conf auf Kommandozeile mit -C oder --runvdr-conf angegeben 3. Wenn kein -C und kein --runvdr-conf angegeben, benutze ~/.runvdr.conf 4. Wenn kein -C und kein --runvdr-conf und kein ~/.runvdr.conf, benutze /etc/runvdr.conf 5. Wenn keine der obigen Dateien existiert, benutze runvdr-Defaults Nur eine runvdr.conf wird normalerweise geladen, und nur eine -C Option wird ausgewertet. Man kann aber den Inhalt einer runvdr.conf in einer anderen runvdr.conf laden, wenn man die INCLUDE-Direktive verwendet. Man kann zum Beispiel /etc/runvdr.conf aus der Datei ~/.runvdr.conf heraus laden, um f�r den aktuellen Benutzer einige Einstellungen zu �berschreiben. Die INCLUDE-Direktive kann auch mehrere Konfigurationsdateien laden. So kann man z.B. mit INCLUDE /etc/runvdr/conf.d/* ein ganzes Verzeichnis von Konfigurationsdateien laden. Beispielsweise k�nnten in so einem Verzeichnis f�r jedes zu ladende Plugin eine Datei (oder Symlink) mit dem Einzeiler "AddPlugin xxx" liegen. Plugins, die durch die AddPlugin-Direktive in der conf-Datei oder die --plugin oder -P Option geladen werden, k�nnen von der Plugin-Liste wieder entfernt werden, wenn man "AddPlugin -name", --plugin="-name" oder -P-name verwendet. Der name-Teil wird dabei als Muster f�r den Anfangsteil des Plugin- Namens verwendet, alle Plugins, die auf "name*" passen, werden entfernt. Insbesondere hebt "AddPlugin -" und -P- die gesamte bisherige Plugin-Liste auf. Der selbe Mechanismus funktioniert auch beim -D Device-Parameter. Um Parameter an VDR direkt weiter zu geben, ohne dass runvdr sie interpretiert, kann -- als Parameter angegeben werden. Alle Parameter nach -- werden unver�ndert an VDR weiter gegeben. So gibt "runvdr -- --help" die Hilfestellung von VDR aus, und nicht die Hilfestellung von runvdr. runvdr-conf.d -------------------------------------------------------------------------- Mit runvdr-conf.d steht ein (optionales) Tool zur Verf�gung, das das Verwalten der Plugins erleichtern soll. Es funktioniert nach dem init.d Prinzip, bei dem in einem Verzeichnis mehrere symbolische Links auf Dateien abgelegt werden, die in alphabetischer Reihenfolge abgearbeitet werden. Im Falle von runvdr-conf.d legt man pro zu ladendem Plugin eine eigene Konfigurationsdatei nach Vorbild der skeleton.example in /etc/runvdr/ ab. Geladen werden Plugins, deren symbolischer Link unter /etc/runvdr/conf.d liegt. Dazu muss in der runvdr.conf die passende INCLUDE-Zeile aktiviert werden. Folgende Befehle stehen zur Verf�gung, um die aktiven Plugins zu verwalten: runvdr-conf.d show [name] Zeigt alle Plugins bzw. ein Plugin an, inklusive Name und Ladepriorit�t. 'name' ist der Dateiname im Verzeichnis /etc/runvdr/. runvdr-conf.d enable name [--prio XX] Aktiviere Plugin f�r n�chsten Neustart. Verwendet Default-Priorit�t oder die angegebene Priorit�t. Dazu wird ein symbolischer Link auf die Datei /etc/runvdr/name unter /etc/runvdr/conf.d/XXname abgelegt. runvdr-conf.d disable name Deaktiviert ein Plugin ab dem n�chsten Neustart, d.h. l�scht den Link unter /etc/runvdr/conf.d/XXname. runvdr-conf.d osdserver [--debug] Verbindet mit OSD-Server Plugin und erlaubt das Konfigurieren der Plugins per VDR OSD. Von dort k�nnen Plugins aktiviert und deaktivert werden, und die Ladepriorit�t gesetzt werden. Ohne --debug kehrt runvdr-conf.d sofort zur�ck und trennt sich von der Standard-Ein/Ausgabe, kann also von der commands.conf direkt aufgerufen werden. Mit --debug wird die OSD-Server Kommunikation ausgegeben. Voraussetzungen -------------------------------------------------------------------------- Unix-Kommandos, die runvdr benutzt: Kommando Debian-Paket pgrep procps ps procps kill procps sleep coreutils date coreutils chvt console-tools getopt util-linux setterm util-linux Beispiele -------------------------------------------------------------------------- Wenn die Standardeinstellungen in /etc/runvdr.conf vorgenommen sind, hier ein paar coole Dinge, die man tun kann: Starte VDR im Hintergrund (zum Beispiel mit TERMINAL=/dev/tty8 in conf-Datei): runvdr & Stoppe VDR und das runvdr-Skript: runvdr --terminate Dito, aber warte bis VDR beendet ist: runvdr --terminate --wait Starte den bereits laufenden VDR-Prozess neu, weil er h�ngt, oder weil die runvdr.conf ge�ndert wurde: runvdr --restart Dito, aber lade auch die DVB-Treiber neu: runvdr --dvb-restart Benutze den frich neu �bersetzten VDR zum ersten mal: runvdr --vdr=/usr/src/vdr-1.5.0/vdr --lib=/usr/src/vdr-1.5.0/PLUGINS/lib Zum Debuggen, starte VDR ohne Terminalumlenkung: runvdr --terminal="" --switchterminal="" Lade alle Plugins, und zus�tzlich das hello-Plugin: runvdr -P hello Lade nur das hello-Plugin: runvdr -P- -P hello Lade alle Plugins, aber nicht das hello-Plugin: runvdr -P-hello Starte einen Testlauf von runvdr, um zu sehen was passiert: runvdr --wrapper=echo Starte eine Debugging-Session: runvdr --wrapper="gdb --args" Starte mit einer komplett abweichenden Konfiguration: runvdr --runvdr-conf="/etc/runvdr-debugging.conf"