Tout ce que vous devez savoir est dans la page de manuel clock(8), mais ce mini-HOWTO va vous guider pas � pas.
Note 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.
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 /etc/rc.local
, /etc/rc.d/rc.sysinit
, ou dans un endroit
similaire.
Si c'est 'clock -s' ou 'clock -us', changez le 's' en 'a', puis
regardez si vous avez un fichier /etc/adjtime
, ne contenant qu'une
ligne ressemblant � quelque chose comme cela :
0.000000 842214901 0.000000
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) :
0.0 0 0.0
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).
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.
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.
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.
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.
Se connecter root. Appeler le 3699 (vocal), �couter l'annonce de l'heure. Puis taper:
date -s hh:mm:ss
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 :
clock -w
Cela met � jour l'horloge CMOS pour correspondre au temps noyau. Puis taper:
date +%j
(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.
Trouver la date que vous avez �crit la derni�re fois. Se connecter root puis taper:
clock -a
Cela met � jour le temps noyau qui correspond ainsi au temps CMOS. Appeler le 3699 (vocal), �couter l'annonce. Puis taper :
date
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 :
date hh:mm:00
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'.
Puis taper :
clock -w
qui �crit le nouveau (correct) temps dans l'horloge CMOS. Maintenant tapez :
date +%j
(ou 'date +%s' si c'est ce que vous avez utilis� avant).
Vous avez maintenant trois nombres (deux dates et une heure) qui vont vous permettre de calculer la d�rive de temps.
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.
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.
Si vous avez d�j� un facteur de correction dans /etc/adjtime
, 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).
Puis divisez le nombre total de secondes par le nombre de jours pour
obtenir le nouveau facteur de correction, et le mettre dans
/etc/adjtime
� la place de l'ancien. Conservez la nouvelle date
(en secondes par jour) pour la prochaine fois.
Voici � quoi ressemble mon /etc/adjtime
:
-9.600000 845082716 -0.250655
Note (on remarque que 9.6 secondes par jour c'est presque 5 minutes par mois !)
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'.
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 /etc/adjtime
. 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�.
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.
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 ftp://ftp.udel.edu/pub/ntp/gadget.tar.Z). 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.
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.
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:40