Come forzare NTPD ad aggiornare la data / ora dopo l'avvio?


63

Il Raspberry Pi manca di un orologio hardware. Come forzare NTPD ad aggiornare la data / ora immediatamente dopo ogni avvio?

Io corro Raspbian e il Raspberry Pi è collegato con un Ethernet via cavo.


Il mio lo fa già fuori dalla scatola. Che disto stai usando?
Gerben,

Raspbian Wheezy
Alessandro Da Rugna

funziona così com'è, in qualche modo
lenik,

1
@Thorb Pi è collegato con cavo ethernet / dhcp. Semplicemente non ottiene una data valida dopo l'avvio, ci vuole un po '(da 10 a 45 minuti)
Alessandro Da Rugna

1
Lo farà automaticamente, dopo un paio di minuti. Assicurati di averlo impostato per utilizzare il Master Clock presso il National Bureau of Standards, time.nist.gov come descritto qui: raspberrypi.stackexchange.com/questions/68811/…
SDsolar

Risposte:


40

Fare un apt-get install ntpdate.

ntpdateverrà eseguito quando viene visualizzata un'interfaccia Ethernet e imposterà l'ora da un server ntp (vedi /etc/default/ntpdate).

Se ntpdè in esecuzione, ntpdate non farà nulla, tuttavia ntpdateverrà eseguito prima ntpdall'avvio - quindi questo dovrebbe funzionare per impostare l'ora all'avvio fintanto che c'è una connessione Ethernet.


Raspbian avrà già tutto questo.
scruss

7
@scruss mio no. (2013-02-09 wheezy rasbian)
Pete Kirkham,

1
Anche il mio no, ha dovuto farlo manualmente.
vaindil,

Se impostato correttamente, lo farà automaticamente, anche se potrebbero essere necessari alcuni minuti.
SDsolar,

Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linuxnon ce l'avevo.
emix

36

Se l'orologio è fuori orario, potrebbe essere necessario forzare la sincronizzazione di ntp effettuando:

sudo /etc/init.d/ntp stop
sudo ntpd -q -g
sudo /etc/init.d/ntp start

1
Restituisce l'errore "sudo: ntpd: comando non trovato"
Pigmalione

1
ntpd deve essere installato per usare il comando
thaspius,

3
Si è installato, non sono così ignorante :)
Pigmalione

Potresti visitare raspberrypi.stackexchange.com/questions/47542/… ? Ho pubblicato i dettagli lì.
Pigmalione,

3
Questa è stata assolutamente la soluzione al mio problema, ma l'ho trovato temporaneo fino al riavvio. Alla fine ho riscontrato un errore nello spegnimento che non è stato in grado di aggiornare l'orologio hw perché l'orologio hw aveva una data futura (non ho idea di come sia successo). Ma la soluzione era una forza di aggiornamento di hwclock. Ciò ha costretto l'aggiornamento al falso orologio hardware e quindi all'avvio il tempo era almeno vicino all'attuale, quindi ntp poteva fare normalmente il suo lavoro.
Piwaf,

34

Dopo aver cercato in giro, questo metodo ha funzionato per me. Come sai, Raspberry Pi 3 ha l'NTP disabilitato per impostazione predefinita. Quindi digitando questo, il supporto NTP sarà abilitato:

sudo timedatectl set-ntp True

Controlla il risultato con timedatectl status

In caso di avviso, potrebbe essere necessario eseguire sudo timedatectl set-local-rtc trueanche tu .


Grazie, questo alla fine mi ha aiutato e sembra essere la strada giusta, nonostante le risposte precedenti.
CharlieS,

1
Questa è la risposta migliore, mi ha aiutato molto. Puoi usare 'sudo' per evitare di digitare la tua password (utile per gli script che la eseguono). Qual è lo scopo del comando secondi? set-local-rtc
Arad,

12

Se si imposta il fuso orario in raspi-configRaspberry Pi, l'aggiornamento verrà automaticamente aggiornato all'avvio, se connesso a Internet.

  1. sudo raspi-config
  2. Selezionare Internationalisation Options
  3. Selezionare I2 Change Timezone
  4. Seleziona la tua area geografica
  5. Seleziona la città più vicina
  6. Selezionare Finish
  7. Seleziona Yesper riavviare ora

