Wie kann ich NTPD zwingen, Datum und Uhrzeit nach dem Booten zu aktualisieren?

63

Dem Raspberry Pi fehlt eine Hardware-Uhr. Wie erzwinge ich, dass NTPD unmittelbar nach jedem Start Datum und Uhrzeit aktualisiert?

Ich verwende Raspbian und der Raspberry Pi ist über ein Ethernet- Kabel verbunden.

Alessandro Da Rugna
quelle
Meins macht das schon aus der Box. Welche Disto benutzt du?
Gerben
Raspbian Wheezy
Alessandro Da Rugna
funktioniert so wie es ist, irgendwie
lenik
1
@Thorb Pi ist mit Ethernet-Kabel / DHCP verbunden. Es wird einfach kein gültiges Datum nach dem Booten vergeben, es dauert eine Weile (10 bis 45 Minuten)
Alessandro Da Rugna
1
Dies geschieht automatisch nach ein paar Minuten. Stellen Sie sicher, dass Sie die Master-Uhr beim National Bureau of Standards time.nist.gov wie hier beschrieben eingestellt haben: raspberrypi.stackexchange.com/questions/68811/…
SDsolar

Antworten:

40

Mach ein apt-get install ntpdate.

ntpdatewird ausgeführt, wenn eine Ethernet-Schnittstelle gestartet wird, und stellt die Zeit von einem NTP-Server ein (siehe /etc/default/ntpdate).

Wenn ausgeführt ntpdwird, führt ntpdate keine Aktionen aus, wird jedoch ntpdatevor dem ntpdBooten ausgeführt. Dies sollte also funktionieren, um die Zeit beim Booten festzulegen, solange eine Ethernet-Verbindung besteht.

nos
quelle
stock Raspbian wird das alles schon haben.
Scruss
7
@scruss mir nicht. (09.02.2013 wheezy rasbian)
Pete Kirkham
1
Meins auch nicht, musste es manuell machen.
Vaindil
Wenn es richtig eingerichtet ist, wird es automatisch ausgeführt - obwohl es einige Minuten dauern kann.
SDsolar
Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linuxhatte es auch nicht.
Emix
36

Wenn Ihre Uhr weit entfernt ist, müssen Sie möglicherweise die Synchronisierung von ntp erzwingen, indem Sie folgende Schritte ausführen:

sudo /etc/init.d/ntp stop
sudo ntpd -q -g
sudo /etc/init.d/ntp start
thaspius
quelle
1
Es gibt den Fehler "sudo: ntpd: Befehl nicht gefunden"
Pygmalion
1
ntpd muss installiert sein, um den Befehl zu verwenden
thaspius
3
Es ist installiert, ich bin nicht so unwissend :)
Pygmalion
Könnten Sie bitte raspberrypi.stackexchange.com/questions/47542/… besuchen ? Ich habe dort Details gepostet.
Pygmalion
3
Dies war absolut die Lösung für mein Problem, aber ich fand es vorübergehend, bis ich neu startete. Irgendwann habe ich beim Herunterfahren einen Fehler festgestellt, dass die Uhr nicht aktualisiert werden konnte, da die Uhr ein zukünftiges Datum hatte (keine Ahnung, wie das passiert ist). Aber die Lösung war eine Hwclock-Update-Kraft. Das erzwang das Update auf die gefälschte Hardware-Uhr und beim Booten lag die Zeit zumindest in der Nähe der aktuellen, so dass ntp seine Arbeit normal erledigen konnte.
Piwaf
34

Nach der Suche hat diese Methode für mich funktioniert. Wie Sie wissen, ist NTP auf dem Raspberry Pi 3 standardmäßig deaktiviert. Wenn Sie dies einfach eingeben, wird die NTP-Unterstützung aktiviert:

sudo timedatectl set-ntp True

Prüfe Ergebnis mit timedatectl status

Im Falle einer Warnung müssen Sie möglicherweise auch rennen sudo timedatectl set-local-rtc true.

Ariyankj
quelle
Danke, das hat mir endlich geholfen und scheint der richtige Weg zu sein, trotz vorheriger Antworten.
CharlieS
1
Das ist die beste Antwort, hat mir sehr geholfen. Sie können 'sudo' verwenden, um die Eingabe Ihres Passworts zu vermeiden (nützlich für Skripte, die es ausführen). Was ist der Zweck des Sekundenbefehls? set-local-rtc
Arad
12

