Aktuell arbeite ich an meiner ersten großen Änderung der runvdr-extreme.
Bisher wurde ein System, welches auf einem X-Server ausgibt, vereinfacht so gestartet:
- runvdr-extreme liest die runvdr.conf und die Befehlszeilen-Parameter.
- Die fertige VDR-Befehlszeile wird in eine "Proxy-Datei" gespeichert (unter /tmp).
- Die erste runvdr-Instanz startet über xinit eine zweite runvdr-Instanz und übergibt den Pfad zur "Proxy-Datei"
- Die zweite Instanz liest die VDR-Befehlszeile und startet den VDR. Nun mit gestartetem X-Server.
- Die zweite Instanz schreibt dann die PID vom VDR wieder zurück in die Proxy-Datei um diese an die erse Instanz zu übermitteln.
Ein "systemd status" zeigt an, wieviele Prozesse hier involviert sind:
# systemctl status vdr
vdr.service - Video Disk Recorder
Loaded: loaded (/usr/lib/systemd/system/vdr.service; enabled)
Drop-In: /etc/systemd/system/vdr.service.d
`-wait-for-devices.conf
Active: active (running) since Tue 2013-10-29 16:54:09 CET; 2min 18s ago
Main PID: 495 (runvdr)
CGroup: /system.slice/vdr.service
|-495 /bin/bash /usr/bin/runvdr
|-603 xinit /usr/bin/runvdr --xserver-proxy=/tmp/runvdr-495 -- /us...
|-604 /usr/bin/X :0 -nolisten tcp
|-607 /bin/bash /usr/bin/runvdr --xserver-proxy=/tmp/runvdr-495
`-618 /usr/sbin/vdr -g /tmp -l 2 --lirc -P softhddevice -a hw:NVid...
Alles anzeigen
Mein neuer Code, den Interessierte hier finden können
http://projects.vdr-developer.…treme.git/tree/?h=noxinit
startet den X-Server selber, wartet selber bis dieser bereit ist, setzt dann eine DISPLAY-Variable und startet aus der gleichen Instanz den VDR. Diese Lösung ist nicht nur einfacher nachvollziehbar, und damit leichter wartbar, sondern auch potentiell schneller beim Aufstarten. Unter systemd sieht ein mit der neuen Variante gestarteter VDR so aus:
# systemctl status vdr
vdr.service - Video Disk Recorder
Loaded: loaded (/usr/lib/systemd/system/vdr.service; enabled)
Drop-In: /etc/systemd/system/vdr.service.d
`-wait-for-devices.conf
Active: active (running) since Tue 2013-10-29 16:57:49 CET; 2min 4s ago
Process: 664 ExecStopPost=/usr/lib/vdr/bin/gen-sddropin (code=exited, status=0/SUCCESS)
Main PID: 694 (runvdr)
CGroup: /system.slice/vdr.service
|-694 /bin/bash /usr/bin/runvdr
|-770 /usr/bin/X -nolisten tcp
`-774 /usr/sbin/vdr -g /tmp -l 2 --lirc -P softhddevice -a hw:NVid...
Alles anzeigen
Ich wäre dankbar wenn einige die neue Variante testen könnten. Schön wäre, wenn auch Leute testen könnten, die garkeinen X-Server verwenden (Fullfeatured). Eigentlich sollte alles wie zuvor funktionieren.