Jak zmusić NTPD do aktualizacji daty / godziny po uruchomieniu?

63

Raspberry Pi nie ma zegara sprzętowego. Jak zmusić NTPD do aktualizacji daty / godziny natychmiast po każdym uruchomieniu?

Używam Raspbian, a Raspberry Pi jest podłączony za pomocą kabla Ethernet .

Alessandro Da Rugna
źródło
Mój już to robi po wyjęciu z pudełka. Z czego korzystasz?
Gerben
Raspbian Wheezy
Alessandro Da Rugna
działa jak jest, jakoś
lenik
1
@Thorb Pi jest podłączony za pomocą kabla Ethernet / DHCP. Po uruchomieniu nie ma prawidłowej daty, zajmuje to trochę czasu (10–45 minut)
Alessandro Da Rugna,
1
Zrobi to automatycznie po kilku minutach. Upewnij się, że ustawiłeś go tak, aby używał zegara głównego w National Bureau of Standards, time.nist.gov, jak opisano tutaj: raspberrypi.stackexchange.com/questions/68811/…
SDsolar

Odpowiedzi:

40

Zrobić apt-get install ntpdate.

ntpdateuruchomi się po uruchomieniu interfejsu Ethernet i ustawi czas z serwera NTTP (patrz /etc/default/ntpdate).

Jeśli ntpdjest uruchomiony, ntpdate nic nie zrobi, jednak ntpdateuruchomi się przed uruchomieniem ntpd- więc powinno to zadziałać, aby ustawić czas uruchamiania, o ile istnieje połączenie Ethernet.

nr
źródło
stock Raspbian będzie miał to wszystko już.
scruss
7
@scruss mine nie. (2013-02-09 wheezy rasbian)
Pete Kirkham
1
Mój też tego nie zrobił, musiałem to zrobić ręcznie.
vaindil
Jeśli jest poprawnie skonfigurowany, zrobi to automatycznie - chociaż może to potrwać kilka minut.
SDsolar
Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linuxteż tego nie miałem.
emix
36

Jeśli twój zegar jest daleko, może być konieczne wymuszenie synchronizacji ntp przez wykonanie:

sudo /etc/init.d/ntp stop
sudo ntpd -q -g
sudo /etc/init.d/ntp start
Thaspius
źródło
1
Zwraca błąd „sudo: ntpd: polecenie nie znaleziono”
Pygmalion
1
musi być zainstalowany program ntpd, aby móc korzystać z polecenia
thaspius
3
To jest zainstalowany, nie jestem ignorantem, że :)
Pygmalion
Czy możesz odwiedzić stronę raspberrypi.stackexchange.com/questions/47542/… ? Opublikowałem tam szczegóły.
Pygmalion
3
To było absolutnie rozwiązanie mojego problemu, ale okazało się, że jest tymczasowe, dopóki nie zrestartowałem. W końcu złapałem błąd podczas zamykania, że ​​nie można zaktualizować hwclock, ponieważ zegar hw miał przyszłą datę (nie mam pojęcia, jak to się stało). Ale rozwiązaniem była siła aktualizacji hwclock. To zmusiło aktualizację do fałszywego zegara sprzętowego, a następnie przy starcie czas był co najmniej bliski prądowi, więc ntp mógł normalnie wykonać swoją pracę.
Piwaf
34

Po przeszukaniu ta metoda zadziałała dla mnie. Jak wiesz, Raspberry Pi 3 ma domyślnie wyłączone NTP. Więc po prostu wpisując to, obsługa NTP zostanie włączona:

sudo timedatectl set-ntp True

Sprawdź wynik za pomocą timedatectl status

W przypadku ostrzeżenia konieczne może być również uruchomienie sudo timedatectl set-local-rtc true.

Ariyankj
źródło
Dzięki, to mi w końcu pomogło i wydaje się być właściwą drogą, pomimo wcześniejszych odpowiedzi.
CharlieS,
1
To najlepsza odpowiedź, bardzo mi pomogła. Możesz użyć „sudo”, aby uniknąć wpisywania hasła (przydatne w skryptach, które je uruchamiają). Jaki jest cel polecenia sekund? set-local-rtc
Arad
12

Jeśli ustawisz Strefę czasową w raspi-configRaspberry Pi, automatycznie zaktualizuje czas uruchamiania, jeśli jest podłączony do Internetu.

  1. sudo raspi-config
  2. Wybierz Internationalisation Options
  3. Wybierz I2 Change Timezone
  4. Wybierz swój obszar geograficzny
  5. Wybierz najbliższe miasto
  6. Wybierz Finish
  7. Wybierz, Yesaby ponownie uruchomić teraz
