Passer Debian d’UTC à heure locale

Les ordinateurs disposent en général de deux horloges internes (ou du moins c’est ainsi que le voient les systèmes d’exploitation), l’horloge qui cadence le processeur, et l’horloge temps réel (RTC), qui est alimentée par une batterie au lithium et offre un suivi de la date et l’heure courants.

Lors du démarrage, les systèmes d’exploitation modernes lisent l’heure et la date depuis la RTC, sauvent cette information en interne, y appliquent quelques correction si nécessaire, puis utilisent l’horloge processeur par la suite lors d’appel aux fonctions temporelles.

Certains systèmes d’exploitations font une gymnastique un peu complexe en se référant à l’heure universelle (UTC) stockée dans l’horloge temps réel et les données de localisation dont ils disposent afin de calculer l’heure locale. D’autres font plus simple en s’assurant simplement que l’horloge temps réel est réglée à l’heure locale.

Sauf que lorsqu’on installe deux de ces systèmes côte à côte, on se retrouve immanquablement avec l’un d’eux en avance (ou en retard).

Dans mon cas, j’ai installé Debian (qui se réfère à UTC par défaut) avec un autre système d’exploitation qui lui utilise l’heure locale. Comme j’avais oublié de préciser lors de l’installation que je souhaitais utiliser l’heure locale, ma Debian était donc toujours en avance.

En fouinant un peu, j’ai trouvé qu’il fallait changer une valeur dans /etc/defaul/rcS. Seulement voilà, un commentaire suivant cette valeur indique qu’elle est obsolète, et effectivement elle l’est.

Un autre commentaire indique lui de regarder le fichier /etc/adjtime. Hors ledit fichier est particulièrement obscur, voyez donc ci-dessous.

1.023838 1339621765 0.000000
1339621765
UTC

En fouinant un peu plus, j’ai trouvé la description du format. Le premier chiffre indique la dérive de l’horloge interne en secondes par jour, le second correspond à l’Epoch (nombre de secondes depuis le 01/01/1970) après correction et le dernier est juste la valeur de zéro utilisée, pour des raisons de rétro-compatibilité.

La seconde ligne indique l’Epoch du dernier calibrage de l’horloge interne. Enfin la troisième ligne indique si l’horloge temps réel est à l’heure locale ou universelle ; ici elle est à l’heure universelle (UTC). On veut la régler à l’heure locale. Pour cela, il suffit d’éditer le fichier et remplacer UTC par LOCAL. Ensuite, assurez vous que le système soit bien à l’heure (avec la commande date), et le tour est joué!

Vus : 1719
Publié par Etenil : 58