¿Cómo forzar a NTPD a actualizar la fecha / hora después del arranque?

63

La Raspberry Pi carece de un reloj de hardware. ¿Cómo fuerzo a NTPD a actualizar la fecha / hora inmediatamente después de cada arranque?

Estoy ejecutando Raspbian y la Raspberry Pi está conectada mediante un cable Ethernet .

Alessandro Da Rugna
fuente
El mío ya lo hace fuera de la caja. ¿Qué disto estás usando?
Gerben
Raspbian Wheezy
Alessandro Da Rugna
funciona como es, de alguna manera
lenik 01 de
1
@Thorb Pi está conectado con un cable de ethernet / dhcp. Simplemente no obtiene una fecha válida después del arranque, lleva un tiempo (10 a 45 minutos)
Alessandro Da Rugna
1
Lo hará automáticamente, después de un par de minutos. Asegúrese de haberlo configurado para usar el reloj maestro en la Oficina Nacional de Normas, time.nist.gov como se describe aquí: raspberrypi.stackexchange.com/questions/68811/…
SDsolar

Respuestas:

40

Hacer un apt-get install ntpdate.

ntpdatese ejecutará cuando aparezca una interfaz Ethernet y establecerá la hora desde un servidor ntp (consulte /etc/default/ntpdate).

Si se ntpdestá ejecutando, ntpdate no hará nada, sin embargo, ntpdatese ejecutará antes del ntpdarranque, por lo que esto debería funcionar para establecer el tiempo en el arranque siempre que haya una conexión Ethernet.

nos
fuente
Raspbian stock ya tendrá todo esto.
scruss
77
@scruss la mía no lo hizo. (2013-02-09 wheezy rasbian)
Pete Kirkham
1
El mío tampoco, tenía que hacerlo manualmente.
vaindil
Si está configurado correctamente, lo hará automáticamente, aunque puede tardar unos minutos.
SDsolar
Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/LinuxNo lo tenía también.
emix
36

Si su reloj está apagado, es posible que deba forzar a ntp para que se sincronice haciendo:

sudo /etc/init.d/ntp stop
sudo ntpd -q -g
sudo /etc/init.d/ntp start
thaspius
fuente
1
Devuelve el error "sudo: ntpd: comando no encontrado"
Pygmalion
1
ntpd debe estar instalado para usar el comando
thaspius
3
Que está instalado, no soy tan ignorante :)
Pygmalion
¿Podría visitar raspberrypi.stackexchange.com/questions/47542/… ? He publicado detalles allí.
Pigmalión
3
Esta fue absolutamente la solución a mi problema, pero encontré que era temporal hasta que reinicié. Finalmente, detecté un error en el apagado que no podía actualizar el reloj hwclock porque el reloj hw tenía una fecha futura (no tengo idea de cómo sucedió eso). Pero la solución fue una fuerza de actualización hwclock. Eso forzó la actualización del reloj de hardware falso y luego, al arrancar, el tiempo era al menos cercano al actual para que ntp pudiera hacer su trabajo normalmente.
Piwaf
34

Después de buscar, este método funcionó para mí. Como sabes, la Raspberry Pi 3 tiene NTP deshabilitado por defecto. Entonces, simplemente escribiendo esto, se habilitará el soporte NTP:

sudo timedatectl set-ntp True

Verificar resultado con timedatectl status

En caso de advertencia, es posible que deba ejecutar sudo timedatectl set-local-rtc truetambién.

Ariyankj
fuente
Gracias, esto finalmente me ayudó, y parece ser la forma correcta, a pesar de las respuestas anteriores.
CharlieS
1
Esa es la mejor respuesta, me ayudó mucho. Puede usar 'sudo' para evitar escribir su contraseña (útil para los scripts que la ejecutan). ¿Cuál es el propósito del comando segundos? set-local-rtc
Arad
12

Si configura la zona horaria en raspi-configla Raspberry Pi, se actualizará automáticamente la hora de inicio, si está conectado a Internet.

  1. sudo raspi-config
  2. Seleccionar Internationalisation Options
  3. Seleccionar I2 Change Timezone
  4. Seleccione su área geográfica
  5. Selecciona tu ciudad más cercana
  6. Seleccionar Finish
  7. Seleccione Yespara reiniciar ahora
