web-dev-qa-db-fra.com

Mon horloge système se synchronise-t-elle automatiquement avec l'horloge matérielle?

Je sais que mon horloge matérielle est basée sur une simple horloge à quartz et va se désynchroniser avec le temps, mais l'heure du système est basée sur l'horloge du processeur et est donc extrêmement précise.

Je ne suis pas dans un environnement où je peux utiliser NTP et j'ai donc besoin de savoir si l'horloge système automatiquement se synchronisera avec l'horloge hw pour l'empêcher de dériver?

Si ce n'est pas le cas, je devrai configurer un travail cron ou quelque chose à appeler hwclock pour le synchroniser à nouveau avec l'horloge. Tout est réglé sur UTC, donc cela ne devrait pas être un problème.

1
N Jones

Je pense que cette page fournit la meilleure réponse:

2. Comment Linux garde la trace du temps

2.1 Stratégies de base

Un système Linux a en fait deux horloges: L’une est l’horloge en temps réel alimentée par batterie (également appelée "horloge temps réel", "horloge CMOS" ou "horloge matérielle"), qui garde la trace du temps auquel le système est éteint, mais n'est pas utilisé lorsque le système est en cours d'exécution. L'autre est "l'horloge système" (parfois appelée "horloge du noyau" ou "horloge logicielle"), qui est un compteur logiciel basé sur l'interruption du minuteur. Il n'existe pas lorsque le système n'est pas en cours d'exécution. Il doit donc être initialisé à partir de RTC (ou d'une autre source de temps) au moment du démarrage. Les références à "l'horloge" dans la documentation de ntpd font référence à l'horloge système et non au RTC.

Les deux horloges vont dériver à des rythmes différents, elles vont donc progressivement se séparer l'une de l'autre et s'éloigner du temps "réel". Le moyen le plus simple de les maintenir à l’heure consiste à mesurer leurs taux de dérive et à appliquer des facteurs de correction au logiciel. Le RTC n'étant utilisé que lorsque le système ne fonctionne pas, le facteur de correction est appliqué lors de la lecture de l'horloge au moment du démarrage, à l'aide de clock (8) ou hwclock (8). L'horloge système est corrigée en ajustant la vitesse d'avancement de l'heure système à chaque interruption de la minuterie, à l'aide de adjtimex (8).

Une alternative brute à adjtimex (8) consiste à utiliser une horloge chronologique (8) ou hwclock (8) pour synchroniser périodiquement l’heure du système sur le RTC (corrigé). Cela était recommandé dans la page de manuel clock (8), et cela fonctionne si vous le faites assez souvent pour ne pas causer de grands "sauts" dans l'heure du système, mais adjtimex (8) est une solution plus élégante. Certaines applications peuvent se plaindre si le temps passe en arrière.

La prochaine étape dans la précision consiste à utiliser un programme tel que ntpd pour lire l'heure périodiquement à partir d'un serveur de temps réseau ou d'une horloge radio, et à ajuster en permanence le débit de l'horloge système pour que les heures correspondent toujours, sans provoquer de "sauts" brusques l'heure du système. Si vous disposez toujours d'une connexion réseau au démarrage, vous pouvez ignorer complètement le RTC et utiliser ntpdate (fourni avec le package ntpd) pour initialiser l'horloge système à partir d'un serveur de temps (serveur local sur un réseau local ou un serveur distant sur Internet. Toutefois, si vous ne disposez parfois pas d'une connexion réseau ou si vous souhaitez que l'heure soit précise pendant la séquence de démarrage avant que le réseau ne soit actif, vous devez également conserver l'heure dans le RTC.

2
WinEunuuchs2Unix