mwd27
źródło
to zadziałało dla mnie dobrze
AlexG
I2 Change Timezoneopcja już nie istnieje
mrded
12

Zobacz post na forum Czas nie synchronizuje się z Pi 3 i oficjalnym kluczem sprzętowym .

ntpd emituje pakiety IP / UDP z polem ToS ustawionym na 0xc0. Jest to dość podobne do drugiego problemu, który mam (i wiele innych) z Raspberry Pi3, gdy działam przez wewnętrzny interfejs Wi-Fi.

Aby obejść ten problem, dodaj polecenie

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

do pliku

/etc/rc.local

przed wyjściem linii 0. Następnie uruchom ponownie i sprawdź.

pradeep
źródło
1
Miałem ten sam problem, co podczas instalacji RPi3, którą dostałem dla XMas, a ty rozwiązałeś mój problem. Wspaniały !!!
jfmessier
8

Powinien już aktualizować czas. Serwer NTPD powinien uruchomić się zaraz po pliku wymiany i przed dyskiem SSHD.

Sprawdź plik /etc/ntp.conf, aby upewnić się, że jest skonfigurowany.

Powinien zawierać listę co najmniej jednego serwera. Używam time.nrc.ca na moim serwerze.

Strona podręcznika ntp.conf znajduje się tutaj: http://linux.die.net/man/5/ntp.conf

Rod MacPherson
źródło
3

Rasberry Pi mojego syna nie aktualizuje czasu po wyjęciu z pudełka i po wypróbowaniu wszystkich powyższych sugestii mogę go zaktualizować ręcznie, ale nie automatycznie. W końcu po tym, jak bezskutecznie szukałem gdzie indziej, okazało się, że plik ntp.conf dostarczony z Rasberry Pi zawiera następujące komentarze:

#restrict 127.0.0.1
#restrict ::1

użyłem

sudo nano /etc/ntp.conf

w terminalu, aby edytować plik ntp conf, aby teraz był:

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

To rozwiązało problem dla nas. Aktualizuje się zarówno za pomocą Wi-Fi, jak i kabla Ethernet. Nie wiem, czy zaktualizowałoby się z Wi-Fi bez sugerowanej powyżej zmiany na rc.local, ponieważ zanim znalazłem powyższe rozwiązanie, dokonałem już tej zmiany i jej nie cofnąłem.

deLabe
źródło
2

Znalazłem timedatectlaplikację, która pomogła mi, gdy miałem podobny problem. Jest instalowany domyślnie, a „--help” daje całkiem niezły i prosty przegląd korzystania z tego narzędzia.

Uwaga: upewnij się, że strefa czasowa jest ustawiona poprawnie, co to narzędzie może również zrobić.

Adam Pastor
źródło
1

To podejście, które ostatecznie wybrałem. Wiele z tych odpowiedzi zdawało się wskazywać na rzeczy, których po prostu nie sprawdziłem, kiedy spojrzałem na mój system Raspian:

$ 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"

W dziennikach nie było nic, co wskazywałoby, że timedatectlcoś robi, ntpsynchronizuje się w stanie gotowości NIC lub że NTPD zostało nawet zainstalowane / skonfigurowane.

Na koniec dodałem to tylko do mojego /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..."

I zainstalowany ntp:

$ sudo apt-get install ntp

Co prowadzi do tego w /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
źródło
Nie działa na minimalnym raspbian: Failed to start ntp.service: Unit ntp.service not found.I ntpd też nie istnieje. Pi zdecydowanie ostatecznie zyskuje na czasie. (Patrzę na to, ponieważ moje loki HTTPS zawodzą bez -k, gdy były uruchamiane przed tym)
Steven Lu
@StevenLu - zaktualizuję A'er, aby zawierał również instalację ntp.
slm
@StevenLu -apt-get install ntp
slm
1

Nie musisz używać NTTP, aby rozwiązać problem. Jest skrypt, który odczytuje datę z serwera i wystarczy ustawić datę, aby była wynikiem tego skryptu (twoje Raspberry Pi musi być podłączone do Internetu). Następnie musisz uruchomić to polecenie podczas uruchamiania.

Krok 1: Pobierz datę z serwera.

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

Krok 2: Uruchom komendę podczas uruchamiania, dodając ją do pliku /etc/rc.local(działał na Ubuntu 16.04).

sudo gedit /etc/rc.local

KREDYTY:

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

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

Amjad Abujamous
źródło
0

Używam następujących opcji na obrazie domyślnym do synchronizacji czasu bez instalowania dodatkowych pakietów:

timedatectl set-local-rtc 0
timedatectl set-ntp 1
timedatectl status
Wu Haa
źródło