Woher bekommt der Raspberry Pi die Zeit?

44

Ich muss die Uhr (außer der Zeitzone) auf dem Raspberry Pi nicht einstellen. Woher kommt die Zeit? Wie genau ist es?

Scoop
quelle
Bei Neuinstallationen wird die Zeit von einer Vielzahl von Quellen abgeholt. Einzelheiten und den Grund, warum Sie es in time.nist.gov ändern sollten, finden Sie in den folgenden Fragen und Antworten: raspberrypi.stackexchange.com/questions/68811/…
SDsolar,

Antworten:

45

Raspbian bezieht die Uhrzeit von einem NTP-Server (einem "Zeitserver").

Ziehen Sie den Stecker Ihres Raspberry Pi vollständig heraus, ziehen Sie das Netzwerkkabel heraus und starten Sie den Raspberry Pi erneut. Sie werden feststellen, dass Datum und Uhrzeit nicht korrekt sind.

Wenn Sie wollen / müssen das Datum und die Uhrzeit nicht zurückgesetzt werden , ohne in das Internet angeschlossen ist, müssen Sie eine Real Time Clock (RTC) - zum Beispiel so etwas wie diese - die die Zeit aktuell halten wird, durch Verwendung einer Batterie eine Uhr laufen lassen. Auf diese Weise behält Ihr Computer auch die Zeit bei, wenn er nicht mit Strom versorgt wird.

UPDATE Nur eine Randnotiz, dass die obige RTC-Uhr nicht die einzige Möglichkeit ist, die Zeit zwischen den Stromausfällen genau zu halten. Sie können auch ein GPS-Modul verwenden und dieses an die GPIO-Pins anschließen.

Genauigkeit Es ist ziemlich genau, obwohl die Zeit Ihrer Uhr um einiges abweicht. Die Korrektur kann bis zu 3 Stunden dauern, da Änderungen vom Server nach und nach auf Ihre lokale Uhr angewendet werden. Die Netzwerkstabilität hat den größten Einfluss auf die Genauigkeit, da ein unvorhersehbares Netzwerk (etwas kabelloseres wie 3G ) es sehr schwierig macht, genau zu sein. Einfach ausgedrückt: Die Genauigkeit ist ziemlich gut, der Zeitunterschied zwischen Ihrem Computer und der tatsächlichen Zeit (vom NTP-Server) beträgt normalerweise weniger als 100 ms .

Vincent P
quelle
1
gute Antwort. danke für den Link zur Hardware-Uhr
Scoop
1
Gute Antwort; Es könnte verbessert werden, indem die Genauigkeit des NTP-Protokolls erwähnt wird.
Alex Chamberlain
@AlexChamberlain Danke für das Heads-Up, ich wollte es hinzufügen, aber es ist mir völlig durch den Kopf gegangen. Ich habe es jetzt hinzugefügt.
Vincent P
Während mein Pi mit dem Netzwerk verbunden ist, stelle ich fest, dass die Zeit jetzt um 30 Minuten verstrichen ist. Ist der NTPD standardmäßig aktiviert oder muss ich dies manuell tun?
Andig
Vielleicht ist es so, bis Raspberry Pi 3. Ich habe vor zwei Monaten einen gekauft und das NTP-Zeit-Update ist fertig, zumindest bei der offiziellen Raspbian Jessie. Ich habe drei Threads mit diesem Problem eröffnet und alle sind ahnungslos. Ich musste mir ein Hardwaremodul kaufen, um das Problem zu lösen.
Pygmalion
21

Morgans Antwort gab mir den Hinweis, den ich brauchte, um das Problem zu lösen.

  1. Gehen Sie zu http://support.ntp.org/bin/view/Servers/NTPPoolServers.
    Wählen Sie Ihre Region aus, dann wird Ihr Land und eine Liste der Server angezeigt.

  2. Bearbeiten Sie Ihre Datei /etc/ntp.conf, z

    sudo vim /etc/ntp.conf

    Ersetzen Sie die Liste der Server durch die Liste, die Sie auf der Webseite gefunden haben. z.B

    server 0.dk.pool.ntp.org iburst
    server 1.dk.pool.ntp.org iburst
    server 2.dk.pool.ntp.org iburst
    server 3.dk.pool.ntp.org iburst

    Speichern und schließen.

  3. Starten Sie den NTP-Deamon neu.

    sudo /etc/init.d/ntp neu starten

  4. Überprüfen Sie, ob das Datum korrekt ist.

    Datum
    Do 20.06. 13:39:20 MESZ 2013

Auf einem meiner Server wurde das Datum sofort geändert. In der anderen musste ich ein paar Minuten warten.

user1682960
quelle
2
Wenn Sie in Großbritannien (oder einem anderen Land) sind , dann können Sie einfach die zwei Buchstaben ändern Ländercode .eg zu Anzug server 0.uk.pool.ntp.org iburst
Pierz
Schritt 4 hat bei mir erst nach ca. 15 Minuten funktioniert. Oder vielleicht, weil ich gerannt bin ntpq -p. Ich benutze: "Raspbian GNU / Linux 7 (wheezy)" und "Linux raspberrypi 4.1.7+ # 817 PREEMPT Sa Sep 19 15:25:36 BST 2015 armv6l GNU / Linux"
Peter Mortensen
Vielleicht hwclockoder fake-hwclockstört (aber der Teil "/etc/rc.conf" ist veraltet)
Peter Mortensen
Und nach einem 5-minütigen Herunterfahren war es 5 Minuten hinterher ( ntpq -pmachte keinen Unterschied).
Peter Mortensen
14