Wenn Sie die Zeitzone im raspi-configRaspberry Pi einstellen, wird die Uhrzeit beim Booten automatisch aktualisiert, wenn eine Verbindung zum Internet besteht.

  1. sudo raspi-config
  2. Wählen Internationalisation Options
  3. Wählen I2 Change Timezone
  4. Wählen Sie Ihr geografisches Gebiet
  5. Wählen Sie Ihre nächstgelegene Stadt
  6. Wählen Finish
  7. Wählen Sie, Yesum jetzt neu zu starten
mwd27
quelle
das hat bei mir gut
funktioniert
I2 Change TimezoneOption gibt es nicht mehr
mrded
12

Siehe Forenbeitrag Die Uhrzeit wird auf Pi 3 und mit dem offiziellen Dongle nicht synchronisiert .

ntpd sendet IP / UDP-Pakete mit dem ToS-Feld 0xc0. Das ist also ziemlich ähnlich zu dem anderen Problem, das ich (und viele andere) mit Raspberry Pi3 habe, wenn es über eine interne Wi-Fi-Schnittstelle betrieben wird.

Fügen Sie als Problemumgehung den Befehl hinzu

/sbin/iptables -t mangle -I POSTROUTING 1 -o wlan0 -p udp --dport 123 -j TOS --set-tos 0x00

in die Datei

/etc/rc.local

vor der Ausfahrt 0 Linie. Als nächstes starten und prüfen.

pradeep
quelle
1
Ich hatte das gleiche Problem wie bei der Installation des RPi3 für Weihnachten, und Sie haben mein Problem gelöst. Toll !!!
jfmessier
8

Die Uhrzeit sollte bereits aktualisiert sein. Der NTPD-Server sollte direkt nach der Auslagerungsdatei und vor der SSHD gestartet werden.

Überprüfen Sie Ihre Datei /etc/ntp.conf, um sicherzustellen, dass sie konfiguriert ist.

Es sollte mindestens ein Server aufgelistet sein. Ich benutze time.nrc.ca für meinen Server.

Die Handbuchseite für ntp.conf finden Sie hier: http://linux.die.net/man/5/ntp.conf

Rod MacPherson
quelle
3

Der Rasberry Pi meines Sohnes hat die Time-out-of-the-Box nicht aktualisiert, und nachdem ich alle obigen Vorschläge ausprobiert hatte, konnte ich ihn manuell, aber nicht automatisch aktualisieren lassen. Nachdem ich auch anderswo erfolglos nachgesehen hatte, stellte ich fest, dass in der mit dem Rasberry Pi gelieferten Datei ntp.conf die folgenden Zeilen auskommentiert waren:

#restrict 127.0.0.1
#restrict ::1

ich benutzte

sudo nano /etc/ntp.conf

im terminal zum editieren der ntp conf datei soll nun sein:

# Local users may interrogate the ntp server more closely. 
restrict 127.0.0.1
restrict ::1

Das hat das Problem für uns gelöst. Es wird sowohl mit dem WLAN- als auch mit dem Ethernet-Kabel aktualisiert. Ich weiß nicht, ob es mit WiFi aktualisiert werden würde, ohne die oben vorgeschlagene Änderung an rc.local vorzunehmen, da ich diese Änderung bereits vorgenommen und nicht rückgängig gemacht habe, als ich die oben genannte Lösung gefunden habe.

deLabe
quelle
2

Ich fand die timedatectlAnwendung, um mir zu helfen, wenn ich ein ähnliches Problem hatte. Es ist standardmäßig installiert und '--help' gibt einen ziemlich guten und einfachen Überblick über die Verwendung des Tools.

Hinweis: Stellen Sie sicher, dass Ihre Zeitzone richtig eingestellt ist, was auch mit diesem Tool möglich ist.

Adam Parsons
quelle
1

Dies ist der Ansatz, den ich letztendlich eingeschlagen habe. Viele dieser Antworten schienen auf Dinge hinzudeuten, die ich auf meinem Raspian-System nicht überprüft habe:

$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

In den Protokollen timedatectlwar nichts ntpvermerkt, was darauf hinwies, dass etwas unternommen wurde oder dass die Netzwerkkarte in Betrieb war oder dass NTPD sogar installiert / konfiguriert wurde.

