Ten siempre en hora tu Raspberry Pi con NTP

Si recordáis, hace poco instalé Arch Linux ARM en mi Raspberry Pi y una de las primeras tareas fue cambiar la zona horaria. Sin embargo, al reiniciar el dispositivo, la fecha del sistema siempre arranca en epoch, es decir, el 1 de enero de 1970 (más información en una de nuestras pasadas y apocalípticas entradas). La razón está clara, ¿a qué no has visto ninguna pila en la placa?. Efectivamente, Raspberry Pi no dispone de reloj RTC...

Ahora tenemos tres opciones: 1/ añadir y configurar nuestro propio reloj de sistemas por hardware-reloj, 2/ hacer una "ñapa" por software tipo fake-hwclock (salvar la hora en un fichero y cargarla al inicio) o 3/ ser más precisos e instalar NTP para sincronizar la hora, que es la solución más barata y eficiente si nuestra RPi tiene conexión a red en el arranque. Así que ¡vamos con ello!
   
Entre ntpd o openntpd (ntpdate está ya discontinuado) me quedo con el primero. Así que empezamos a instalarlo:
[usuario1@pirobot1 rc.d]$ sudo pacman -Sy ntp
[sudo] password for usuario1:
:: Synchronizing package databases...
 core                                                                  38.6 KiB  86.2K/s 00:00 [#######################################################] 100%
 extra                                                                443.9 KiB   227K/s 00:02 [#######################################################] 100%
 community                                                            460.5 KiB   280K/s 00:02 [#######################################################] 100%
 alarm                                                                  6.0 KiB  1057K/s 00:00 [#######################################################] 100%
 aur is up to date                                                      0.0   B  0.00B/s 00:00 [-------------------------------------------------------]   0%
resolving dependencies...
looking for inter-conflicts...

Targets (1): ntp-4.2.6.p5-13

Total Download Size:    0.38 MiB
Total Installed Size:   1.46 MiB

Proceed with installation? [Y/n]
:: Retrieving packages from extra...
 ntp-4.2.6.p5-13-armv6h                                               388.3 KiB   182K/s 00:02 [#######################################################] 100%
(1/1) checking package integrity                                                               [#######################################################] 100%
(1/1) loading package files                                                                    [#######################################################] 100%
(1/1) checking for file conflicts                                                              [#######################################################] 100%
(1/1) checking available disk space                                                            [#######################################################] 100%
(1/1) installing ntp                                                                           [#######################################################] 100%
Optional dependencies for ntp
    libedit: ntpdc, ntpq
A continuación volveremos a seleccionar nuestra zona horaria mediante el comando timedatectl, que lo único que hará es enlazarla (symlink) con /etc/localtime.
[usuario1@pirobot1 rc.d]$ sudo timedatectl set-timezone Europe/Madrid
Comprobamos...
[usuario1@pirobot1 rc.d]$ sudo timedatectl status
      Local time: Tue 2013-02-12 14:07:56 CET
  Universal time: Tue 2013-02-12 13:07:56 UTC
        Timezone: Europe/Madrid (CET, +0100)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: no
 Last DST change: DST ended at
                  Sun 2012-10-28 02:59:59 CEST
                  Sun 2012-10-28 02:00:00 CET
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sun 2013-03-31 01:59:59 CET
                  Sun 2013-03-31 03:00:00 CEST
Ahora tenemos que modificar el fichero de configuración. Para ello empezamos indicando como servidores NTP una lista de alias que hacen referencia a servidores nacionales. Además de estos servidores, podemos añadir alguno más, que podemos conseguir en la página de servidores NTP públicos (http://www.pool.ntp.org/). 

Se recomienda usar la opción iburst eya que envía una serie («burst») de paquetes solo si no se puede obtener una conexión con el primer intento:     
vi /etc/ntp.conf
[root@pirobot1 ~]# vi /etc/ntp.conf
# With the default settings below, ntpd will only synchronize your clock.
#
# For details, see:
# - the ntp.conf man page
# - http://support.ntp.org/bin/view/Support/GettingStarted
# - https://wiki.archlinux.org/index.php/Network_Time_Protocol_daemon

# Associate to public NTP pool servers; see http://www.pool.ntp.org/
 server 3.es.pool.ntp.org iburst
 server 0.europe.pool.ntp.org iburst
 server 2.europe.pool.ntp.org iburst
Ahora como solo queremos sincronizar nuestro reloj del sistema sin atender peticiones externas de otros equipos, aplicamos lo siguiente con el objetivo de denegar dichas peticiones:
# Only allow read-only access from localhost
restrict default noquery nopeer
restrict 127.0.0.1
restrict ::1
Después, especificamos la ubicación del archivo drift (que realiza un seguimiento de la desviación del horario del sistema) y, opcionalmente, la ubicación del archivo de registro:
# Location of drift file
driftfile /var/lib/ntp/ntp.drift
Posteriormente sincronizamos manualmente la hora:
[root@pirobot1 ~]# ntpd -qg
ntpd: time set +1360794632.505991s
[root@pirobot1 ~]# date
Wed Feb 13 23:47:48 CET 2013              
Por último, sólo nos queda añadir el daemon al inicio mediante systemctl.

Para los que todavía añoren systemv/initscripts decirles que systemd es más rápido, modular y seguro, tiene capacidades “hotplug”, lleva un registro (journal) mediante cgroups y paraleliza la activación de daemons mediante sockets entre otras ventajas...
root@pirobot1 ~]# systemctl enable ntpd
ln -s '/usr/lib/systemd/system/ntpd.service' '/etc/systemd/system/multi-user.target.wants/ntpd.service'

[root@pirobot1 ~]# systemctl start ntpd
Y ya tenemos nuestra Raspberry Pi preparada para estar siempre en hora y lista para empezar a hacer cosas más serias...

Comentarios

  1. Me sale error al utilizar sudo pacman -Sy ntp, me dice que no se encuentra el comando pacman "sudo: pacman: command not found"

    ResponderEliminar

Publicar un comentario