Provided by:
manpages-fr-extra_20101103_all 
NOM
hwclock - Interrogation et ajustement de l'horloge machine (RTC)
SYNOPSIS
hwclock [fonctions] [options]
DESCRIPTION
hwclock permet d'acceder a l'horloge machine. Vous pouvez afficher
l'heure machine actuelle, modifier l'heure de l'horloge machine, mettre
l'horloge machine a l'heure systeme et mettre l'heure systeme a l'heure
de l'horloge machine.
Vous pouvez egalement executer hwclock periodiquement afin d'ajouter ou
de retirer du temps a l'horloge machine pour compenser la derive
systematique (l'horloge perd ou gagne systematiquement du temps a une
certaine vitesse)
FONCTIONS
Vous avez besoin exactement d'une des options suivantes pour indiquer a
hwclock ce que vous souhaitez faire :
-r, --show
Lit l'heure machine et l'affiche sur la sortie standard. L'heure
affichee est toujours en heure locale, meme si votre horloge
machine est en temps universel. Voir l'option --utc.
--set Met l'horloge machine a l'heure donnee par l'option --date
-s, --hctosys
Met l'heure systeme a l'heure de l'horloge machine.
Ajuste egalement le fuseau horaire du noyau au fuseau horaire
local comme indique dans la variable d'environnement TZ et/ou
/usr/share/zoneinfo, de la meme maniere que tzset(3)
l'interpreterait. Le champ obsolete tz_dsttime du noyau est mis
a DST_NONE. (Pour plus de details sur ce que ce champs
signifiait, voir settimeofday(2).)
C'est une option particulierement utile dans un des scripts de
demarrage.
-w, --systohc
Met l'horloge machine a l'heure systeme.
--systz
Restaurer l'heure systeme au fuseau horaire actuel
Ajuste egalement le fuseau horaire du noyau au fuseau horaire
local comme indique dans la variable d'environnement TZ et/ou
/usr/share/zoneinfo, de la meme maniere que tzset(3)
l'interpreterait. Le champ obsolete tz_dsttime du noyau est mis
a DST_NONE. (Pour plus de details sur ce que ce champs
signifiait, voir settimeofday(2).)
C'est un option alternative a --hctosys qui ne lit pas l'heure
materiel et qui peut etre utilisee dans les scripts
d'initialisation avec des noyaux 2.6 recents ou l'on sait que
l'heure systeme contient l'heure materiel.
--adjust
Ajoute ou retire du temps a l'horloge machine pour tenir compte
de la derive systematique depuis la derniere fois ou l'horloge a
ete ajustee. Voir la discussion plus loin.
--getepoch
Affiche la valeur de l'epoque de l'horloge machine sur la sortie
standard. C'est le nombre d'annees qui correspond a la valeur
zero du champ annee de l'horloge machine. Par exemple, si vous
utilisez la convention que le champ annee de l'horloge machine
contient le nombre d'annees depuis 1952, la valeur de l'epoque
de l'horloge machine pour le noyau doit etre 1952.
La valeur de l'epoque est utilisee a chaque fois qu'hwclock lit
ou ajuste l'horloge machine.
--setepoch
Ajuste la valeur de l'epoque de l'horloge machine pour le noyau
a la valeur specifie par l'option --epoch. Veuillez vous referer
a l'option --getepoch pour plus de details.
-v, --version
Affiche la version d'hwclock sur la sortie standard.
--date=cha^ine date
Cette option est necessaire uniquement avec l'option --set.
Sinon, elle est ignoree. Elle specifie l'heure a laquelle
l'horloge machine sera initialisee. La valeur de cette option
est un argument du programme date(1). Par exemple,
hwclock --set --date="9/22/96 16:45:05"
L'argument est en heure locale, meme si votre horloge machine
est en temps universel. Voir l'option --utc.
--epoch=ann'ee
Indique l'annee qui sera le debut de l'epoque de l'horloge
machine. C'est-a-dire, le nombre d'annees qui correspond a la
valeur zero du champ annee de l'horloge machine. C'est utilise
avec l'option --setepoch pour permettre au noyau de connaitre
l'epoque de l'horloge machine, ou sinon pour specifier l'epoque
a utiliser lors des acces ISA directs.
Par exemple, sur une machine Digital Unix :
hwclock --setepoch --epoch=1952
OPTIONS
Les options suivantes s'appliquent a la plupart des options.
-u, --utc
--localtime
Indique que l'horloge machine est a l'heure universelle, ou
respectivement a l'heure locale. C'est votre choix d'avoir
l'horloge machine a l'heure locale ou universelle (UTC), mais
rien n'indique ce choix dans l'horloge. C'est pourquoi cette
option permet de donner cette information a hwclock.
Si vous specifiez la mauvaise option parmi celles qui suivent
(ou si vous n'en specifiez pas et que la valeur par defaut est
fausse), la modification et l'interrogation de l'horloge machine
ne fonctionnera pas correctement.
Si vous ne specifiez ni --utc ni --localtime, la valeur par
defaut est la valeur utilisee la derniere fois qu'hwclock a mis
l'horloge a l'heure (p. ex. l'execution de hwclock avec l'option
--set, --systohc, ou --adjust qui s'est terminee avec succes),
comme sauvegarde dans le fichier d'ajustement. Si le fichier
d'ajustement n'existe pas, le temps local est choisi.
--noadjfile
Ne pas tenir compte de /etc/adjtime. hwclock ne lira ni n'ecrira
pas dans ce fichier. L'option --utc ou --localtime doit
obligatoirement etre specifiee avec cette option.
--adjfile=fichier
Surcharge le fichier par defaut /etc/adjtime.
-f, --rtc=fichier
Remplace le nom de fichier par defaut de /dev, qui est /dev/rtc
sur la plupart des plates-formes mais peut aussi etre /dev/rtc0,
/dev/rtc1, etc.
--directisa
Cette option est significative seulement sur une machine ISA ou
Alpha (qui implemente suffisamment le standard ISA pour etre une
machine ISA d'un point de vue d'hwclock). Pour les autres
machines, cela n'a pas d'impact. Cette option indique a hwclock
d'utiliser des instructions I/O explicites pour acceder a
l'horloge machine. Sans cette option, hwclock essaiera
d'utiliser /dev/rtc (ce qui suppose d'utiliser le pilote rtc).
S'il est incapable de l'ouvrir (en lecture), il utilisera de
toute maniere des instructions I/O explicites.
Le pilote rtc a ete introduit dans la version 2 de Linux.
--badyear
Indique que l'horloge machine est incapable de stocker les
annees qui ne sont pas comprises entre 1994 et 1999. C'est un
probleme lie a certains BIOS (quasiment tous les << Award
BIOS >> fabriques entre le 26/04/94 et le 31/05/95) qui sont
incapables de gerer les annees superieures a 1999. Si on essaie
d'affecter une annee inferieure a 94 (ou 95 dans certains cas),
la valeur reellement affectee est 94 (ou 95). Donc, si vous
possedez une de ces machines, hwclock ne peut pas affecter une
annee superieure a 1999 et ne peut donc pas utiliser la valeur
de l'horloge comme une valeur normale.
Afin de compenser cela (sans mettre a jour votre BIOS, ce qui
est pourtant preferable), vous devez toujours utiliser --badyear
si vous possedez une de ces machines. Quand hwclock sait que
l'horloge est endommagee, il ignore la valeur de l'annee de
l'horloge machine, et essaie de deviner l'annee grace a la date
de derniere calibration sauvegardee dans le fichier
d'ajustement, en supposant que cette date est une date de
l'annee precedente. Pour que cela fonctionne, vous feriez mieux
d'executer hwclock --set ou hwclock --systohc au moins une fois
par an !
Bien qu'hwclock ignore l'annee lorsqu'il lit l'horloge machine,
il modifie l'annee lorsqu'il met l'horloge a l'heure. Il met
alors l'annee a 1995, 1996, 1997, ou 1998, celle qui a la meme
position dans le cycle des annees bissextile que la veritable
annee. De cette facon, l'horloge machine insere les jours des
annees bissextiles ou il faut. A nouveau, si vous n'ajustez pas
l'horloge machine pendant plus d'une annee, cela ne marchera pas
et peut conduire a la perte d'un jour.
hwclock vous avertit que vous avez probablement besoin de
--badyear quand l'annee de l'horloge machine est 1994 ou 1995.
--srm Cette option est equivalente a --epoch=1900 et est utilisee pour
specifier l'epoque standard sur les machines Alphas avec une
console SRM.
--arc Cette option est equivalente a --epoch=1980 et est utilisee pour
specifier l'epoque standard sur les machines Alphas disposant
d'une console ARC (l'epoque des machines Ruffians est 1900).
--jensen
--funky-toy
Ces deux options indiquent de quel type est votre machine Alpha.
Elles sont invalides si vous ne disposez pas d'une machine Alpha
et sont generalement inutiles si vous en avez une puisque
hwclock devrait etre capable de le determiner tout seul, du
moins lorsque /proc est monte. (Si vous vous rendez compte
qu'une de ces options est necessaire afin de faire fonctionner
hwclock, veuillez contacter le responsable afin de voir si le
programme peut etre ameliore pour detecter automatiquement votre
systeme. Les sorties de `hwclock --debug` et `cat /proc/cpuinfo`
peuvent se reveler interessantes.)
--jensen signifie que vous utilisez le modele Jensen.
--funky-toy signifie que sur votre machine, on doit utiliser le
bit UF au lieu du bit UIP pour detecter les transitions de
l'horloge machine. << Toy >> dans le nom de l'option fait
reference a la structure temps de l'annee (<< Time Of Year >>)
de votre machine.
--test Fait tout ce qui est suppose faire a l'exception de mettre
l'horloge materiel reellement a jour. C'est utile lorsqu'on
l'utilise avec l'option --debug pour connaitre le fonctionnement
de hwclock.
--debug
Affiche beaucoup d'informations sur ce qu'hwclock est en train
de faire. Certaines de ses fonctions sont complexes et cette
sortie peut vous aider a comprendre ce que le programme fait.
NOTES
Horloges dans un syst`eme Linux
Il y a deux horloges principales dans un systeme Linux :
L'horloge machine : Il s'agit de l'horloge qui s'execute d'une maniere
independante des programmes et meme lorsque la machine est eteinte.
Sur un systeme ISA, l'horloge est specifiee dans le standard ISA. Le
programme de controle peut lire ou ajuster l'heure a la seconde, mais
il peut egalement detecter les tics de l'horloge, de ce fait, l'horloge
a virtuellement une precision infinie.
Cette horloge est communement appelee l'horloge machine (<< hardware
clock >>), l'heure temps reelle (<< real time clock >>), le RTC,
l'horloge BIOS ou l'horloge CMOS. La designation Horloge Machine a ete
inventee pour etre utilisee avec hwclock afin d'eviter les confusions
induites par les autres noms.
Ainsi par exemple, certains systeme non ISA ont un certain nombre
d'horloges temps-reel, mais une seule avec sa propre source de
puissance. Un composant externe, sur I2C ou SPI, consommant tres peu
avec une batterie de secours peut etre utilise comme horloge materielle
qui initialise une horloge temps reel integree plus fonctionnelle,
utilisee pour la plupart des autres objectifs.
L'horloge syst`eme : C'est l'horloge geree par le noyau Linux et
controlee par un timer. (Sur une machine ISA, les interruptions du
timer font parties du standard ISA). Cela a uniquement un sens lorsque
Linux fonctionne sur la machine. L'heure systeme est le nombre de
secondes ecoulees depuis le 1er janvier 1970 00:00:00 UTC (ou plus
succinctement, le nombre de secondes depuis 1969). L'heure systeme
n'est pas un entier. Il a virtuellement une precision infinie.
L'heure systeme est l'heure importante. Le but essentiel de l'horloge
machine dans un systeme Linux est de garder l'heure lorsque Linux ne
fonctionne pas. L'heure systeme est initialisee avec la valeur de
l'horloge machine au demarrage de Linux, l'horloge machine n'est
ensuite plus utilisee. Il est important de remarquer qu'avec DOS, pour
lequel ISA a ete concu, l'horloge machine est la seule horloge temps
reel.
C'est important que l'Heure Systeme n'ait aucune discontinuites telles
qu'elles arriveraient si vous utilisez le programme date(1L) afin de la
modifier pendant le fonctionnement du systeme. Vous pouvez cependant,
faire tout ce que vous voulez sur l'Horloge Machine pendant le
fonctionnement, la prochaine fois que Linux demarrera, il prendra en
compte la nouvelle heure de l'Horloge Machine. Vous pouvez egalement
utiliser le programme adjtimex(8) pour ajuster doucement l'Heure
Systeme pendant le fonctionnement du systeme.
Un noyau Linux possede un concept de fuseau horaire pour le systeme.
Mais ne vous trompez pas -- pratiquement personne ne se preoccupe du
fuseau horaire maintenu par le noyau. Les programmes qui ont besoin
d'utiliser les fuseaux horaires (parce qu'ils souhaitent afficher
l'heure locale) utilisent presque toujours une methode plus
traditionnelle afin de le determiner. Ils utilisent la variable
d'environnement TZ et/ou le repertoire /usr/share/zoneinfo, comme
explique dans la page de manuel de tzset(3). Cependant, certains
programmes et certaines parties du noyau Linux comme les systemes de
fichier utilisent la valeur du noyau. Un exemple est le systeme de
fichier vfat. Si la valeur dans le noyau est fausse, le systeme de
fichiers vfat lira et modifiera d'une maniere erronee la date des
fichiers.
hwclock ajuste le fuseau horaire du noyau a la valeur indiquee par TZ
et/ou /usr/share/zoneinfo quand vous modifiez l'heure systeme via
l'option --hctosys.
Le fuseau horaire est compose de deux parties : 1) un champ
tz_minuteswest indiquant le nombre de secondes (non ajuste pour DST) de
retard par rapport au temps UTC ; 2) un champ tz_dsttime indiquant le
type de convention << Daylight Savings Time >> (DST) utilisee dans la
localite a l'heure actuelle. Ce second champ n'est jamais utilise sous
Linux. (Voir egalement settimeofday(2).)
Comment hwclock acc`ede `a l'horloge machine
hwclock utilise differentes methodes pour lire et modifier l'Horloge
Machine. La maniere la plus classique consiste en une operation
d'entree/sortie sur le fichier special /dev/rtc, qui est suppose etre
controle par le pilote rtc. Cependant cette methode n'est pas toujours
possible parce que le pilote rtc est relativement recent. Les vieux
systemes ne l'ont pas. Ainsi, bien qu'il existe des versions du pilote
rtc qui fonctionne sur les DEC Alphas, il existe beaucoup de systemes
Alphas sur lesquels le pilote rtc ne fonctionne pas (un symptome
courant est le blocage d'hwclock). De plus, les systemes Linux recents
ont une gestion plus generique des RTC, meme des systemes qui en ont
plus d'un, vous pourrez donc etre amenes a remplacer la valeur par
defaut en precisant /dev/rtc0 ou /dev/rtc1 a la place.
Sur les vieux systemes, la methode d'acces a l'horloge machine depends
de la machine.
Sur un systeme ISA, hwclock peut directement acceder aux registres de
la memoire du CMOS qui constituent l'horloge, en effectuant des
operations d'E/S sur les ports 0x70 et 0x71. Il effectue cela avec des
veritables instructions d'E/S, et doit donc etre execute avec des
droits de superutilisateur. (Pour les Jensen Alpha, il n'y a aucun
moyen pour hwclock d'executer ces instructions, il utilise a la place
le peripherique /dev/port, qui procure une interface d'au moins aussi
bas niveau au sous-systeme d'E/S).
C'est vraiment une mauvaise methode pour acceder a l'horloge, notamment
parce que les programmes de l'espace utilisateur ne sont generalement
pas supposes effectuer directement des operations d'E/S et desactiver
les interruptions. hwclock fournit cette methode uniquement parce que
c'est la seule methode disponible sur les systemes ISA et Alpha ne
disposant pas de pilotes pour le peripherique rtc.
Sur un systeme m68k, hwclock peut acceder a l'horloge soit via la
console, soit via le fichier special /dev/tty1.
hwclock essaye d'utiliser /dev/rtc. Si le noyau n'est pas compile avec
cette prise en charge, ou qu'il est incapable d'ouvrir /dev/rtc (ou un
autre fichier special fourni sur la ligne de commande), hwclock
utilisera une autre methode disponible si possible. Sur une machine ISA
ou Alpha, vous pouvez forcer hwclock a utiliser la manipulation direct
des registres du CMOS, sans meme essayer d'utiliser /dev/rtc/, en
specifiant l'option --directisa.
La fonction d'ajustement
L'horloge machine n'est generalement pas tres precise. Cependant, la
plupart de ces imprecisions sont previsibles. Elle gagne ou perd la
meme duree de temps chaque jour. Il s'agit de la derive systematique.
La fonction d'ajustement de hwclock vous permet de faire des
corrections systematiques afin de corriger cette derive.
Cela fonctionne comme ceci : hwclock utilise un fichier, /etc/adjtime,
qui conserve des informations historiques. Il s'agit du fichier
d'ajustement (<< adjtime >>).
Supposons que vous demarrez sans fichier d'ajustement. Vous executez
hwclock --set afin de regler l'horloge machine a la bonne heure.
hwclock cree le fichier d'ajustement et y sauvegarde l'heure actuelle
en tant que derniere calibration. Cinq jours plus tard, l'horloge a
gagne 10 secondes, vous re-executez donc hwclock --set pour la
reajuster. hwclock met a jour le fichier d'ajustement afin que l'heure
actuelle y soit connue comme derniere calibration, et enregistre une
derive systematique de 2 secondes par jour. 24 heures passent, vous
executez hwclock --adjust. Hwclock consulte le fichier d'ajustement et
remarque que l'horloge gagne deux secondes par jour lorsque rien n'est
fait et que rien n'a ete fait pendant un jour. Par consequent, 2
secondes sont enlevees de l'horloge machine. Il sauvegarde ensuite
l'heure actuelle en tant que derniere heure de calibration. 24 heures
apres, vous re-executez hwclock --adjust qui effectue exactement la
meme operation.
Chaque fois que vous calibrez (modifiez) l'horloge (avec --set ou
--systohc), hwclock recalcule le taux de derive systematique base sur
la duree ecoulee depuis la derniere calibration, la duree ecoulee
depuis le dernier ajustement, les differents taux utilises dans les
precedents ajustements, et la valeur manquante a l'horloge actuelle.
Une petite erreur est introduite chaque fois que hwclock ajuste
l'horloge, donc il s'abstient de faire un ajustement de moins d'une
seconde. Plus tard, quand vous redemanderez un ajustement, la derive
accumulee sera superieure a une seconde et hwclock fera l'ajustement.
Il est bon d'executer hwclock --adjust avant d'utiliser hwclock
--hctosys au demarrage du systeme, et peut-etre periodiquement lorsque
le systeme fonctionne via cron.
Le fichier adjtime, nomme ainsi pour des raisons historiques, contient
en fait d'autres informations utilisees par hwclock pour se souvenir
d'informations d'un appel a l'autre.
Le format du fichier d'ajustement est, en ASCII :
Ligne 1 : 3 nombres, separes par des espaces : 1)Taux de derive
systematique en secondes par jour, nombre decimal flottant ; 2) Nombre
de secondes ecoulees depuis 1969 UTC et la date de la derniere
calibration, entier decimal ; 3) zero (pour une compatibilite avec
clock(8)) en tant qu'entier decimal.
Ligne 2 : 1 nombre : Nombre de secondes depuis 1969 UTC de la derniere
calibration. Zero s'il n'y a pas eu de calibration ou si une des
dernieres calibrations est discutable (par exemple, si l'horloge
machine, depuis cette calibration, est erronee). C'est un entier
decimal.
Ligne 3 : "UTC" ou "LOCAL". Indique si l'horloge machine est a l'heure
universelle ou a l'heure locale. Vous pouvez toujours surcharger cette
valeur par des options sur la ligne de commande de hwclock.
Vous pouvez utiliser un fichier d'ajustement precedemment utilise avec
le programme clock(8) avec hwclock.
Synchronisation automatique de l'horloge machine par le noyau
Vous devez etre au courant d'un autre moyen utilise pour garder
l'horloge machine synchronisee sur certains systemes. Le noyau Linux
possede un mode qui copie l'heure systeme vers l'horloge machine toutes
les 11 minutes. C'est une bonne idee de l'utiliser lorsque vous
utilisez un moyen sophistique comme ntp pour garder votre heure systeme
a jour. (ntp est un moyen de synchroniser l'heure systeme avec soit un
serveur de temps situe quelque part sur le reseau, soit une horloge
radio en duplex avec votre systeme. Voir RFC 1305).
Ce mode (on l'appellera le << mode 11 minutes >>) est inactif jusqu'a
ce que quelque chose l'active. Le demon ntp xntpd est une chose qui
l'active. Vous pouvez le desactiver en executant n'importe quoi,
hwclock --hctosys inclus, qui ajuste l'heure systeme d'une maniere
classique.
Pour voir son etat, actif ou inactif, il faut utiliser la commande
adjtimex --print et chercher la valeur de << status >>. Si le bit
<< 64 >> de ce nombre (exprime en binaire) est 0, le mode 11 minutes
est actif. Dans le cas contraire, il est inactif.
Si sur votre systeme le mode 11 minutes est actif, n'utilisez pas
hwclock --adjust ou hwclock --hctosys. Vous ne creeriez qu'une
confusion. Il est convenable d'utiliser hwclock --hctosys au demarrage
afin d'avoir une heure systeme raisonnable, jusqu'au moment ou votre
systeme est capable de l'ajuster d'une source exterieure et de demarrer
le mode 11 minutes.
Valeur du si`ecle de l'horloge machine ISA
Il y a une sorte de standard qui definit l'octet 50 de la memoire du
CMOS sur une machine ISA comme un indicateur du siecle. Hwclock ne
l'utilise ni le modifie car certaines machines ne definissent pas
l'octet de cette maniere, et ce n'est vraiment pas necessaire puisque
l'annee du siecle constitue un bon moyen de connaitre le siecle.
Si vous pensez a un usage possible de l'octet du siecle CMOS (<< CMOS
century byte >>), contactez le responsable de hwclock, une option peut
etre adequate.
Notez que cette section est pertinente uniquement si vous utilisez un
acces ISA direct a l'horloge machine. L'ACPI fournit un moyen standard
d'acceder au siecle, quand le materiel le gere.
VARIABLES D'ENVIRONNEMENT
TZ
FICHIERS
/etc/adjtime /usr/share/zoneinfo/ /dev/rtc /dev/rtc0 /dev/port
/dev/tty1 /proc/cpuinfo
VOIR AUSSI
adjtimex(8), date(1), gettimeofday(2), settimeofday(2), crontab(1),
tzset(3) /etc/init.d/hwclock.sh,
/usr/share/doc/util-linux/README.Debian.hwclock
AUTEURS
Ecrit par Bryan Henderson, septembre 1996 (bryanh@giraffe-data.com),
base sur le travail effectue sur le programme clock par Charles
Hedrick, Rob Hooft et Harald Koening. Veuillez vous referer au code
source pour une histoire complete et les credits.
DISPONIBILIT'E
La commande hwclock fait partie du paquet util-linux-ng, elle est
disponible sur ftp://ftp.kernel.org/pub/linux/utils/util-linux-ng/.
TRADUCTION
Cette page de manuel a ete traduite et est maintenue par Sylvain
Archenault <sylvain DOT archenault AT laposte DOT net> et les membres
de la liste <debian-l10n-french AT lists DOT debian DOT org>. Veuillez
signaler toute erreur de traduction par un rapport de bogue sur le
paquet manpages-fr-extra.
6 aout 2008 HWCLOCK(8)