vdr start zu schnell, sogar für lokale mounts, ein wenig grundsätzlich

  • moin,


    auch bei mir: vdr & frontend (xineliboutput) startet zu früh,
    nämlich bevor die video-partition auf 2. HD gemountet ist.
    Man merkt es auch beim Starten wenn der TV an ist, es kommen sehr schnell Bild&Ton für 1sec,
    dann restartet das FE und nach 3 sec. ist dan Ton&Bild stabil da.


    Die Lösungen mit dem sleep usw. sind eher Kandidaten für die permenente Pflege (neue / zus. Plugins,
    dann geht es evt. schon nicht mehr so richtig oder ist überflüssig), darum wollte ich nach meinen
    Jugend-forscht-Ansätzen mal folgendes zur Diskussion stellen.


    Man sieht man am log, dass vdr vor mounts startet:


    Im vdr-frontend.conf im upstart wird das fe nach vdr, openbox und sound gestartet:

    Code
    start on started vdr or stopped openbox-tools or started sound-device \
         	or vdr-frontend-restart
    stop on stopping vdr or stopping openbox


    ich würde das gerne ergänzen (templated natürlich) durch das filesystems statement, damit er erst die mounts der fstab abwartet.
    Als autodidaktischer Diletant, komplett frei von upstart-Wissen, wollte ich die Profis fragen, wie der start-TEil richtig wäre.
    Aus anderen conf'S hab ich mal diese Varianten im Angebot, welche startet sicher und tut, was sie soll?

    Code
    start on (filesystem and \
          	(started vdr or stopped openbox-tools or started sound-device \
         	or vdr-frontend-restart))
    stop on stopping vdr or stopping openbox


    oder

    Code
    start on filesystem and \
          	(started vdr or stopped openbox-tools or started sound-device \
         	or vdr-frontend-restart)


    oder

    Code
    start on filesystem and \
          	started vdr or stopped openbox-tools or started sound-device \
         	or vdr-frontend-restart


    Eigentlich müsste die Bedingung durch stopped openbox-tools bereits erfüllt sein, da die erst nach openbox starten, das erst nach filesystems startet:

    Code
    start on (filesystem and \
          	started dbus and \
          	(start-xorg or stopped udevtrigger))
    stop on runlevel [!2345]


    Da das aber mit vdr-Start ver-"oder"t ist und der nicht auf filesystems wartet, zieht das nicht.
    Daher wäre evt. auch

    Code
    start on (started vdr and stopped openbox-tools and started sound-device) \
         	or vdr-frontend-restart
    stop on stopping vdr or stopping openbox


    (also and statt or) der richtigere Befehl für das frontend?
    -------###


    Statt das frontend warten zu lassen, könnte man auch den vdr auf filesystems warten ölassen:
    vdr.conf:

    Code
    start on ( (filesystems and started dbus and started udev and stopped networking) or \
           	# neu ##########
           	stopped vdr-exit-other or \
           	resume )
    stop on runlevel [!2345]


    Das wäre wahrscheinlich mein Favorit, weil es z.B. auch die Probleme der NAS-mounts in fstabs lösen würde,
    was meint Ihr?


    Und sagt nicht "probier doch einfach", das wär zu einfach ;)


    bye
    Frank

  • Hallo,
    ich bin momentan in unstable sowieso dabei dieses Upstart-Gewirr zu vereinfachen. Das mit den Mounts ist ein guter Hinweis, den Fehler hatte ich mangels seperater Platte und NFS-Mounts in der fstab auf meinen Test-Rechnern noch nie (und mein produktiv genutzer yaVDR scheint nicht schnell genug zu booten, um in den Fehler zu laufen).


    Der Upstart-Job vdr-frontend braucht die Abhängigkeit zu filesystem eigentlich nicht, sondern der Upstart-Job für den VDR.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Denke ich auch. Wenn Ihr mir ein upstart-statement dazu schickt, probier ich's gern.


    Meine beiden VDR sind da auch unterschiedlich. Der mit der "schnellen" Samsung SSD hat das Problem nicht, der mit der "langsamen" Kingston SSD hat es. Allerdings hat der VDR mit der Kingston eine GT620, da ist der X-Server superfix oben, der braucht mit der GT430 sichtbar länger. (Darum wäre auch eine sleep-Lösung für die beiden unterschiedlich oder für beide lange.)


    Bye
    Frank

  • sind dann damit auch alle auf der sicheren Seite die jetzt nicht den Linker verwenden und klassisch /srv/vdr über fstab einlinken? - dann wäre es ja universell hilfreich ;)


    Christian

    CKone: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G540, 2x 2GB Kingston DDR3, Zotac GT630 1GB, S2-1600, Ocz Agility 3 60GB, LG GH24NS DVD, 15.6" Selbstbau TFT, Harmony 665, CIR Selbstbau - das Ganze im Silverstone SST-SG03B
    CKtwo: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G1610, 2x 2GB Corsair DDR3, Zotac GT630 1GB, TT S2-1600, Ocz Vertex 2 50 GB, 92 Kanal Seduatmo, Harmony 665, atric USB
    CKthree: yavdr-ansible/22.04 LTS/2.6.1/kodi19.3 auf Intel NUC, Celeron J4005, UHD Graphics 600, 4GB Crucial DDR4, Ocz Vertex2 50 GB, Harmony 350

    PowerEdge: Ubuntu Server 16.04 LTS / VDR 2.4.1 auf Dell PowerEdge T20, Xeon E3-1225 v3, 16GB ECC DDR3, 2x Cine S2 V6 mit Duoflex, Samsung 840 EVO 120GB, 3x WD White WD80EZAZ 8TB in SW Raid5



  • http://upstart.ubuntu.com/cookbook/#filesystem
    "filesystem" kommt, wenn alle Mounts durch sind, das betrifft ja nur die fstab, oder? Der avahi-linker hat damit eigentlich nichts zu tun (vermute ich).


    Ein "filesystem and" vor das "started dbus" innerhalb der Klammer ist ok, aber "filesystem", nicht "filesystems".
    Gab's das eigentlich auch schon bei Upstart 1.6? Oder braucht man Upstart 1.8 dafür?


    Lars.

  • ok, denke du hat mich missverstanden

    Zitat

    die jetzt nicht den Linker verwenden


    aber passt schon ;)


    Christian

    CKone: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G540, 2x 2GB Kingston DDR3, Zotac GT630 1GB, S2-1600, Ocz Agility 3 60GB, LG GH24NS DVD, 15.6" Selbstbau TFT, Harmony 665, CIR Selbstbau - das Ganze im Silverstone SST-SG03B
    CKtwo: yavdr-ansible/18.04 LTS/2.4.1/kodi18 auf Intel DH67BL, Intel Celeron G1610, 2x 2GB Corsair DDR3, Zotac GT630 1GB, TT S2-1600, Ocz Vertex 2 50 GB, 92 Kanal Seduatmo, Harmony 665, atric USB
    CKthree: yavdr-ansible/22.04 LTS/2.6.1/kodi19.3 auf Intel NUC, Celeron J4005, UHD Graphics 600, 4GB Crucial DDR4, Ocz Vertex2 50 GB, Harmony 350

    PowerEdge: Ubuntu Server 16.04 LTS / VDR 2.4.1 auf Dell PowerEdge T20, Xeon E3-1225 v3, 16GB ECC DDR3, 2x Cine S2 V6 mit Duoflex, Samsung 840 EVO 120GB, 3x WD White WD80EZAZ 8TB in SW Raid5



  • Ich finde diese Diskussion hier bzg. NAS Einbindung sehr gut. Ich habe 2003 mit meinem ersten VDR angefangen, damals hat man noch 2 bis 4 Platten verbaut um ordentlich Speicher zu bekommen :) Aber mittlerweile nutzen ja immer mehr ein NAS und auch SSD's etc so dass ich denke das eine saubere NFS Anbindung sicherlich viel Frust vermeidet.


    Wie sieht das denn überhaupt aus, ich habe ja die letzten Jahre eine Reelbox gehabt, soweit ich das sehen kann wurde das NAS nicht mittels fstab eingebunden. Ich glaube die haben am Ende irgendein Plugin oder Script genutzt. Man braucht ja nicht zwingend eine OSD Lösung für die Anbindung. Ich denke das Augenmerk sollte wirklich darauf liegen dass die Verbindung dauerhaft stabil zustande kommt damit Timer-Aufnahmen vernünftig laufen oder nicht?

  • Die hier angesprochene Lösung hat nichts mit dem OSD zu tun, sondern greift in den Bootprozess ein. Eine "OSD-Lösung" wäre auch nicht das, was ich haben wollen würde.
    Keine Ahnung wie die Reelbox das gemacht hat, aber natürlich gibt es mindestens tausend Varianten und Möglichkeiten.
    Ein Plugin kann ich mir nicht vorstellen, denn dann läuft der vdr ja schon. Obwohl, man kann natürlich ein Plugin schreiben, dass während der Initialisierung so lange wartet, bis ein bestimmtes Ereignis eingetreten ist, dann läuft man aber Gefahr, den vdr-Watchdog auszulösen (wenn man ihn benutzt).


    Und "irgendein Script" wäre auch nichts anderes als ein upstart-Job, der den vdr-Start verzögert bzw. der vdr-Job direkt, der gewisse Warteschleifen drin hat (was auch immer die Reelbox für einen Startmechanismus benutzt hat, keine Ahnung).


    Ich vermute stark, dass die oben angesprochene vdr-Job-Modifikation mit "filesystem" für die NAS-Aufnehmer mit fstab-Einträgen das richtige ist.


    Lars.

  • Habe genau das, /srv ist auf sda3, /mnt/sdb7/video ist auf /srv/vdr/video.00 verlinkt.
    Also fstab mounting, Netz geht über avahi, das beste System für Vernetzung, das ich kenne.
    (Habe mein NAS avahi-fit gemacht, er exportiert ein VDR-dir, wie findet man hier im Forum)


    Mit filesystem im start-on wartet der vdr auf Netz-Mount's aus der fstab.
    wenn das nicht sein soll (weil dann könnte sein, dass der vdr nicht startet, wenn der Netz-Mount nicht da ist),
    sollte man local-filesystems eintragen, schaut mal auf den Link von mini73, da steht ein sehr gutes Bild dazu drin.


    Probiere heute Abend vdr.conf aus mit

    Code
    start on ( (filesystem and started dbus and started udev and stopped networking) or \
           	### neu ##########
           	stopped vdr-exit-other or \
           	resume )


    Schau'n mer mal.
    bye
    frank

  • moin,


    geht wie's Brezelbacken.
    Der Flackereffekt ist weg, Rechner startet sehr schnell hoch,
    Bild&Ton sind nach weniger als 10sec stabil da, ohne die Unterbrechung,
    die sich vorher immer zeigte.


    Laut log startet allerdings das frontend immer noch zu früh:


    Zumindest gibt es Kontaktversuchsmeldungen (5* 252er Meldung, aller kein terminating wie vorher) bevor der VDR log-Einträge liefert.
    Mir scheint, der upstart-job vdr.conf meldet "startet", aber der vdr-daemon braucht natürlich Zeit,
    bis er xineliboutput-kontakt-fähig ist, aber das frontend startet schon wg. des "started" des
    upstart-scriptes.
    Is nich schlimm, nur bei vielen Plugins und vielen Aufnahmen könnte das dauern.
    Ein sleep 1 vor dem exit im vdr.con evt.?

    Code
    export HOME=/var/lib/vdr
    
    
    exec $DAEMON -v $VIDEO_DIR -c $CFG_DIR -L $PLUGIN_DIR -r $REC_CMD -s $VDRSHUTDOWN -E $EPG_FILE -u $USER -g /tmp --port $SVDRP_PORT $OPTIONS "${PLUGINS[@]}" $REDIRECT 
    sleep 1
    ## neu ##
    end script


    Oder andere start-bedingungen für das frontend?


    Danke jedenfalls für Eure Inputs, startet jetzt viel angenehmer und
    sollte auch eine Lösung sein für alle, die ein Netz-Laufwerk in der fstab mounten..


    Bye
    Frank

  • "Eigentlich" (TM) darf vdr-frontend gar nicht vor dem vdr starten. Wie sieht /etc/init/vdr-frontend.conf aktuell bei dir aus?


    Lars.

  • Und schau mal in die /var/log/upstart/vdr-frontend.log (da sieht man z.B. wenn das wait-for-job-state nicht klappt, das wir hoffentlich bald loswerden)

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Die ganz normale Standard vdr-frontend.conf von yavdr.
    Startet mit

    Code
    start on started vdr or stopped openbox-tools or started sound-device \
         	or vdr-frontend-restart
    stop on stopping vdr or stopping openbox


    Meine These:
    vdr.conf-script startet daemon und beendet sich
    => Meldung vdr startet wird getriggert und frontend kriegt signal
    => frontend startet
    parallel fährt vdr hoch, braucht aber Zeit zum Laden des plugins für frontend,
    daher erst dann der Kontakt möglich (was wohl nach start frontend ist
    => frontend braucht start-signal erst, wenn auch plugin geladen und kontaktfreudig.


    bye
    Frank

  • hier die frontend.log:


    Leider keine Zeitmarken drin, daher hab ich meine Vermutungen eingefügt.


    Er wartet erst 5-mal auf dbus-Verbindung zum VDR, dann noch einmal ein wait-for-job-state.
    bye
    frank


  • vdr.conf liefert das "started"-Signal erst, wenn dbus2vdr das erste mal vom mainloop aufgerufen wird.
    Bis dahin sollten alle Plugins vollständig initialisiert sein, sonst sind sie "defekt".


    Vermutlich geht irgendwas beim Warten auf openbox oder so schief. Vielleicht hilft das frontend-Log.


    Lars.


  • Also gedacht war es so:
    Der VDR startet und das dbus2vdr-Plugin setzt sobald der VDR die Mainloop erreicht ein SIGSTOP ab, das vom Upstart-Job vdr.conf als Signal erwartet wird, dass der Dienst gestartet wurde. Dadurch setzt Upstart dann das Signal "started vdr" ab.


    Der vdr-frontend.conf Upstart Job hat bislang einen ziemlich verworrenen Start-Mechanismus. Er beginnt mit dem Start, wenn entweder "started vdr", "stopped openbox-tools" oder "started sound-device" erreicht wurde und soll dann mit Hilfe von wait-for-job-state.conf auf die übrigen Upstart-Jobs warten (weil man bei Upstart nicht so einfach sagen kann "Starte einfach immer dann, wenn alle Kriterien erfüllt sind", weil das z.B. nach einem Crash des VDR durch ein Plugin Probleme machen würde, da ja dann nach dem Restart des VDR nur das Signal "started vdr" gesendet wird...


    Code
    start: You do not have permission to modify job: wait-for-job-state
    start: You do not have permission to modify job: wait-for-job-state
    start: You do not have permission to modify job: wait-for-job-state


    Und genau hier liegt eines der Probleme - wait-for-job-state kann offenbar nicht wie gedacht aufgerufen werden.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Das ist ja merkwürdig. Werden die Jobs nicht als root aufgerufen?


    Mach mal bitte ein "grep wait-for-job-state /etc/init/*"...


    Lars.

  • start: You do not have permission to modify job: wait-for-job-state
    start: You do not have permission to modify job: wait-for-job-state
    start: You do not have permission to modify job: wait-for-job-state


    Werden die Jobs nicht als root aufgerufen?


    Mit xineliboutput und xine offenbar nicht:
    https://github.com/yavdr/yavdr…_xineliboutput-01-cs-sxfe
    https://github.com/yavdr/yavdr…/25_xine-03-setuidgid-vdr


    Das ist ja gut gemeint (und prinzipiell sinnvoll), passt aber nicht zum Weg über wait-for-job-state, weil ja dann der ganze Upstart-Job im Kontext des Users vdr ausgeführt wird.


    FJe: wie bastel- und experimentierfreudig bist du? Wenn du willst können wir das mal ausgehend von dem Stand in unstable-yavdr mit meinem neuen Ansatz, der ohne root-Rechte und wait-for-job-state auskommt probieren.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

Jetzt mitmachen!

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