Synchroniser PI3 avec ntp

Le raspberry PI3 n’est pas équipé pour maintenir la date et l’heure système à jour quand il est hors tension (1). A la mise sous tension, le PI3 n’a aucune notion de la date et de l’heure.

Episode I: pas de réseau…
J’ai installé sur ma Raspberry PI 3 une Raspbian Jessie.
Au premier boot, en l’absence de toute connexion réseau, il semblerait que l’horloge système s’initialise sur la date et l’heure auxquelles le noyau a été généré, soit à peu près le 23/05/2016 20:10 heure anglaise (2,3). L’horloge système se met alors en route à partir de cette ‹ date zéro ›. on peut voir la date système progresser avec la commande ‹ date ›.
Il semble aussi que la date système soit stockée au fil du temps sur la mémoire flash de la PI3 (5). En effet, lors des redémarrages suivants avec mise hors tension, la date système (4) se remet à jour avec la date à laquelle le système a été mis hors tension (6).

En résumé, en l’absence de connexion réseau, pendant les périodes où raspbian tourne sur une PI3, il compte le temps continument (ce compte est suspendu quand le PI3 est hors tension).

Episode II: mettre les pendules à l’heure avec le Network Time Protocol
Dans la distrib raspbian jessie le démon ntpd est configuré en standard (7). Dès que la connexion est établie avec internet (8), le démon va se synchroniser avec les serveurs configurés (9), et la machine se met à l’heure (10) toute seule.

En résumé: pas besoin de configurer NTP. Il suffit de démarrer la connexion de la PI3 avec internet, et de configurer la TIMEZONE correctement pour que la PI3 soit à l’heure.

La commande ‹ ntpq -p › permet de voir la liste des serveurs de temps avec lesquelles la PI3 se synchronise, et la précision de synchronisation (11).
Au démarrage du démon chacun des serveurs est interrogé toutes les 64s. Progressivement, la fréquence des requêtes diminue jusqu’à une requête toutes les 1024 secondes.

Episode III: garder la machine à l’heure…même en cas de coupure?
Comme indiqué ci-dessus, le comptage du temps s’arrête sur un PI3 hors tension. A la remise sous tension, soit il y a du réseau et la synchro NTP reprend comme précédemment (12), soit on est hors réseau, et le temps système sera en retard de la durée de la coupure de courant.

Note 1: les machines maintiennent la date et l’heure même hors tension sont généralement équipées d’un circuit d’horloge spécialisé, alimenté sur une pile (au lithium le plus souvent).
Note 2: Je n’ai pas gardé de trace de ce premier démarrage, il faudra que je refasse une manip pour caractériser ça.
Note 3: La commande ‹ uname -srv › dans une console me donne:
Linux 4.4.11-v7+ #888 SMP Mon May 23 20:10:33 BST 2016
Note 4: Ici, la ‹ date › c’est l’information ‹ année, mois, jour, heure, minute, seconde ›. La précision est à la seconde près (ou mieux, il faut que je fouille).
Note 5: il faut aussi que je voie comment raspbian fait ça, et où c’est stocké.
Note 6: quelle est la dernière date connue: celle du power off? ou celle du ‹ shutdown -h ›
Note 7: je ne sais pas ce qu’il en est de la version lite. On peut « voir » le démon avec: ‹ ps -aux | grep ntp ›
Note 8: Le démon ntp va chercher des serveurs listés dans des pools de serveurs sur internet. Si on monte une connexion avec un réseau local qui contient un serveur NTP ‹ privé › mais qui ne donne pas accès à internet, ça ne devrait pas marcher sans configurer spécifiquement le démon ntp pour aller chercher ce serveur ‹ privé ›.
Note 9: on a un pool (choisi comment?) de 4 serveurs parmi une liste de serveurs connus (trouver la liste…?). Un pool différent apparaît à chaque fois que la machine ou? le système ou? le démon ntp redémarre.
Note 10: A l’heure française, si la timezone PARIS a été configuré dans les paramètres d’install.
Note 11: La pire valeur relevée est inférieure à 15ms.
Note 12: Il serait intéressant d’évaluer ce qui se passe quand on rallume la machine et qu’on la reconnecte à internet… à l’autre bout du monde. Le choix des pools de serveurs risque d’influer sur la précision de la synchro. Et ce choix dépend peut-être de la TIMEZONE configurée qui représente la seule (13) info de géolocalisation dont dispose le système a priori.
Note 13: Bon évidemment, si le PI3 est raccordé à une source de temps qui ne passe pas par internet (GPS, source de temps industrielle ‹ 1 PPS ›) une bonne partie de ce que j’ai écrit ci-dessus est à reconsidérer. Mais ce n’est pas (et de loin) dans la conf standard de la distribution.

1 « J'aime »