Raspberry Pi postrádají hardwarové hodiny. Jak vynutím NTPD, aby aktualizoval datum a čas ihned po každém spuštění?
Používám Raspbian a Raspberry Pi je připojen pomocí ethernetový kabel.
Komentáře
- Můj už to dělá z box. Jakou disto používáte?
- Raspbian Wheezy
- @Thorb Pi je připojen ethernetovým kabelem / dhcp. Po zavedení jednoduše nedostane platné datum, chvíli to trvá (10 až 45 minut)
- Udělá to automaticky, po několika minutách. Ujistěte se, že jste nastavili použití hlavních hodin v Národním úřadu pro standardy, time.nist.gov, jak je popsáno zde: raspberrypi.stackexchange.com/questions/68811/…
- Zdá se, že ne jeden na tuto otázku dosud uspokojivě odpověděl – tj. jak synchronizovat čas pomocí NTP po spuštění (tj. bez restartu).
Odpovědět
Poté při hledání okolí tato metoda fungovala pro mě. Jak víte, Raspberry Pi 3 má ve výchozím nastavení zakázáno NTP. Pouhým zadáním této položky bude povolena podpora NTP:
sudo timedatectl set-ntp True
Zkontrolujte výsledek pomocí timedatectl status
V případě varování možná budete muset spustit sudo timedatectl set-local-rtc true
.
Komentáře
- Díky, nakonec mi to pomohlo a navzdory předchozím odpovědím se zdá být správným způsobem.
- To je nejlepší odpověď, hodně mi pomohla. Můžete použít ‚ sudo ‚, abyste se vyhnuli zadávání hesla (užitečné pro skripty, které ho spouští). Jaký je účel příkazu seconds? set-local-rtc
Odpověď
Proveďte apt-get install ntpdate
.
ntpdate
se spustí, když se vyvolá ethernetové rozhraní, a nastaví čas ze serveru ntp (viz /etc/default/ntpdate
).
Pokud je spuštěn ntpd
, program ntpdate nic neudělá, ale ntpdate
bude spuštěn před ntpd
při spuštění – toto by mělo fungovat, aby se nastavil čas při spuštění, pokud existuje ethernetové připojení.
Komentáře
- stock Raspbian to vše již bude mít.
- @scruss důl nebyl ‚ t. (02.02.2013, sípavý rasbian)
- Můj také ne, musel to udělat ručně.
- Pokud je nastaven správně, provede to automaticky – i když to může trvat několik minut.
-
Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linux
neměl jsem to ‚.
Odpovědět
Pokud jsou vaše hodiny pryč, možná budete muset vynutit synchronizaci ntp pomocí:
sudo /etc/init.d/ntp stop sudo ntpd -q -g sudo /etc/init.d/ntp start
komentářů
- Vrací chybu “ sudo: ntpd: příkaz nebyl nalezen “
- ntpd musí být nainstalován k použití příkazu
- Je nainstalován , nejsem tak ignorant 🙂
- Můžete prosím navštívit raspberrypi.stackexchange.com/questions/47542/… ? Zveřejnil jsem tam podrobnosti.
- Toto bylo absolutně řešení mého problému, ale zjistil jsem, že je to dočasné, dokud jsem nerestartoval. Nakonec jsem při vypnutí zachytil chybu, že nemohl ‚ t aktualizovat hwclock, protože hw hodiny měly budoucí datum (netuším, jak se to stalo). Řešením však byla síla aktualizace hwclock. To přinutilo aktualizaci k falešným hardwarovým hodinám a poté při spuštění byl čas alespoň blízký aktuálnímu, takže ntp to mohl dělat ‚ s normálně.
Odpověď
Pokud nastavíte časové pásmo v raspi-config
, Raspberry Pi automaticky aktualizuje čas při spuštění, pokud je připojen k internetu.
-
sudo raspi-config
- Vyberte
Internationalisation Options
- Vyberte
I2 Change Timezone
- Vyberte svou geografickou oblast
- Vyberte nejbližší město
- Vyberte
Finish
- Vyberte
Yes
a restartujte nyní
Komentáře
- toto pro mě fungovalo dobře
-
I2 Change Timezone
možnost ‚ už neexistuje - Existuje, alespoň v Raspbian Buster.
- “ Možnosti internacionalizace je nyní nazýváno “ Možnosti lokalizace “
- “ nejbližší město “ není správný způsob. musíte vybrat město, kam patří vaše časové pásmo, které může být nejbližší nebo ne …
Odpověď
Zobrazit příspěvek ve fóru Čas se nesynchronizuje na Pi 3 a s oficiálním hardwarovým klíčem .
ntpd vydává pakety IP / UDP s ToS pole nastaveno na 0xc0. To je tedy docela podobné dalšímu problému, který mám (a mnoho dalších) s Raspberry Pi3 při provozu přes interní rozhraní Wi-Fi.
Jako alternativní řešení přidejte příkaz
/sbin/iptables -t mangle -I POSTROUTING 1 -o wlan0 -p udp --dport 123 -j TOS --set-tos 0x00
do souboru
/etc/rc.local
před řádkem exit 0. Poté restartujte a zkontrolujte.
Komentáře
- Měl jsem stejný problém, jako když jsem nainstaloval RPi3, který jsem dostal pro XMas, a vyřešili jste můj problém. Skvělé !!!
Odpověď
Tato otázka je zjevně “ recycled “ z nějakého důvodu, a proto se zdá vhodné recyklovat i některé staré odpovědi 🙂
Rokem je nyní rok 2021 …
Tato otázka byla položena v roce 2013. ntpd
byl software pro měření času obsažený v v té době distribuce Raspbian (wheezy
) . To se však změnilo s stretch
distribucí v roce 2017, kdy systemd-timesyncd
nahradil ntpd
. Důvody této změny a některé technické kompromisy byly popsány v této staré odpovědi pro ty, kteří se o takové věci zajímají.
S ohledem na zde uvedenou otázku je pravděpodobně nejdůležitějším bodem v současném prostředí (post- systemd
) je toto: Pokud se rozhodnete nainstalovat ntpd
do vaší současné distribuce Raspbian, víte, že systemd-timesyncd
udělá “ správnou věc „! Zkontroluje přítomnost dalších démonů NTP a podle toho upraví jeho chování; to prostě funguje . Vše si můžete přečíst zadáním na příkazovém řádku:
$ systemctl cat systemd-timesyncd
Všimněte si několika posledních řádků:
# don „t run timesyncd if we have another NTP daemon installed
ConditionFileIsExecutable =! / usr / sbin / ntpd
ConditionFileIsExecutable =! / usr / sbin / openntpd
ConditionFileIsExecutable =! / Usr / sbin / chronyd
ConditionFileIsExecutable =! / Usr / sbin / VBoxService
Jinými slovy: zkontroluje, zda ve vašem systému běží některá z těchto alternativních časových služeb, a pokud ano, zdvořile se jim odkáže za poskytnutí vašich časových služeb.
“ vynutit “ ntpd
aktualizaci po spuštění ?!
Toto byl OP otázka. Odpověď (v roce 2021) nebyla změněna: Nemělo by to být nutné dělat na žádném systému RPi – pokud někdo nezměnil výchozí konfiguraci ! Můžete to ověřit takto:
$ 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
Poznamenejte si dvě položky:
-
System clock synchronized: yes
-
NTP service: active
Položka 1. říká, že vaše systémové hodiny jsou synchronizovány s jakýmkoli výchozím zdrojem času, a položka 2. je téměř true v tom, že RPi standardně používá SNTP
protokol namísto NTP
( REF ); tj. to znamená, že RPi má zdroj času a využívá jej.
Myslím si, že je vše potřebné pro up-to- datum odpovědi pro rok 2021 , kromě tohoto: přečtěte si man timedatectl
další informace o jeho schopnostech nebo má-li TLDR slušné shrnutí.
Komentáře
- Synchronizace systémových hodin: ne
- @Arrow_Raider: Váš ‚ bod je ???
Odpověď
Čas by už měl být aktualizován. Server NTPD by měl začít hned po odkládacím souboru a před SSHD.
Zkontrolujte svůj soubor /etc/ntp.conf a ujistěte se, že je nakonfigurovaný.
Měl by obsahovat alespoň jeden server. Pro svůj server používám time.nrc.ca.
Ruční stránka pro ntp.conf je zde: http://linux.die.net/man/5/ntp.conf
Odpověď
Rasberry Pi mého syna by neaktualizoval čas z krabice a po pokusu všechny výše uvedené návrhy jsem mohl nechat aktualizovat ručně, ale ne automaticky. Nakonec, když jsem bez úspěchu hledal i jinde, zjistil jsem, že ntp.conf soubor, který byl dodán s Rasberry Pi měl komentovány následující řádky:
#restrict 127.0.0.1 #restrict ::1
Použil jsem
sudo nano /etc/ntp.conf
v terminálu a upravte soubor ntp conf tak, aby nyní byl:
# Local users may interrogate the ntp server more closely. restrict 127.0.0.1 restrict ::1
To nám problém vyřešilo. Aktualizuje se pomocí WiFi i ethernetového kabelu. Nevím, jestli by se to aktualizovalo pomocí WiFi bez změny výše navrženého rc.local, protože v době, kdy jsem našel výše uvedené řešení, jsem již tuto změnu provedl a nevrátil jsem ji.
Odpověď
Našel jsem aplikaci timedatectl
, která mi pomohla, když jsem měl podobný problém. Je to ve výchozím nastavení nainstalován a „–help“ poskytuje docela dobrý a jednoduchý přehled o tom, jak tento nástroj používat.
Poznámka: ujistěte se, že je vaše časové pásmo správně nastaveno, což tento nástroj také dokáže.
Odpověď
K vyřešení problému nemusíte používat ntp. K dispozici je skript, který načte datum ze serveru a stačí nastavit datum, které bude výsledkem tohoto skriptu (vaše Raspberry Pi musí být připojeno k internetu). Potom musíte tento příkaz spustit při spuštění.
Krok 1: Načíst datum ze serveru.
sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d" " -f5-8)Z"
Krok 2: Spusťte příkaz při spuštění přidáním do souboru /etc/rc.local
(fungovalo na Ubuntu 16.04).
sudo gedit /etc/rc.local
KREDITY:
1- https://askubuntu.com/a/655528/572294
2- https://askubuntu.com/a/1199/572294
Komentáře
- Možná nebudete muset používat
ntp
ale měli byste. Je ‚ lepší, rychlejší, přesnější a průmyslový standard. Pokud existují dobré standardy, nevymýšlejte si ‚ své vlastní divné věci. - Nepomáhá to ‚ pokud váš RasPi běží 24/7.
Odpověď
Měl jsem podobný problém s nesynchronizací Pi . Žádné z těchto řešení nefungovalo. Ukázalo se, že moje síťové prostředí blokovalo port NTP (123). Řešení pro mě bylo
sudo apt install htpdate
převzato z: https://www.raspberrypi.org/forums/viewtopic.php?t=222236
Což místo toho aktualizuje hodiny systému prostřednictvím volání HTTP.
Odpověď
Toto je přístup, který jsem nakonec zvolil. Zdálo se, že mnoho z těchto odpovědí naznačuje věci, které jsem si při pohledu na můj raspianský systém nekontroloval:
$ 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"
Neměl jsem nic, co by se objevilo v protokolech že timedatectl
dělá cokoli, nebo že se ntp
synchronizuje ve stavu NIC nebo že NTPD byl dokonce nainstalován / nakonfigurován.
Nakonec jsem to jen přidal do svého /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..."
a nainstaloval ntp
:
$ sudo apt-get install ntp
Výsledkem čehož je /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...
Komentáře
- nefunguje ‚ nefunguje na minimální raspbian:
Failed to start ntp.service: Unit ntp.service not found.
A ntpd neexistuje ‚. Pi rozhodně nakonec získá čas. (Dívám se do toho ‚ protože moje HTTPS kadeře selžou bez -k při spuštění před tím) - @StevenLu – I ‚ Aktualizuji A ‚ er tak, aby zahrnoval i instalaci ntp.
- @StevenLu –
apt-get install ntp
Odpověď
K synchronizaci času bez instalace dalších balíčků používám na výchozím obrázku následující:
timedatectl set-local-rtc 0 timedatectl set-ntp 1 timedatectl status
Odpověď
Našel jsem to někde v interwebech. Zdá se, že funguje na Buster:
sudo timedatectl set-ntp false && sudo timedatectl set-time "$(date --iso-8601=seconds | cut -d "+" -f1 | tr T " ")" && sudo timedatectl set-ntp true
Nejsem si jistý, zda je mezilehlý příkaz (set-time
) opravdu potřeba.