Wenn Sie das fake-hwclockPaket haben , wird auch ein Trick zum Speichern von Zeitstempeln ausgeführt, um zu verhindern, dass die Uhr zurückgesetzt wird. Wenn das Gerät ausgeschaltet ist, wird die Zeit nicht vorverlegt, sodass sie zurückbleibt. Die interne Uhr driftet ebenfalls ein wenig, während sie eingeschaltet ist.

Wenn Sie über eine Internetverbindung (oder ein LAN mit einem Server) verfügen und ntp (ntpd / ntpdate) ausführen, können Sie die Zeit über das Netzwerk abrufen, wie andere Antworten zeigen. Wenn es synchronisiert ist, ist es wirklich ziemlich genau. Onlineserver geben Ihnen auch den Konsens "Weltzeit".

XTL
quelle
interessant über fake-hwclock. Warum sollte jemand die Uhr einfrieren wollen, wenn die Maschine ausgeschaltet ist? Ich kann mir keinen Anwendungsfall dafür vorstellen. Gibt es?
Scoop
2
@Scoop Da die Alternative darin besteht, die Zeit zu vergessen, wird sie zurückgesetzt. Dies wird dazu führen, dass aufgezeichnete Zeitstempel aus der Zukunft stammen. Durch "Einfrieren" der Uhr wird sichergestellt, dass die Zeit weiter
voranschreitet
1
Wenn Sie ntp oder eine andere Möglichkeit zum Einstellen der Uhr haben, funktioniert dies natürlich weiterhin, und Fake-Hwclock wird nur beim Booten und Herunterfahren ausgeführt.
XTL
1
fake-hwclockVerwenden Sie für Arch Linux archplusplus.co.uk/post/40202081414/…
levinalex
2
Dieses Paket scheint jetzt standardmäßig auf Raspbian installiert zu sein.
Pierz
11

Der Raspberry Pi verfügt aus Kostengründen nicht über eine integrierte Echtzeituhr (RTC): Siehe die Frage "Warum gibt es keine Echtzeituhr (RTC)?" in den offiziellen FAQ . Wenn Sie den Raspberry Pi vom Stromnetz trennen, verliert er seine Zeit. Wenn Sie es wieder einschalten, wird die Zeit auf den 1. Januar 1970 (auch bekannt als Unix-Epoche ) initialisiert .

Der Raspberry Pi stellt seine Uhrzeit über das Netzwerk mit NTP ein , einem Protokoll zur Uhrzeitsynchronisation zwischen Computern. Dieses Protokoll wird häufig über das Internet verwendet, um sicherzustellen, dass die Computer dieselbe Zeit haben und sehr zuverlässig sind, da einige Maschinen für die Zeitberechnung mit Atomuhren vorgesehen sind .

ntpdIst ein Daemon (eine Software im Hintergrund), die eine Startzeit gestartet hat und für die Synchronisierung der Zeit mithilfe des NTP-Protokolls verantwortlich ist. ntpdkann mit der Datei konfiguriert werden /etc/ntp.conf. Hier können Sie beispielsweise die Server so einstellen, dass sie die Uhrzeit abfragen.

Morgan Courbet
quelle
Erinnert es sich nicht an das letzte Mal? Ich habe einen Himbeer-Pi vor einer Woche heruntergefahren und datejetzt das alte Datum plus, glaube ich, einige zusätzliche Stunden von der gestrigen und heutigen Betriebszeit (nach einigen Neustarts gestern und heute) angezeigt. (Raspbian, entspricht Mitte 2015).
Peter Mortensen
Wenn cat /etc/fake-hwclock.dataSie ausführen , wird die zuletzt fake-hwclockgespeicherte Zeit angezeigt (offensichtlich zum Zeitpunkt des Herunterfahrens). fake-hwclockwird auf dem RPi verwendet, um eine echte Uhr nachzuahmen. Ich denke du hast dein RPi ohne Internetzugang gebootet oder ohne ntpdangefangen die Zeit zu aktualisieren. Kannst du das bestätigen?
Morgan Courbet
5

Raspbian Stretch: NTP ist standardmäßig nicht installiert

Anscheinend gab es bei Raspbian Stretch einige Veränderungen. Kurz gesagt, NTP ist nicht mehr installiert. Laufen dpkg -l | grep ntpbringt nichts.

Anscheinend hat Stretch den ntpAntrag zugunsten von systemd aufgegeben . Überprüfen Sie den man timesyncdEintrag auf Einzelheiten zu den Konfigurationseinstellungen. timesyncdverwendet noch NTP-Server, um die Zeit zu aktualisieren. Wenn Sie diese Server manuell konfigurieren möchten, können Sie dies in der /etc/systemd/timesyncd.confDatei tun .

b_laoshi
quelle
1
Starten Sie nach der Bearbeitung den Dienst neu, sudo systemctl restart timesyncdund überprüfen Sie anschließend die Protokolle, indem journalctl -u timesyncd -fmanchmal Unternehmensfirewalls den Port blockieren. Verwenden Sie in solchen Fällen die angegebene Unternehmens-NTP-Server-URL.
Typelogic
Ich glaube, der richtige Name des Daemons ist systemd-timesyncd, so dass der Befehl zum Neustart sein würdesystemctl restart systemd-timesyncd
chb
3

Wenn Sie nach Protokollierung oder Zeitmessung im Offline- Modus suchen, können Sie einen Echtzeituhr- Chip wie den DS1307 hinzufügen .

Marius Butuc
quelle
Es gibt ziemlich vernünftige RTC-Lösungen wie diese, um z. B. cjemicros.co.uk/micros/individual/newprodpages/…
Pierz