questo ha funzionato bene per me
AlexG

I2 Change Timezonel'opzione non esiste più
mrded

12

Vedi post sul forum Il tempo non si sincronizza su Pi 3 e con il dongle ufficiale .

ntpd emette pacchetti IP / UDP con il campo ToS impostato su 0xc0. Quindi è abbastanza simile all'altro problema che io (e molti altri) ho con Raspberry Pi3 quando operato tramite un'interfaccia interna Wi-Fi.

Per ovviare al problema, aggiungere il comando

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

al file

/etc/rc.local

prima dell'uscita 0 riga. Quindi, riavvia e controlla.


1
Ho avuto lo stesso problema di come ho installato l'RPi3 che ho ricevuto per XMas e tu hai risolto il mio problema. Grande !!!
jfmessier,

8

Dovrebbe già aggiornare l'ora. Il server NTPD dovrebbe avviarsi subito dopo il file di scambio e prima di SSHD.

Controlla il tuo file /etc/ntp.conf per assicurarti che sia configurato.

Dovrebbe elencare almeno un server. Uso time.nrc.ca per il mio server.

La pagina di manuale per ntp.conf è qui: http://linux.die.net/man/5/ntp.conf


3

Rasberry Pi di mio figlio non aggiornava il tempo fuori dalla scatola e dopo aver provato tutti i suggerimenti sopra ho potuto farlo aggiornare manualmente ma non automaticamente. Alla fine, dopo aver cercato altrove senza successo, ho scoperto che il file ntp.conf fornito con Rasberry Pi aveva commentato le seguenti righe:

#restrict 127.0.0.1
#restrict ::1

ero solito

sudo nano /etc/ntp.conf

nel terminale per modificare il file conf ntp per essere ora:

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

Questo ha risolto il problema per noi. Si aggiorna sia con il WiFi che con il cavo Ethernet. Non so se si aggiornerebbe con WiFi senza la modifica di rc.local suggerita sopra, poiché quando ho trovato la soluzione sopra avevo già apportato quella modifica e non l'ho annullata.


2

Ho trovato l' timedatectlapplicazione che mi ha aiutato quando avevo un problema simile. È installato di default e '--help' offre una panoramica abbastanza buona e semplice su come usare lo strumento.

Nota: assicurati che il fuso orario sia impostato correttamente, cosa che può fare anche questo strumento.


1

Questo è l'approccio che ho finito per seguire. Molte di queste risposte sembrano indicare cose che non sono state verificate quando ho guardato il mio sistema 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"

Non avevo nulla che apparisse nei log che indicava che timedatectlstava facendo qualcosa, o che si ntpstava sincronizzando sullo stato attivo della scheda NIC o che NTPD era persino installato / configurato.

Alla fine ho semplicemente aggiunto questo al mio /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..."

E installato ntp:

$ sudo apt-get install ntp

Che si traduce in questo in /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...

Non funziona su raspbian minimale: Failed to start ntp.service: Unit ntp.service not found.e ntpd non esiste neanche. Il Pi alla fine guadagna sicuramente tempo. (Sto esaminando questo perché i miei riccioli HTTPS falliscono senza -k quando vengono eseguiti prima di quello)
Steven Lu

@StevenLu - Aggiornerò A'er per includere anche l'installazione di ntp.
slm,

@StevenLu -apt-get install ntp
slm

1

Non è necessario utilizzare ntp per risolvere il problema. Esiste uno script che legge la data da un server e devi solo impostare la data come risultato di quello script (il tuo Raspberry Pi deve essere connesso a Internet). Quindi, è necessario eseguire quel comando all'avvio.

Step1: recupera la data da un server.

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

Step2: Esegui il comando all'avvio aggiungendolo al file /etc/rc.local(ha funzionato su Ubuntu 16.04).

sudo gedit /etc/rc.local

CREDITI:

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

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


0

Uso l'immagine seguente per sincronizzare l'ora senza installare pacchetti aggiuntivi:

timedatectl set-local-rtc 0
timedatectl set-ntp 1
timedatectl status
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.