mwd27
fuente
esto funcionó bien para mí
AlexG
I2 Change Timezonela opción ya no existe
mrded
12

Ver publicación en el foro El tiempo no se sincroniza en Pi 3 y con el dongle oficial .

ntpd emite paquetes IP / UDP con el campo ToS establecido en 0xc0. Entonces, eso es bastante similar al otro problema que tengo (y muchos otros) con Raspberry Pi3 cuando se opera a través de una interfaz interna Wi-Fi.

Como solución alternativa, agregue el comando

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

al archivo

/etc/rc.local

antes de la línea de salida 0. A continuación, reinicie y verifique.

pradeep
fuente
1
Tuve el mismo problema que cuando instalé el RPi3 que obtuve para XMas, y resolviste mi problema. Excelente !!!
jfmessier
8

Ya debería estar actualizando la hora. El servidor NTPD debe iniciarse justo después del archivo de intercambio y antes de SSHD.

Verifique su archivo /etc/ntp.conf para asegurarse de que esté configurado.

Debe enumerar al menos un servidor. Yo uso time.nrc.ca para mi servidor.

La página del manual para ntp.conf está aquí: http://linux.die.net/man/5/ntp.conf

Rod MacPherson
fuente
3

La Rasberry Pi de mi hijo no actualizó el tiempo fuera de la caja y después de probar todas las sugerencias anteriores pude hacer que se actualizara manualmente pero no automáticamente. Finalmente, después de buscar también en otro lugar sin éxito, descubrí que el archivo ntp.conf que venía con Rasberry Pi tenía las siguientes líneas comentadas:

#restrict 127.0.0.1
#restrict ::1

solía

sudo nano /etc/ntp.conf

en la terminal para editar el archivo ntp conf para que ahora sea:

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

Eso resolvió el problema para nosotros. Se actualiza tanto con WiFi como con el cable de Ethernet. No sé si se actualizaría con WiFi sin el cambio a rc.local sugerido anteriormente, ya que cuando encontré la solución anterior ya había hecho ese cambio y no lo he deshecho.

deLabe
fuente
2

Encontré la timedatectlaplicación para ayudarme cuando tenía un problema similar. Se instala por defecto y '--help' ofrece una descripción general bastante buena y simple de cómo usar la herramienta.

Nota: asegúrese de que su zona horaria esté configurada correctamente, lo que esta herramienta también puede hacer.

Adam parsons
fuente
1

Este es el enfoque que terminé tomando. Muchas de estas respuestas parecían indicar cosas que simplemente no se verificaron cuando miré mi 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"

No aparecía nada en los registros que indicara que timedatectlestaba haciendo algo, o que se ntpestaba sincronizando en el estado activo de la NIC, o que NTPD estaba incluso instalado / configurado.

Al final, simplemente agregué esto a mi /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 instalado ntp:

$ sudo apt-get install ntp

Lo que resulta en esto en /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
fuente
No funciona en raspbian mínimo: Failed to start ntp.service: Unit ntp.service not found.y ntpd tampoco existe. El Pi definitivamente gana tiempo. (Estoy investigando esto porque mis rizos HTTPS fallan sin -k cuando se ejecutan antes de eso)
Steven Lu
@StevenLu: actualizaré el A'er para incluir también la instalación de ntp.
slm
@StevenLu -apt-get install ntp
slm
1

No necesita usar ntp para resolver el problema. Hay un script que lee la fecha de un servidor y solo necesita establecer la fecha para que sea el resultado de ese script (su Raspberry Pi debe estar conectada a Internet). Luego, debe ejecutar ese comando al inicio.

Paso 1: recuperar la fecha de un servidor.

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

Paso 2: Ejecute el comando al inicio agregándolo al archivo /etc/rc.local(Funcionado en Ubuntu 16.04).

sudo gedit /etc/rc.local

CRÉDITOS

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

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

Amjad Abujamous
fuente
0

Utilizo lo siguiente en la imagen predeterminada para sincronizar el tiempo sin instalar paquetes adicionales:

timedatectl set-local-rtc 0
timedatectl set-ntp 1
timedatectl status
Wu Haa
fuente