Raspberry Pi nie ma zegara sprzętowego. Jak zmusić NTPD do aktualizowania daty / godziny natychmiast po każdym uruchomieniu?
Pracuję Raspbian , a Raspberry Pi jest połączony za pomocą kabel Ethernet .
Komentarze
- Mój już to robi z box. Z jakiej dystrybucji korzystasz?
- Raspbian Wheezy
- @Thorb Pi jest połączony za pomocą kabla Ethernet / dhcp. Po prostu nie otrzymuje aktualnej daty po uruchomieniu, zajmuje to chwilę (10 do 45 minut)
- Zrobi to automatycznie, po kilku minutach. Upewnij się, że ustawiłeś zegar główny w National Bureau of Standards, time.nist.gov zgodnie z opisem tutaj: raspberrypi.stackexchange.com/questions/68811/…
- Wygląda na to, że nie ktoś jeszcze odpowiedział na to pytanie w zadowalający sposób – tj. jak zsynchronizować czas przez NTP po uruchomieniu (tj. bez ponownego uruchamiania).
Odpowiedź
Po szukając wokół, ta metoda zadziałała dla mnie. Jak wiesz, Raspberry Pi 3 ma domyślnie wyłączone NTP. 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 może być konieczne uruchomienie również sudo timedatectl set-local-rtc true
.
Komentarze
- Dzięki, to w końcu pomogło mi i wydaje się, że jest to właściwy sposób, pomimo wcześniejszych odpowiedzi.
- To najlepsza odpowiedź, bardzo mi pomogła. Możesz użyć ' sudo ', aby uniknąć wpisywania hasła (przydatne w przypadku skryptów, które je uruchamiają). Jaki jest cel polecenia sekund? set-local-rtc
Odpowiedź
Zrób apt-get install ntpdate
.
ntpdate
będzie działać po uruchomieniu interfejsu Ethernet i ustawi czas z serwera ntp (patrz /etc/default/ntpdate
).
Jeśli ntpd
jest uruchomiony, ntpdate nic nie zrobi, jednak ntpdate
będzie działać przed ntpd
podczas rozruchu – powinno to działać, aby ustawić czas rozruchu, o ile istnieje połączenie Ethernet.
Komentarze
- zapasowy Raspbian już to wszystko będzie.
- @scruss mine didn ' t. (2013-02-09 wheezy rasbian)
- Mój też nie, musiałem to zrobić ręcznie.
- Jeśli zostanie poprawnie skonfigurowany, zrobi to automatycznie – chociaż może to zająć kilka minut.
-
Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linux
nie ' też go nie mam.
Odpowiedź
Jeśli twój zegar jest daleko, może być konieczne wymuszenie synchronizacji ntp, wykonując:
sudo /etc/init.d/ntp stop sudo ntpd -q -g sudo /etc/init.d/ntp start
Komentarze
- Zwraca błąd ” sudo: ntpd: nie znaleziono polecenia ”
- ntpd musi być zainstalowany przy użyciu polecenia
- Jest zainstalowany , nie jestem ignorantem 🙂
- Czy możesz odwiedzić stronę raspberrypi.stackexchange.com/questions/47542/… ? Opublikowałem tam szczegóły.
- To było absolutnie rozwiązanie mojego problemu, ale okazało się, że jest to tymczasowe rozwiązanie do czasu ponownego uruchomienia. W końcu podczas zamykania systemu wyłapałem błąd, że nie mógł ' t 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 wymusiło aktualizację fałszywego zegara sprzętowego, a następnie podczas rozruchu czas był co najmniej zbliżony do bieżącego, więc ntp mógł to wykonać normalnie '.
Odpowiedź
Jeśli ustawisz strefę czasową w raspi-config
, Raspberry Pi automatycznie zaktualizuje czas podczas rozruchu, jeśli masz połączenie z Internetem.
-
sudo raspi-config
- Wybierz
Internationalisation Options
- Wybierz
I2 Change Timezone
- Wybierz swój obszar geograficzny
- Wybierz najbliższe miasto
- Wybierz
Finish
- Wybierz
Yes
, aby ponownie uruchomić teraz
Komentarze
- to działało dobrze dla mnie
-
I2 Change Timezone
opcja nie ' już nie istnieje - Istnieje, przynajmniej w Raspbian Buster.
- ” Opcje internacjonalizacji ” jest teraz nazywa się ” Opcje lokalizacji ”
- ” najbliższe miasto ” nie jest właściwą drogą. musisz wybrać miasto, do którego należy Twoja strefa czasowa, które może być najbliższe lub nie …
Odpowiedź
Zobacz post na forum Godzina nie synchronizuje się na Pi 3 i z oficjalnym kluczem sprzętowym .
ntpd emituje pakiety IP / UDP z Pole ToS ustawione na 0xc0. Jest to więc dość podobne do innego problemu, który mam (i wielu innych) z Raspberry Pi3 podczas obsługi 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 linią wyjścia 0. Następnie uruchom ponownie i sprawdź.
Komentarze
- Miałem ten sam problem, co przy instalacji RPi3 dla XMas, a Ty rozwiązałeś mój problem. Świetnie !!!
Odpowiedź
Najwyraźniej to pytanie brzmi ” poddane recyklingowi ” z jakiegoś powodu, więc wydaje się właściwe, aby ponownie wykorzystać również niektóre stare odpowiedzi 🙂
Teraz jest rok 2021 …
To pytanie zadano w 2013 roku. ntpd
było oprogramowaniem do pomiaru czasu zawartym w dystrybucji Raspbian w tamtym czasie (wheezy
) . Jednak zmieniło się to wraz z dystrybucją stretch
w 2017 r., Kiedy systemd-timesyncd
zastąpił ntpd
. Przyczyny tej zmiany i niektóre techniczne kompromisy zostały omówione w tej starej odpowiedzi dla osób zainteresowanych takimi rzeczami.
Odnosząc się do tego pytania, być może najważniejszym punktem w obecnym środowisku (po systemd
) to: Jeśli zdecydujesz się zainstalować ntpd
w ramach swojej obecnej dystrybucji Raspbian, pamiętaj, że systemd-timesyncd
” zrobi właściwą rzecz „! Sprawdza obecność innych demonów NTP i odpowiednio dostosowuje swoje zachowanie; to po prostu działa . Możesz przeczytać wszystko na ten temat, wpisując to w wierszu poleceń:
$ systemctl cat systemd-timesyncd
Zwróć uwagę na kilka ostatnich wierszy:
# nie uruchamiaj timesyncd, jeśli mamy zainstalowany inny demon NTP
ConditionFileIsExecutable =! / usr / sbin / ntpd
ConditionFileIsExecutable =! / usr / sbin / openntpd
ConditionFileIsExecutable =! / Usr / sbin / chronyd
ConditionFileIsExecutable =! / Usr / sbin / VBoxService
Innymi słowy: sprawdza, czy którakolwiek z tych alternatywnych usług czasu jest uruchomiona w Twoim systemie, a jeśli tak, grzecznie ich zwleka za świadczenie usług pomiaru czasu.
” wymuś ” ntpd
do aktualizacji po uruchomieniu ?!
To był OP pytanie. Odpowiedź (w 2021 r.) Nie uległa zmianie: Nie powinno to być konieczne w żadnym systemie RPi – chyba że ktoś zmienił domyślną konfigurację ! Możesz to sprawdzić w następujący sposób:
$ timedatectl Local time: Wed 2021-01-13 00:25:33 GMT Universal time: Wed 2021-01-13 00:25:33 UTC RTC time: n/a Time zone: Europe/London (GMT, +0000) System clock synchronized: yes NTP service: active RTC in local TZ: no
Zwróć uwagę na dwie pozycje:
-
System clock synchronized: yes
-
NTP service: active
Pozycja 1. informuje, że zegar systemowy jest zsynchronizowana z dowolnym domyślnym źródłem czasu, a pozycja 2. jest prawie prawda, ponieważ RPi używa domyślnie protokołu SNTP
zamiast NTP
( REF ); tzn. oznacza to, że RPi ma źródło czasu i korzysta z niego.
Myślę, że „to wszystko”, co jest potrzebne do do- data odpowiedź na 2021 r. , z wyjątkiem tego: przeczytaj man timedatectl
, aby dowiedzieć się więcej o jego możliwościach, lub jeśli TLDR ta strona ma przyzwoite podsumowanie.
Komentarze
- Zsynchronizowano zegar systemowy: nie
- @Arrow_Raider: Yer ' chodzi o ???
Odpowiedź
Powinien już aktualizować czas. Serwer NTPD powinien wystartować zaraz po pliku wymiany, a przed SSHD.
Sprawdź swój plik /etc/ntp.conf, aby upewnić się, że jest skonfigurowany.
Powinien zawierać co najmniej jeden serwer. Używam time.nrc.ca dla mojego serwera.
Strona podręcznika ntp.conf jest tutaj: http://linux.die.net/man/5/ntp.conf
Odpowiedź
Rasberry Pi mojego syna nie aktualizował czasu po wyjęciu z pudełka i po próbie wszystkie powyższe sugestie mogłem zaktualizować ręcznie, ale nie automatycznie.W końcu po sprawdzeniu również gdzie indziej bez powodzenia, stwierdziłem, że ntp.conf, który został dostarczony z Rasberry Pi, miał zakomentowane następujące linie:
#restrict 127.0.0.1 #restrict ::1
Użyłem
sudo nano /etc/ntp.conf
w terminalu, aby edytować plik conf ntp na teraz:
# Local users may interrogate the ntp server more closely. restrict 127.0.0.1 restrict ::1
To rozwiązało problem za nas. Aktualizuje się zarówno za pomocą WiFi, jak i kabla Ethernet. Nie wiem, czy zaktualizowałoby się za pomocą WiFi bez zmiany na rc.local sugerowanej powyżej, ponieważ zanim znalazłem powyższe rozwiązanie, już dokonałem tej zmiany i nie cofnąłem jej.
Odpowiedź
Znalazłem aplikację timedatectl
, która pomogła mi, gdy miałem podobny problem. To jest zainstalowany domyślnie, a „–help” daje całkiem niezły i prosty przegląd sposobu korzystania z narzędzia.
Uwaga: upewnij się, że strefa czasowa jest ustawiona prawidłowo, co to narzędzie również może zrobić.
Odpowiedź
Nie musisz używać ntp do rozwiązania problemu. Istnieje skrypt odczytujący datę z serwera i wystarczy ustawić datę tak, aby była wynikiem działania tego skryptu (Twoje Raspberry Pi musi być połączone z Internetem). 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"
Krok2: Uruchom polecenie podczas uruchamiania, dodając je do pliku /etc/rc.local
(działało na Ubuntu 16.04).
sudo gedit /etc/rc.local
KREDYTY:
1- https://askubuntu.com/a/655528/572294
2- https://askubuntu.com/a/1199/572294
Komentarze
- Możesz nie potrzebować
ntp
, ale powinieneś. Jest ' lepszy, szybszy, dokładniejszy i stanowi standard branżowy. Nie ' nie wymyślaj własnych dziwnych rzeczy, gdy istnieją dobre standardy, proszę. - To nie ' nie pomaga zbyt wiele jeśli Twoje RasPi działa 24 godziny na dobę, 7 dni w tygodniu.
Odpowiedź
Miałem podobny problem z brakiem synchronizacji Pi . Żadne z tych rozwiązań nie zadziałało. Okazuje się, że moje środowisko sieciowe blokowało port NTP (123). Dla mnie rozwiązaniem było
sudo apt install htpdate
pobrane z: https://www.raspberrypi.org/forums/viewtopic.php?t=222236
Który zamiast tego aktualizuje zegar systemowy za pomocą wywołań HTTP.
Odpowiedz
To to podejście, które ostatecznie obrałem. Wiele z tych odpowiedzi zdawało się wskazywać na rzeczy, które po prostu nie były sprawdzane, gdy 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 wskazującego że timedatectl
coś robił lub że ntp
synchronizowało się na karcie sieciowej lub że NTPD zostało nawet zainstalowane / skonfigurowane.
W końcu po prostu dodałem to 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 zainstalowałem ntp
:
$ sudo apt-get install ntp
W rezultacie /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...
Komentarze
- Nie ' nie działa na minimalnym raspbian:
Failed to start ntp.service: Unit ntp.service not found.
I ntpd też nie istnieje '. Pi zdecydowanie w końcu zyskuje na czasie. (Patrzę na to ', ponieważ moje loki HTTPS zawodzą bez -k, gdy są uruchomione wcześniej) - @StevenLu – I ' zaktualizujemy A ' er, aby uwzględnić również instalację ntp.
- @StevenLu –
apt-get install ntp
Odpowiedź
Na domyślnym obrazie używam następującego polecenia, aby zsynchronizować czas bez instalowania dodatkowych pakietów:
timedatectl set-local-rtc 0 timedatectl set-ntp 1 timedatectl status
Odpowiedź
Znalazłem to gdzieś w sieciach. Wydaje się, że działa w Buster:
sudo timedatectl set-ntp false && sudo timedatectl set-time "$(date --iso-8601=seconds | cut -d "+" -f1 | tr T " ")" && sudo timedatectl set-ntp true
Nie mam pewności, czy polecenie pośrednie (set-time
) jest naprawdę potrzebne.