Zeitsynchronisation mit "rdate" unter OE1.6

  • Hallo in die Runde,


    ich habe noch zwei DM800se, die ich gerne auf OE1.6 lassen würde. Ich vermisse aber das "rdate", welches bei OE2.0 drin ist (siehe unten, ich habe testweise mal das opendreambox 2.0 experimental installiert):

    Code
    root@dm800se:~# date
    Thu Jan  1 01:08:19 CET 1970
    root@dm800se:~# rdate -s ptbtime1.ptb.de
    root@dm800se:~# date
    Wed Apr 19 12:35:49 CEST 2017
    root@dm800se:~# which rdate
    /usr/sbin/rdate
    root@dm800se:~#

    Kann ich rdate vom OE2.0 Image (/usr/sbin) nehmen und unter OE1.6 ebenso nach /usr/sbin kopieren? In Filezilla wird mir rdate als Verzeichnisverknüpfung angezeigt, aber wenn man es auf den PC kopiert hat man eine 662.868 Byte große Datei... :confused_face: Ich dachte auch rdate wäre kleiner.

  • das was du kopiert hast war die busybox binary, dir fehlt der Link rdate zu busybox, wenn es kein Teil der busybox ist nutzt der Link auch nichts, probier mal busybox rdate im Telnet einzugeben, was kommt da?

  • opendreambox 1.6:

    Code
    dm800se login: root
    root@dm800se:~# busybox rdate
    rdate: applet not found
    root@dm800se:~#


    opendreambox 2.0:

    Muss ich das busybox-Binary austauschen? Aber wie, und welches nehmen? Kann ich einfach das Binary aus OE2.0 drüberkopieren, oder wurde das anders kompiliert - ansonsten hätte ich noch das busybox-Binary aus einem auf OE1.6 basierenden "Doppel-N"-Image, das wohl anders gebaut wurde (inkl. rdate).

  • im NN² ist rdate auch "nur" in der busybox integriert - also nicht als binary vorhanden


    entweder die gesamte busybox tauschen oder das rdate mipsel binary aus den debian sourcen holen, allerdings müsstest du auch die library libbsd0 von dort holen oder rdate mit statisch verlinkter libbsd0 selbst kompilieren, sonst klappt das nicht


    Code
    root@dm7020hd:~# /tmp/rdate 
    /tmp/rdate: error while loading shared libraries: libbsd.so.0: cannot open shared object file: No such file or directory
    root@dm7020hd:~#

    aber im Grunde wäre das schnell gebaut ...

    Gruß Fred

    Die Dreambox ist tot, es lebe die Dreambox

  • ich habe eine ältere mipsel Version ohne dependencies (statisch gelinkte libraries?) in meinem "Archiv" gefunden - kA woher ich die habe. Ich denke die habe ich auch unter OE1.6 verwendet
    Leider gibt es auch keine Versions Info, dürfte aber recht aktuell sein. Ist auch nur 16K groß und sollte auch im OE1.6 funktionieren ...


  • Oh super, danke - werde ich gleich morgen Vormittag testen (einfach komplett entpacken und nach /usr/sbin kopieren, Rechte 755).


    Was muss ich denn beachten, wenn ich die ganze busybox (unter /bin/busybox) tauschen will - einfach im laufenden Betrieb überschreiben?

  • es ist schon der komplette Pfad im Archiv enthalten

    Code
    root@dm800se:~# tar vtzf /tmp/rdate_mipsel.tar.gz
    drwxr-xr-x 0/0         0 2017-04-19 22:15:36 usr/
    drwxr-xr-x 0/0         0 2017-04-19 22:15:47 usr/sbin/
    -rwxr-xr-x 0/0     15996 2017-04-19 21:55:26 usr/sbin/rdate
    root@dm800se:~#


    einfach nach /tmp per FTP schieben und nach / entpacken

    Code
    root@dm800se:~# tar vxzf /tmp/rdate_mipsel.tar.gz -C /
    root@dm800se:~# ls -al /usr/sbin/rdate
    -rwxr-xr-x    1 root     root         15996 Apr 19 21:55 /usr/sbin/rdate
    root@dm800se:~#


    die busybox würde ich nicht tauschen, schon gar nicht zwischen zwei OE's
    das hochgeladene rdate ist ein vollwertiges binary, dafür brauchst du keine busybox verlinkung


    \\Edit
    schnell mal getestet, funktioniert soweit unter OE1.6 auf der dm800se

    Gruß Fred

    Die Dreambox ist tot, es lebe die Dreambox

    Einmal editiert, zuletzt von Fred Bogus Trumper ()

  • Dein rdate-Binary läuft hier unter OE1.6 auch super :thumbs_up:

    Code
    root@dm800se:~# tar vxzf /tmp/rdate_mipsel.tar.gz -C /
    usr/
    usr/sbin/
    usr/sbin/rdate
    root@dm800se:~# ls -al /usr/sbin/rdate
    -rwxr-xr-x    1 root     root        15996 Apr 19  2017 /usr/sbin/rdate
    root@dm800se:~# rdate -s ptbtime1.ptb.de
    root@dm800se:~# date
    Thu Apr 20 12:57:46 CEST 2017
    root@dm800se:~#


    Ich werde jetzt noch die Transponderzeit ausknipsen:


    • Enigma2 stoppen mit "init 4"
    • /etc/enigma2/settings editieren, Zeile einfügen: config.misc.useTransponderTime=false
    • Enigma2 wieder starten mit "init 3"


    Oh, ich merke gerade ich hab' auch kein cron, um beim Booten und in Intervallen den Zeitserver abzufragen. Fehlt das auch in meiner busybox (also doch austauschen?) oder muss ich es separat installieren (enigma2-plugin-extensions-cronmanager, auf dem Feed ist es allerdings nicht)?

    4 Mal editiert, zuletzt von _Lars_ ()

  • das busybox-cron ist im OE1.6 installiert, aber buggy


    entweder manuell fixen -> busybox-cron bug
    oder einen alternativen cronmanager installieren
    im NN² gab's ein alternatives (vixie-)cron Paket, aber die OE1.6 feeds sind nicht mehr online


    aber ich würde auf OE2.0 umsteigen, da ist der bug gefixt. nur den start beim boot mus man einmalig aktivieren.
    die SE läuft stabil mit OE2.0, wenn ein swap eingerichtet ist. Am besten läuft die SE allerdings mit Flasherweiterung oder von USB gebootet mit entpackten squashfs-images ...

    Gruß Fred

    Die Dreambox ist tot, es lebe die Dreambox

  • das busybox-cron ist im OE1.6 installiert, aber buggy


    entweder manuell fixen -> busybox-cron bug


    Danke für den wertvollen Hinweis :smiling_face: Brauchte etwas Zeit, um crontab, Cron-Daemon und die Befehle zu verstehen, aber es läuft jetzt soweit - nach Anlegen der beiden Verzeichnisse und des Symlinks (damit der crontab-Befehl funktioniert) auch unter OE1.6.
    Eigentlich bräuchte ich bloß folgende zwei Cronjobs, aber busybox-cron unterstützt offenbar keine "@"-Expressions - und das auch nicht unter OE2.0:


    @reboot /usr/sbin/rdate -s ptbtime1.ptb.de
    55 * * * * /usr/sbin/rdate -s ptbtime1.ptb.de


    Also erstellt man für ein rdate im Bootprozess stattdessen ein Script, richtig? Funktionieren Scripte nach folgendem Muster eigentlich nur für "Daemons" oder auch mit einfachen Befehlen wie rdate? Würde folgendes winziges Script funktionieren, wenn man es nach /usr/script kopiert (mit Rechten 755 und mittels Symlink als Initscript verlinkt)? Also wird das bei jedem Bootvorgang dann immer einmalig so ausgeführt und automatisch beendet, ganz ohne irgendwelche ifs und cases?

    Bash
    #!/bin/sh
    /usr/sbin/rdate -s ptbtime1.ptb.de
    exit 0
  • @reboot müsste im OE1.6 mit busybox-cron eigentlich klappten, zumindest tut es das im OE2.0


    poste mal die Ausgabe von
    ls -al /etc/rc?.d/*cron*


    womöglich startet busybox-cron zu früh


    im OE2.5 funktionert der String @reboot im busybox-cron definitiv nicht, liegt wohl init script, das von systemd gestartet wird, dass hatte ich hier auch schon vor längerer Zeit gemeldet, aber Wayne interessiert's ...


    Wenn du im OE2.5 das image mit den 2 NN laufen hast, kannst du alternativ das Paket cron vom feed installieren. cron wird über systemd gestartet und dann funktioniert u.a. auch der @reboot cronjob, das hat @kati910 netterweise gefixt


    Alternativ kannst du rdate mit systemd zeitverzögert beim Boot einmalig ausführen lassen, einfach im rdate.service den command ausführen und nicht zum systemstart hinzufügen, stattdesse einen rdate.timer erstellen, der rdate.service um 10-15 Sekunden verzögert ausführt, damit rdate nicht ausgeführt wird, bevor das Netzwerk läuft ...


    du kannst aber auch ganz auf cron verzichten und rdate über systemd periodisch ausführen lassen
    https://wiki.archlinux.org/index.php/Systemd/Timers

    Gruß Fred

    Die Dreambox ist tot, es lebe die Dreambox

    2 Mal editiert, zuletzt von Fred Bogus Trumper ()

  • ls -al /etc/rc?.d/*cron*

    Code
    root@dm800se:~# ls -al /etc/rc?.d/*cron*
    lrwxrwxrwx    1 root     root           22 Jan  1  2000 /etc/rc0.d/K20busybox-cron -> ../init.d/busybox-cron
    lrwxrwxrwx    1 root     root           22 Jan  1  2000 /etc/rc1.d/K20busybox-cron -> ../init.d/busybox-cron
    lrwxrwxrwx    1 root     root           22 Jan  1  2000 /etc/rc2.d/S20busybox-cron -> ../init.d/busybox-cron
    lrwxrwxrwx    1 root     root           22 Jan  1  2000 /etc/rc3.d/S20busybox-cron -> ../init.d/busybox-cron
    lrwxrwxrwx    1 root     root           22 Jan  1  2000 /etc/rc4.d/S20busybox-cron -> ../init.d/busybox-cron
    lrwxrwxrwx    1 root     root           22 Jan  1  2000 /etc/rc5.d/S20busybox-cron -> ../init.d/busybox-cron
    lrwxrwxrwx    1 root     root           22 Jan  1  2000 /etc/rc6.d/K20busybox-cron -> ../init.d/busybox-cron
    root@dm800se:~#


    Es interessiert ja erstmal nur der Runlevel 3 (Default-Runlevel der Dreambox, siehe Datei /etc/initab) und demzufolge der Inhalt vom Verzeichnis /etc/rc3.d:



    Ich vermute mal, dass inetd der Daemon ist, der für die Netzwerkverbindung notwendig ist und dass dieser erst nach busybox-cron gestartet wird, weil die Liste bei gleicher Startnummer sequentiell alphabetisch abgearbeitet wird. Soll ich inetd ja durch einen Eintrag in dessen Startscript z.B. auf S10 vorziehen (vor dropbear) und busybox-cron auf S21 (hinter avahi-daemon)?


    Andererseits habe ich mal


    @reboot sleep 60 && /usr/sbin/rdate -s ptbtime1.ptb.de


    getestet, sowohl unter OE1.6 also auch OE2.0, beides ohne Erfolg. Auch mit 120 Sekunden geht es nicht. Gegenprobe: Am Sleep-Kommando selbst liegt es nicht, denn


    5 * * * * sleep 60 && /usr/sbin/rdate -s ptbtime1.ptb.de


    funktioniert: Die Uhr startet nach dem Booten ja bei 01:00 Uhr und das Update findet dann um 01:06 (01:05 Uhr plus 60 Sekunden) statt. Auch


    @reboot sleep 120 && /usr/sbin/rdate -s ptbtime1.ptb.de


    geht nicht. Bei Dir funktioniert @reboot aber, hm :confused_face:

  • Wozu ich das alles damals wohl ins DVBTime Plugin eingebaut hatte ...

  • Es macht einfach mehr Spaß wenn man die Zusammenhänge versteht und es selbst zusammenbauen kann :smiling_face: Das ist es sicher auch was Dich antreibt beim Software schreiben und Du hast ja schon eine Menge nützlicher Plugins etc. auf die Leute losgelassen :grinning_squinting_face:


    Ich hoffe ich kann mein "@reboot-Problem" unter OE1.6/2.0 noch lösen, dann bin ich glücklich.

  • müsste das mal mit busycron testen
    Ich verwendeauch im OE2.0 das cron vom feed des images mit den 2N, damit klappt @reboot denfitiv


    sonst teste mal die Funktionalität so:


    Code
    @reboot /bin/touch /tmp/@reboot.works


    Wenn das file /tmp/@reboot.works nach dem reboot angelegt wurde, funktoniert der string, aber wird wohl vor dem Netzwerkstart ausgeführt, dann müsstest du im script ein delay einbauen oder den cron start zeitlich später beim boot ausführen lassen. Wenn die Datei nicht angelegt wird, wird der string @reboot gar nicht ausgeführt

    Gruß Fred

    Die Dreambox ist tot, es lebe die Dreambox

  • Wenn das file /tmp/@reboot.works nach dem reboot angelegt wurde, funktoniert der string, aber wird wohl vor dem Netzwerkstart ausgeführt, dann müsstest du im script ein delay einbauen oder den cron start zeitlich später beim boot ausführen lassen. Wenn die Datei nicht angelegt wird, wird der string @reboot gar nicht ausgeführt

    Hab's getestet - in den DMM-Images (OE1.6, OE2.0) funktionieren Strings mit @reboot definitiv nicht. Was allerdings gut funktioniert ist die von mir oben vorgeschlagene Variante per Initscript:

    Code
    # !/bin/sh
    /usr/sbin/rdate -s ptbtime1.ptb.de
    exit 0


    Script unter /etc/init.d speichern (Dateiname z.B. rdate.sh) bzw. dorthin kopieren, Rechte 755, dann noch einschalten mit folgendem Befehl (wird an Position 20 in die Runlevel 2,3,4 und 5 eingefügt (aufgrund alphabetischer Sortierung direkt hinter S20inetd, nämlich als S20rdate.sh). In die Runlevel 0,1,6 wird nichts eingefügt (also nichts zum Killen - ist ja nicht notwendig):

    Code
    update-rc.d rdate.sh start 20 2 3 4 5 .


    Löschen/Austragen kann man es hiermit:

    Code
    update-rc.d -f rdate.sh remove


    Ich habe testweise mal das Netzwerkkabel rausgezogen und die Box rebootet: Der Bootvorgang dauert nicht länger (hängt also nicht) und die Zeit stellt sich entsprechend halt auch nicht.



    Wozu ich das alles damals wohl ins DVBTime Plugin eingebaut hatte ...

    Kommt mit dem Plugin eigentlich (huckepack) ein ntpdate binary, das unter OE1.6/2.0 lauffähig ist? Leider ist die Plugin-Beschreibung nicht so detailliert (oder ich hab es nicht gefunden). Ich würde gerne das Network Time Protocol probieren :smiling_face: Oder kennt jemand eine Downloadquelle für das Binary?

    2 Mal editiert, zuletzt von _Lars_ ()

  • ist alles im Plugin ... Installieren und anschauen musst du es schon selber. Und ja ich habe sogar eine DreamOS version gemacht und es gibt einen kit und support Thread bei OoZooN. Und ich mag Fragen wie kann ich nicht nur das binary klauen nicht ... In der Zwischenzeit kenne ich 4 plugins wo das von mir vor 10 Jahren compilierte dvbtime binary drinnen ist, weil die Leute zu faul sind sich ein eigenes zu machen.