ArchLinuxARM/systemd: Wie VDR erst nach NTP-Zeitsynchronisierung starten?

  • Hallo,


    ich möchte meinen Raspberry Pi als Streaming-Client benutzen und habe auf einer SD-Karte Arch Linux und den VDR aus dem VDR4Arch-Repository installiert. Das rpihddevice-Plugin habe ich selbst kompiliert. Das funktioniert soweit auch ziemlich gut, allerdings gibt es noch ein paar kleinere Probleme.


    Da der Raspberry Pi ja keine Echtzeituhr besitzt, sind Datum und Uhrzeit beim Booten zunächst falsch. Leider wird der VDR gestartet, bevor der Pi die korrekte Zeit erhält. Das hat zur Folge, dass der VDR denkt, dass die Inaktivitätszeit abgelaufen sei und sich der VDR nach 5 Minuten ausschaltet.
    Unschön ist auch, dass der VDR nach dem Booten zunächst "Kanal nicht verfügbar" meldet, weil das Netzwerk noch nicht bereit ist, wenn der VDR startet.


    Ich habe bereits in /usr/lib/systemd/system/vdr.service die verschiedensten Sachen hinzugefügt wie After=network.target, After=network-online.target oder Requires=time-sync.target - leider alles ohne Erfolg.
    Ich kenne mich als Gentoo-Nutzer mit systemd aber auch nicht sonderlich aus. Weiß jemand Rat?

  • Ich habe bereits in /usr/lib/systemd/system/vdr.service die verschiedensten Sachen hinzugefügt wie After=network.target, After=network-online.target oder Requires=time-sync.target - leider alles ohne Erfolg.
    Ich kenne mich als Gentoo-Nutzer mit systemd aber auch nicht sonderlich aus. Weiß jemand Rat?


    In /usr/lib/systemd hat der User schonmal gar nix verloren :D Deine Anpassungen sollten in /etc/systemd/system/vdr.service.d passieren. (systemd Drop-In)


    Ich habe das gerade mal überprüft. Das time-sync.target scheint wohl nur zu funktionieren, wenn man systemd-timesyncd verwendet. Das liegt hier aber weniger an systemd, sondern vielmehr daran, dass das ntpd.service File falsch ist. Gut, das ist dann wohl so. systemd-timesyncd ist eh viel besser.
    Mit den network Targets sieht es nicht viel besser aus. Mit systemd-networkd sollte es problemlos funktionieren. Mit allen anderen hängt es vom entsprechenden Entwickler ab.


    Das ganze ist auch irgendwie blöd gelaufen. network.target drückt nicht aus, dass jetzt auch Netwerk verfügbar ist, sondern nur, dass sich jemand ums Netzwerk kümmert. Erst network-online.target zeigt an, dass auch Netzwerk verfügbar ist. Das wird aber wieder nicht überall sauber implementiert.

  • Vielen Dank für die Antwort und die Erklärungen!


    Ich habe "systemctl enable systemd-timesyncd" ausgeführt und in /etc/systemd/system/vdr.service.d/ eine Datei mit dem Inhalt

    Zitat

    [Unit]
    Requires=time-sync.target

    angelegt. Leider funktioniert es damit aber auch nicht.


    Jetzt wird zwar vor dem VDR-Start die Zeiteinstellung angepasst, allerdings wird nur ein alter Zeitstempel vom letzten Systemstart gesetzt und die aktuelle NTP-Zeit erst nach dem VDR-Start. Hier mal ein Logauszug dazu:


    Ich bin unterdessen auf http://www.vdr-wiki.de/wiki/index.php/VDR4Arch#Auf_das_Netzwerk_warten gestoßen. Wenn ich danach vorgehe, funktioniert alles wie gewünscht. Oder ist das keine gute Lösung? Im Wiki steht, dass das veraltet ist.


    Zu Beginn des Bootvorgangs kommt außerdem noch die Warnmeldung:

    Zitat

    Jan 01 01:00:04 alarmpi systemd[1]: [/etc/systemd/system/vdr.service.d/wait-for-devices.conf:2] Failed to add dependency on dev-dvb-adapter*-*.device, ignoring: Invalid argument
    Jan 01 01:00:04 alarmpi systemd[1]: [/etc/systemd/system/vdr.service.d/wait-for-devices.conf:3] Failed to add dependency on dev-dvb-adapter*-*.device, ignoring: Invalid argument


    Bekommt man die irgendwie weg? Ich habe schon versucht, die Datei /etc/systemd/system/vdr.service.d/wait-for-devices.conf zu löschen, aber die Datei wird immer wieder neu angelegt.

  • Es gibt in U-Boot anscheinend eine Option, schon beim Booten einen NTP-Server zu kontaktieren. Das soll SNTP (Simple NTP) heißen: http://lxr.missinglinkelectronics.com/#uboot/doc/README.SNTP


    Ich bin vor ein paar Tagen beim Aktualisieren meines U-Boots auf meinen Kirkwood-Boxen darauf aufmerksam geworden: http://forum.doozan.com/read.php?3,12381


    Ich weiß nicht, wie neu U-Boot für den Raspberry Pi ist?


    Viele Grüße
    hepi


    P.S.: Warum ist dieser Thread eigentlich nicht im ARM-Unterforum?

  • Da der Raspberry Pi ja keine Echtzeituhr besitzt, sind Datum und Uhrzeit beim Booten zunächst falsch.


    RTC Clock nachrüsten ist nicht schwer und kostet fast nix --> [Raspberry Pi] RTC Hardware Uhr nachrüsten


    wenn man die Initialisierung recht früh in den Bootprzess einbindet, haben sogar die Bootmeldungen eine vernünftige Zeit. Und man spart auch die Zeit, die ntp verbraucht.

  • Es gibt in U-Boot anscheinend eine Option, schon beim Booten einen NTP-Server zu kontaktieren. [...]


    Danke für den Hinweis. Aktuell scheint es noch keine einfach Möglichkeit zu geben, dies zu nutzen. Werde ich aber im Hinterkopf behalten.

    P.S.: Warum ist dieser Thread eigentlich nicht im ARM-Unterforum?


    Ich habe den Thread hier erstellt, da es ja eigentlich eine generelle Frage zu systemd und nicht zwangsläufig auf Arch Linux ARM beschränkt war.




    Das bezieht sich nur auf das dhcpcd. Da wollte ich demnächst mal systemd-networkd erklären.


    OK, danke. Dann kann ich das ja so belassen.


    Lass mich raten... Sundtek?


    Nein, am Raspberry Pi hängt gar keine DVB-Hardware. Ich nutze nur das streamdev-Plugin.



    RTC Clock nachrüsten ist nicht schwer und kostet fast nix --> [Raspberry Pi] RTC Hardware Uhr nachrüsten


    Danke. Das passt aber nicht in mein Gehäuse. Mit der falschen Zeit bei den frühen Bootmeldungen und einem etwas längeren Bootvorgang durch das NTP-Update kann ich auch gut leben.

  • Nein, am Raspberry Pi hängt gar keine DVB-Hardware. Ich nutze nur das streamdev-Plugin.


    Huch. Dann will ich erstmal nicht ausschließen, dass das mein Fehler ist.
    Ich schaue es mir mal an.


    Edit:


    Kannst du mir mal die /etc/systemd/system/vdr.service.d/wait-for-devices.conf hier anhängen?


    Zusätzlich wäre noch interessant ob es bei dir im Systemd unter /dev/dvb irgendwelche adapter* gibt


    Edit2: Vegiss es. Ich habs gefunden. Ist mein Fehler :P Mal sehen, wie ich das am elegantesten repariere.


    Edit3: Gefixt. Bitte updaten.

Jetzt mitmachen!

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