/usr/share/doc/HOWTO/fr-html/Clock.html is in doc-linux-fr-html 2013.01-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.69">
<title>Mini HOWTO Clock</title>
</head>
<body>
<h1>Mini HOWTO Clock</h1>
<h2>Ron Bean, Dec. 1996 <code>rbean@execpc.com</code> (Adaptation
française par Gacquer frédéric
<code>gacquer@neuronnexion.fr</code>)</h2>
Dec. 1996
<hr>
<em>Jeudi 2 avril 1998 V 1.0.</em>
<hr>
<h2><a name="s1">1. Introduction</a></h2>
<p>Les puces d'horloge temps-réel sur les cartes
mères des PC (et même des stations de travail plus
onéreuses) sont de notoriété publique
inexactes. Linux fourni une manière simple pour corriger
cela de manière logicielle, rendant virtuellement l'horloge
*trés* précise même sans horloge externe. Mais
la plupart des personnes ne semblent pas être au courant,
pour plusieurs raisons :</p>
<ol>
<li>Ce n'est pas indiqué dans la plupart des documentations
"Comment installer linux", et cela serait difficile de le mettre en
place automatiquement au moment de l'installation du système
(bien que pas impossible en théorie, si vous avez un
modem).</li>
<li>Si vous essayez "man clock" vous obtiendrez clock(3), ce qui
n'est pas ce que vous souhaitez. (Essayez "man 8 clock").</li>
<li>La plupart des gens ne semblent pas tenir compte de l'heure
qu'il est de toute façon.</li>
<li>Le peu qui y font attention régulièrement veulent
utiliser le logiciel xntpd de louie.udel.edu pour se synchroniser
à une horloge externe, comme un serveur réseau de
temps ou une horloge radio.</li>
</ol>
<p>Ce mini-howto décrit une approche de bas-niveau. Si vous
êtes vraiment intéressé par ce genre de chose,
je vous recommende vivement de passer du temps à <a href=
"http://www.eecis.udel.edu/~ntp/">http://www.eecis.udel.edu/~ntp/</a>
qui inclus toutes sortes de choses intéressantes, incluant
une documentation complète sur xntpd et des liens sur NIST
et USNO (j'ai quelques commentaires supplémentaires sur
xntpd à la fin.)</p>
<p><em>Note</em> si vous avez plus d'un système
d'exploitation sur votre machine, vous devez en laisser seulement
un remettre à jour l'horloge CMOS, ainsi ils
n'interfèrerons pas l'un envers l'autre. Si vous
exécutez régulièrement à la fois linux
et windows sur la même machine, vous pourriez
éventuellement préférer quelques uns des
programmes sharewares de gestion de l'horloge disponible pour
windows (suivre les liens à partir de l'URL ci-dessus).</p>
<h2><a name="s2">2. Utiliser le programme 'clock'</a></h2>
<p>Tout ce que vous devez savoir est dans la page de manuel
clock(8), mais ce mini-HOWTO va vous guider pas à pas.</p>
<p><em>Note</em> Vous devez être root pour exécuter
'clock', ou n'importe quel autre programme qui modifie soit le
temps système soit l'horloge CMOS.</p>
<h2><a name="ss2.1">2.1 Vérifier votre installation</a></h2>
<p>Cherchez dans vos fichiers de démarrage une commande du
style 'clock -a' ou 'clock -ua'. Selon la distribution que vous
utilisez, cela peut être dans <code>/etc/rc.local</code>,
<code>/etc/rc.d/rc.sysinit</code>, ou dans un endroit
similaire.</p>
<p>Si c'est 'clock -s' ou 'clock -us', changez le 's' en 'a', puis
regardez si vous avez un fichier <code>/etc/adjtime</code>, ne
contenant qu'une ligne ressemblant à quelque chose comme
cela :</p>
<blockquote>
<pre>
<code> 0.000000 842214901 0.000000
</code>
</pre></blockquote>
<p>Ces nombres sont le facteur de correction (en secondes par
jour), le moment où l'horloge a été
réajustée la dernière fois (en secondes depuis
le 1er janvier 1970), et les secondes partielles qui ont
été arrondies la dernière fois. Si vous n'avez
pas ce fichier, connectez vous en tant que root et créez le,
avec une seule ligne qui ressemble à (que des zéros)
:</p>
<blockquote>
<pre>
<code> 0.0 0 0.0
</code>
</pre></blockquote>
<p>Ensuite exécutez 'clock -a' ou 'clock -ua' manuellement
à partir du shell pour mettre à jour le
deuxième nombre (utiliser le 'u' si votre horloge est
configurée en Universel plutôt que temps local).</p>
<h2><a name="ss2.2">2.2 Mesurer le taux de dérive temporelle
de votre horloge</a></h2>
<p>Pour commencer, vous devez connaitre l'heure qu'il est :-).
Votre temps local du jour peut ou peut ne pas être exact. Ma
méthode préférée est d'appeler
l'horloge parlante au 3699 (c'est un appel gratuit). Si vous avez
accés à un serveur réseau de temps, vous
pouvez utiliser le programme ntpdate du progiciel xntpd (utiliser
le paramètre -b pour empêcher le noyau de cafouiller
l'horloge CMOS). Sinon utiliser 'date -s hh:mm:ss' pour mettre
l'heure système à la main, puis 'clock -w' pour
mettre à jour l'horloge CMOS à partir de l'heure du
système. Vous devrez vous rappeler la dernière fois
que vous avez changé l'heure, donc écrivez la date
quelque part où vous ne la perdrez pas. Si vous avez
utilisé ntpdate, faire 'date +%s' et écrire le nombre
de secondes depuis le 1er janvier 1970.</p>
<p>Puis revenez quelques jours ou semaines après et regardez
de combien l'horloge a dérivé. Si vous mettez
l'horloge à jour à la main, je vous recommanderais
d'attendre au moins deux semaines, et de seulement calculer le taux
de dérive le plus proche d'un dixième de secondes par
jour. Après plusieurs mois vous pourrez obtenir le plus
proche d'un centième de secondes par jour (quelques
personnes affirment être encore plus précis mais je
resterais prudent dans ce cas). Si vous utilisez ntpdate, vous
n'aurez pas à attendre si longtemps, mais dans tous les cas
vous pourrez toujours affiner plus tard.</p>
<p>Vous pouvez avoir cron qui exécute 'clock -a' à
des moments réguliers pour garder le temps système en
accord avec le temps (corrigé) CMOS. Cette commande sera
aussi exécutée à partir de vos fichiers de
démarrage à chaque fois que vous relancerez le
système, ainsi si vous le faites souvent (comme quelques uns
d'entre nous le font), cela peut suffire à vos besoins.</p>
<p>Remarquez que certains programmes peuvent se plaindrent si le
système saute plus d'une seconde à la fois, ou s'il
retranche du temps. Si vous avez ce problème, vous pouvez
utiliser xntpd ou ntpdate pour corriger le temps plus
graduellement.</p>
<h2><a name="ss2.3">2.3 Exemple</a></h2>
<h3>Mettre à jour le temps</h3>
<p>Se connecter root. Appeler le 3699 (vocal), écouter
l'annonce de l'heure. Puis taper:</p>
<blockquote>
<pre>
<code> date -s hh:mm:ss
</code>
</pre></blockquote>
<p>Mais ne tapez Entrée que lorsque vous entendez le bip.
(vous pouvez utiliser 'ntpdate' ici plutôt que 'date', et
éviter l'appel téléphonique). Cela met
à jour le 'temps noyau'. Puis taper :</p>
<blockquote>
<pre>
<code> clock -w
</code>
</pre></blockquote>
<p>Cela met à jour l'horloge CMOS pour correspondre au temps
noyau. Puis taper:</p>
<blockquote>
<pre>
<code> date +%j
</code>
</pre></blockquote>
<p>(ou 'date +%s' si vous utilisez 'ntpdate', plutôt que
'date' ci-dessus) et écrire le nombre qu'il vous donne pour
la prochaine fois.</p>
<h3>Pour remettre à jour le temps et vérifier le taux
de dérive</h3>
<p>Trouver la date que vous avez écrit la dernière
fois. Se connecter root puis taper:</p>
<blockquote>
<pre>
<code> clock -a
</code>
</pre></blockquote>
<p>Cela met à jour le temps noyau qui correspond ainsi au
temps CMOS. Appeler le 3699 (vocal), écouter l'annonce. Puis
taper :</p>
<blockquote>
<pre>
<code> date
</code>
</pre></blockquote>
<p>et appuyer sur Entrée quand vous entendez le signal
sonore, mais alors que vous attendez, notez le temps
annoncé, et ne raccrochez pas de suite. Cela vous dit
à quel temps votre machine pensait être, quand cela
aurait du être exact à la minute. Maintenant entrez
:</p>
<blockquote>
<pre>
<code> date hh:mm:00
</code>
</pre></blockquote>
<p>utilisant la minute *après* celle qui vient juste
d'être annoncée, et appuyez sur entrée quand
vous entendez le signal sonore à nouveau (maintenant vous
pouvez raccrocher). Pour hh utiliser le temps local. Cela met
à jour le 'temps noyau'.</p>
<p>Puis taper :</p>
<blockquote>
<pre>
<code> clock -w
</code>
</pre></blockquote>
<p>qui écrit le nouveau (correct) temps dans l'horloge CMOS.
Maintenant tapez :</p>
<blockquote>
<pre>
<code> date +%j
</code>
</pre></blockquote>
<p>(ou 'date +%s' si c'est ce que vous avez utilisé
avant).</p>
<p>Vous avez maintenant trois nombres (deux dates et une heure) qui
vont vous permettre de calculer la dérive de temps.</p>
<h3>Calculer le facteur de correction</h3>
<p>quand vous exécutez 'date' à l'instant, est-ce que
votre machine était en avance ou en retard ? Si elle
avançait, vous aurez à retrancher quelques secondes,
alors écrivez le comme un nombre négatif. Si elle
retardait, vous aurez à ajouter quelques secondes, alors
écrivez le comme positif.</p>
<p>Maintenant soustrayez les deux dates. Si vous avez
utilisé 'date +%j', les nombres représentent le jour
de l'année (1-365, ou 1-366 pour les années
bissextiles). Si vous avez passé le 1er janvier depuis votre
dernière modification horaire vous aurez à ajouter
365 (ou 366) au deuxième nombre. Si vous avez utilisé
'date +%s' alors votre nombre est en secondes, et vous aurez
à le diviser par 86400 pour obtenir des jours.</p>
<p>Si vous avez déjà un facteur de correction dans
<code>/etc/adjtime</code>, vous aurez à tenir compte du
nombre de secondes que vous avez déjà corrigé.
Si vous avez trop corrigé, ce nombre aura le signe
opposé à celui que vous venez juste de mesurer; si
vous n'avez pas assez corrigé il aura le même signe.
Multipliez l'ancien facteur de correction par le nombre de jour, et
ensuite ajouter le nouveau nombre de secondes (addition
signée -- si les deux nombres ont le même signe, vous
obtiendrez un nombre plus grand, s'ils ont des signes
opposés vous aurez un nombre plus petit).</p>
<p>Puis divisez le nombre total de secondes par le nombre de jours
pour obtenir le nouveau facteur de correction, et le mettre dans
<code>/etc/adjtime</code> à la place de l'ancien. Conservez
la nouvelle date (en secondes par jour) pour la prochaine fois.</p>
<p>Voici à quoi ressemble mon <code>/etc/adjtime</code>
:</p>
<blockquote>
<pre>
<code> -9.600000 845082716 -0.250655
</code>
</pre></blockquote>
<p><em>Note</em> (on remarque que 9.6 secondes par jour c'est
presque 5 minutes par mois !)</p>
<h2><a name="ss2.4">2.4 Quelques mots à propos de
xntpd</a></h2>
<p>Votre système a en fait deux horloges -- l'horloge temps
réel sur batterie qui garde trace du temps quand le
système est éteint (aussi connue comme "l'horloge
CMOS", "horloge matérielle" ou "RTC") et le 'temps noyau'
(parfois appellée "horloge logicielle" ou "horloge
système") qui est basé sur l'interruption timer et
qui est initialisée à partir de l'horloge CMOS au
démarrage du système. Les deux vont dériver
à des rythmes différents, ainsi elles vont
graduellement s'écarter l'une de l'autre, tout en
s'écartant du temps 'réel'.</p>
<p>Toutes les références à "l'horloge" dans la
documentation de xntpd se réfèrent à
"l'horloge noyau". Quand vous exécutez xntpd ou timed (ou
n'importe quel autre programme qui utilise l'appel système
adjtimex), le noyau linux suppose que l'horloge du noyau est plus
précise que l'horloge CMOS, et remets à jour le temps
CMOS toutes les 11 minutes à partir de ce moment
(jusqu'à ce que l'on relance l'ordinateur). Cela signifie
que 'clock' ne sais plus quand l'horloge CMOS a été
modifié la dernière fois, ainsi vous ne pouvez plus
utiliser le facteur de correction dans <code>/etc/adjtime</code>.
Vous pouvez utiliser ntpdate dans votre fichier de démarrage
pour mettre à jour initialement l'horloge à partir
d'un serveur de temps avant de lancer xntpd. Si vous n'avez pas
toujours accés à une source fiable de temps lors de
l'allumage de l'ordinateur, cela peut être un peu
gênant -- xntpd n'est pas vraiment conçu pour
être utilisé dans des situations comme celles
là.</p>
<p>Xntpd inclue des drivers pour plusieurs horloges radio, et peut
être configuré pour appeler le service de temps
téléphonique de NIST à des temps
réguliers (soyez sûr de calculer l'incidence sur votre
facture téléphonique lors du paramétrage de
l'intervalle entre deux appels). Il peut aussi appliquer un facteur
de correction à l'horloge noyau s'il perd contact avec les
autres sources pour une période de temps assez longue.</p>
<p>La plupart des horloges radio coûtent 3-4000$, mais vous
pouvez obtenir des plans pour une 'boite gadget' peu chère
(en fait un modem 300 baud) qui se met entre votre ordinateur et
n'importe quelle radio onde courte réglée sur la
station de temps canadienne CHU (voir <a href=
"ftp://ftp.udel.edu/pub/ntp/gadget.tar.Z">ftp://ftp.udel.edu/pub/ntp/gadget.tar.Z</a>).
Le récepteur Heathkit WWV ("l'Horloge la Plus
Précise") est aussi encore disponible (bien que
n'étant pas en kit), et coûte aux environs de 4-500 $.
Les signaux GPS contiennent aussi des informations de temps, et
quelques recepteurs GPS peuvent se connecter sur le port
série. Cela peut être la solution la moins
onéreuse dans un futur proche.</p>
<p>En théorie, on peut écrire un programme pour
utiliser le service de temps téléphonique NIST pour
calculer automatiquement le taux de dérive de l'horloge CMOS
et de l'horloge noyau. Je ne suis pas au courant d'un quelconque
programme démon qui ferait cela, mais la plupart du code
peut être emprunté à xntpd.</p>
</body>
</html>
|