Am Ende habe ich nur folgendes zu meinem hinzugefügt /etc/rc.local:

$ cat /etc/rc.local
logger "Beginning force syncing NTP..."
service ntp stop
ntpd -gq
service ntp start
logger "Finished force syncing NTP..."

Und installiert ntp:

$ sudo apt-get install ntp

Was dazu führt, ist /var/log/syslog:

Aug  5 09:10:20 pi-hole ntp[526]: Starting NTP server: ntpd.
Aug  5 09:10:20 pi-hole ntpd[555]: proto: precision = 1.458 usec (-19)
Aug  5 09:10:20 pi-hole ntpd[555]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:21 pi-hole ntpd[555]: ntpd exiting on signal 15 (Terminated)
Aug  5 09:10:21 pi-hole ntp[661]: Stopping NTP server: ntpd.
Aug  5 09:10:21 pi-hole ntpd[674]: ntpd [email protected] Sat Mar 10 18:03:33 UTC 2018 (1): Starting
Aug  5 09:10:21 pi-hole ntpd[674]: Command line: ntpd -gq
Aug  5 09:10:21 pi-hole ntpd[674]: proto: precision = 0.625 usec (-21)
Aug  5 09:10:21 pi-hole ntpd[674]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:34 pi-hole ntpd[674]: Soliciting pool server 198.98.57.16
Aug  5 09:10:35 pi-hole ntpd[674]: Soliciting pool server 74.82.59.149
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 23.131.160.7
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 52.37.26.163
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 204.2.134.163
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 96.126.100.203
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 199.223.248.101
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 66.228.42.59
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 208.75.89.4
Aug  5 09:10:37 pi-hole ntpd[674]: Soliciting pool server 204.2.134.164
Aug  5 09:10:37 pi-hole ntpd[674]: Soliciting pool server 104.236.116.147
Aug  5 09:10:38 pi-hole ntpd[674]: Soliciting pool server 204.9.54.119
Aug  5 09:10:48 pi-hole ntpd[674]: ntpd: time set +6.769186 s
Aug  5 09:10:49 pi-hole ntpd[853]: ntpd [email protected] Sat Mar 10 18:03:33 UTC 2018 (1): Starting
Aug  5 09:10:49 pi-hole ntpd[853]: Command line: /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 111:114
Aug  5 09:10:49 pi-hole ntp[844]: Starting NTP server: ntpd.
Aug  5 09:10:49 pi-hole ntpd[856]: proto: precision = 0.625 usec (-21)
Aug  5 09:10:49 pi-hole ntpd[856]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:49 pi-hole root: Finished force syncing NTP...
slm
quelle
Funktioniert nicht mit minimalem Raspbian: Failed to start ntp.service: Unit ntp.service not found.Und ntpd gibt es auch nicht. Der Pi gewinnt definitiv Zeit. (Ich prüfe dies, weil meine HTTPS-Locken ohne -k fehlschlagen, wenn sie zuvor ausgeführt wurden)
Steven Lu
@StevenLu - Ich aktualisiere die A'er, um auch die Installation von ntp einzuschließen.
Slm
@StevenLu -apt-get install ntp
slm
1

Sie müssen ntp nicht verwenden, um das Problem zu lösen. Es gibt ein Skript, das das Datum von einem Server liest, und Sie müssen nur das Datum als Ergebnis dieses Skripts festlegen (Ihr Raspberry Pi muss mit dem Internet verbunden sein). Dann müssen Sie diesen Befehl beim Start ausführen.

Schritt 1: Rufen Sie das Datum von einem Server ab.

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

Schritt 2: Führen Sie den Befehl beim Start aus, indem Sie ihn zur Datei hinzufügen /etc/rc.local(Worked on Ubuntu 16.04).

sudo gedit /etc/rc.local

CREDITS:

1- https://askubuntu.com/a/655528/572294

2- https://askubuntu.com/a/1199/572294

Amjad Abujamous
quelle
0

Ich verwende Folgendes für das Standard-Image, um die Zeit zu synchronisieren, ohne zusätzliche Pakete zu installieren:

timedatectl set-local-rtc 0
timedatectl set-ntp 1
timedatectl status
Wu Haa
quelle