Neues X server Handling in der runvdr-extreme. Bitte um Tester.

  • 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:


    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:


    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.

  • Habe gerade einmal von einer alten Version auf die noxinit geupdatet. Die neue X-Server Initialisierung funktioniert bei mir Problemlos in Kombination mit softhddevice. Ob das ganze schneller ist als mit xinit kann ich allerdings nicht beurteilen, da der Rechner dank SSD doch recht flott ist.


    Gruß,
    Markus

  • Mit SSDs liegt das wohl im Millisekunden-Bereich. Aber das man zwei Prozesse spart macht das ganze extrem interessant.


    Läuft hier übrigens auch problemlos. Wahrscheinlich ist es Einbildung aber ich glaube das es trotz SSD merklich schneller ist.

  • Hab jetzt auch mal das Script installiert. Grundsätzlich funktioniert auch alles. Auch der X-Server startet.


    Hab ein paar Fragen dazu:


    Prüft runvdr jetzt alle paar Sekunden, ob der VDR noch läuft, oder woher kommen die Meldungen?



    Wie kann ich beim Start mit X die .xinitrc ausführen? Dort starte ich derzeit fluxbox und fluxbox wiederum das Frontend (softhddevice atta).Oder gibts da eine bessere Lösung?

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Zu den Meldungen kann ich dir nichts sagen.


    runvdr-extreme greift auf jedem Fall nicht auf SVDRP zu.


    Was dein "Frontend starten" angeht kannst du auf "XSTARTUP" zurückgreifen (man runvdr oder die Example-Config danach durchsuchen). Das ist genau dafür gedacht. Mit "XSHUTDOWN" kannst du ggf. auch ein Frontend wieder abschießen. Ein Beispiel ist in der "example-Config" vorhanden.


    Wobei es in deinem Fall wohl sogar noch einfacher geht: Starte softhddevice einfach nicht detached. Dann findet es seine Verbindung ganz alleine. Mache ich so.

  • Dann frag ich mich aber, was sich alle 5 Sekunden per svdrp verbindet, seitdem ich runvdr-extreme installiert habe.


    Kann da auch ein exec startfluxbox rein?

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Ein "exec" sollte da nicht rein, denn das würde die runvdr-extreme wohl recht zuverlässig abschießen ;)


    Versuche doch einfach mal nur "startfluxbox" dort hinzuschreiben. Und beachte, dass alles, was du dort hinschreibst, als "root" läuft. War mit deiner .xinitrc-Lösung aber auch schon so.


    Um ein "XSHUTDOWN" musst du dich dann vermutlich garnicht kümmern, denn so wie ich den xinit-Source in Erinnerung habe, wird dort auch nicht aufgeräumt. Das "fluxbox" stirbt einfach deshalb weg, weil die X-Verbindung flöten geht.

  • Noch ne Idee zu svdrp? Irgendwie hab ich das erst, seit dem ich runvdr-extreme installiert habe. Oder liegts am Loglevel 3, dass das noch nie aufgefallen ist? Mittlerweise verbindet es sich sekündlich.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Zum Thema ".xinit" ist mir noch eingefallen: Wenn du "/root/.xinit &" in die "XSTARTUP"-Funktion schreibst, dann sollte dein alter Stand wieder erreicht sein (.xinit wird wieder aufgerufen).


    Was SVDRP angeht: Kann schon sein, dass es am Loglevel liegt. Dazu musst du unabhängig von runvdr-extreme suchen, denn die greift ganz sicher nicht auf SVDRP zu.


    Die Verbindungen kommen von lokal. Hast du vielleicht vdradmin-am oder ähnliches laufen?

  • Ich meine,ich hatte das schonmal, weiss aber nicht mehr, warum. Hab nun wieder auf mein altes init umgestellt und sehe die Meldungen nicht mehr. Muss da morgen nochmal schauen.


    Sind jeweils lokale Verbindungen...aber woher?! Svdrpservice?! Ansonsten läuft da nichts der gleichen. Hm.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Funktioniert, soweit ich das über Live beurteilen kann, einwandfrei. Der Start kommt mir zumindest auf der Konsole auch schneller vor. Ich muss heute Abend mal schauen, wie sich das direkt am Gerät bemerkbar macht.


    Gruß
    iNOB

  • Warum muss man da überhaupt eine künstliche Abhängigkeit des VDR vom X-Server erzeugen, wenn man das mit den Mitteln von Systemd oder jedem anderen Start-System schön modularisiert aufbauen kann und den Ausfall von Teildiensten möglichst gut verkraftbar macht anstatt da ein komplexes Shell-Skript drüber zu stülpen, das ein single point of failure werden kann?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Bei mir konnte ich bisher keine Probleme feststellen, auch nicht bei Timer gesteuerten Aufnahmen. Die Startzeit bis zur Anzeige des laufenden TV Bildes dauert mit der alten Variante 1 Minute 7 Sek., mit der neuen Variante 1 Minute 6 Sekunden. Beides gemessen auf einem Festplattensystem (siehe Signatur) und mit softhddevice als Ausgabe-Plugin auf ARD HD. Eine Zeitersparnis ergibt sich beim Start nicht, zumindest nicht im "fühlbaren" Bereich. Insgesamt sieht Start, Stop oder Neustart, wenn die Konsolenausgabe auf dem TV sichtbar ist, sauberer aus. Für mich ein Schritt in die richtige Richtung.


    Thx
    iNOB

  • Sagen wir's so: Wenn man seinen VDR sowohl von der Hardware als auch von der Software her auf "Startgeschwindigkeit" getrimmt hat, dann kann die eine Sekunde doch schon einen fühlbaren und auch messbaren Unterschied machen.


    Zum Problem von Copperhead habe ich Logdaten ausgewertet. Was genau passiert ist, kann nur noch schwer mit 100%iger Sicherheit reproduziert werden. Allerdings hat sich der VDR im Vorfeld mehrfach selbst über den Watchdog zerlegt. Da war also schon im Voraus etwas faul.


    Die Fehlermeldung von X sagt dann letztlich aus, dass entweder schon eine Instanz läuft oder ein Lock-File unter /tmp liegen geblieben ist. Was von beiden der Fall war, ist natürlich nicht mehr nachvollziehbar. In welchen Situationen ein X-Server das "SIGTERM" ignoriert kann ich jetzt auch schlecht abschätzen. Fakt ist aber: Wenn man wirklich zum "SIGKILL" greifen muss, dann müsste man das besagte Lockfile in der runvdr wohl selber wegräumen.


    Was ich aber aktuell überlege: Macht es denn Sinn es optional zu ermöglichen den X-Server unabhängig vom VDR stehen zu lassen? Also z.B. eine neue Konfigurations-Option, die, wenn gesetzt, nurnoch den VDR neustartet und den X-Server über die gesamte Laufzeit stehen lässt?


    Gestartet kriegt man einen sauber konfigurierten X-Server eigentlich immer. Sollte also keine Fehlerquelle sein. Und ich kann mich aktuell an keinen Fall erinnern in dem ein X-Server-Neustart irgendein Problem gelöst hätte. Oder doch?


    Und was die Anmerkung von seahawk1986 angeht: X server starten ist eines von vielen Features der runvdr-extreme. Man kann das nutzen, muss aber nicht. Die Idee ist es, eine einfache Lösung zu schaffen, um den VDR möglichst überall zu starten.


    Nachtrag: Wenn der X-Server stirbt (simuliert), dann hat das durchaus negative Folgen für den VDR. Soll heißen: Nach kurzer Zeit gibt der VDR den Löffel ab (softhddevice). In der aktuellen Konstellation fängt die runvdr den Fall irgendwann auf und stellt wieder einen sauberen Stand her. Sollte also wohl besser so bleiben. Den Fehler, dass ein X-Server stehen bleibt und nicht wieder kommt, kann ich aktuell nicht reproduzieren, also an alle: Bitte weitertesten.

  • Hallo,


    nach Tausch der runvdr 0.5.0 mit runvdr noxinit startet der VDR mit X gar nicht mehr. Mit der 0.5.0 klappt alles tadellos.
    Muss ich ggf. noch etwas anpassen (*.conf)? Meine Config habe ich mal angehangen.


    Marcus

    Dateien

    My VDRs:

  • Tausche


    Code
    XSERVER="/usr/bin/X -nolisten tcp :0 >> /var/log/vdr/runvdr.log 2>&1"


    durch


    Code
    XSERVER="/usr/bin/X -nolisten tcp :0"


    Der String wird nicht mehr durch eine Shell interpretiert. Deshalb bitte keinerlei Shell-Syntax an der Stelle! Der X-Server loggt selber nach /var/log/Xorg.0.log. Du musst die Ausgabe also nicht weiterleiten!

  • Hallo,


    heute habe ich nun doch ein Problem mit der "neuen" Version ggü. der 0.5.0 festgestellt:


    Ich nutze über das VDR-Menü die Möglichkeit XBMC zu starten - XBMC stürzt mit der o.g. Version jedoch kurz nach dem Start ab.


    Zur Fehlersuche habe ich das Umschalten auf XBMC im VDR manuell simuliert:
    - svdrpsend plug softhddevice susp oder svdrpsend plug softhddevice deta
    => Absturz des VDR mit:
    Jan 5 14:14:26 macvdr kernel: [ 6577.524108] vdr[10764]: segfault at b16bb17b ip b16bb17b sp 91eff230 error 14 in libnss_compat-2.13.so[b1d9c000+6000]


    Da XBMC kurz vor dem Absturz gestartet wird, führt dies natürlich zu einem XBMC Absturz, da der X-Server beim Neustarten des VDR (Nach dem Absturz) weg ist.


    Kann jemand das Problem nachvollziehen?


    Tausche ich das runvdr (gleiche runvdr.conf) gegen das alte aus, klappt alles.

    My VDRs:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!