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 .
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 .
Odpowiedzi:
Zrobić apt-get install ntpdate
.
ntpdate
uruchomi się po uruchomieniu interfejsu Ethernet i ustawi czas z serwera NTTP (patrz /etc/default/ntpdate
).
Jeśli ntpd
jest uruchomiony, ntpdate nic nie zrobi, jednak ntpdate
uruchomi się przed uruchomieniem ntpd
- więc powinno to zadziałać, aby ustawić czas uruchamiania, o ile istnieje połączenie Ethernet.
Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linux
też tego nie miałem.
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
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
.
Jeśli ustawisz Strefę czasową w raspi-config
Raspberry Pi, automatycznie zaktualizuje czas uruchamiania, jeśli jest podłączony do Internetu.
sudo raspi-config
Internationalisation Options
I2 Change Timezone
Finish
Yes
aby ponownie uruchomić terazI2 Change Timezone
opcja już nie istnieje
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ź.
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
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.
Znalazłem timedatectl
aplikację, 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ć.
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 timedatectl
coś robi, ntp
synchronizuje 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 4.2.8p10@1.3728-o 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 4.2.8p10@1.3728-o 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...
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)
apt-get install ntp
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: