Provided by: manpages-fr-extra_20151231_all bug

NOM

       hwclock - Lire ou ajuster l’horloge matérielle (RTC)

SYNOPSIS

       hwclock [fonction] [option ... ]

DESCRIPTION

       hwclock permet d'accéder à l’horloge matérielle. Elle permet : d’afficher l’heure actuelle
       de l’horloge  matérielle ;  de  modifier  l’heure  de  l’horloge  matérielle ;  de  mettre
       l’horloge  matérielle  à  l’heure  système ;  de  mettre  l’horloge  système  à l’heure de
       l’horloge matérielle ; de compenser la dérive de l’horloge  matérielle ;  de  corriger  le
       fuseau  horaire de l’horloge matérielle ; de définir le fuseau horaire du noyau, le fuseau
       horaire de NTP, et l’époque (seulement sur Alpha) ; de comparer les  horloges  système  et
       matérielle ;  de  prédire  les  prochaines valeurs de l’horloge matérielle à partir de son
       taux de dérive.

       Depuis la version 2.26, des  modifications  importantes  ont  été  faites  à  la  fonction
       --hctosys,  à  l’option  --directisa  et une nouvelle option --update-drift a été ajoutée.
       Consultez leurs sections respectives ci-dessous.

FONCTIONS

       Les fonctions suivantes s’excluent mutuellement, une seule peut être indiquée à  la  fois.
       Si aucune n’est indiquée, --show est utilisée par défaut.

       --adjust
              Ajouter  ou  retirer du temps à l’horloge matérielle pour tenir compte de la dérive
              systématique depuis la dernière fois où  l’horloge  a  été  ajustée.  Consultez  la
              discussion ci-dessous, sous La fonction d'ajustement.

       -c, --compare
              Comparer  périodiquement  l’heure  matérielle  à  l’heure  système  et  afficher la
              différence toutes les 10 secondes. Cela affichera aussi le décalage de fréquence et
              le tic.

       --getepoch
       --setepoch
              Ces fonctions sont seulement pour les machines Alpha.

              Lire  et  définir  la  valeur  d’époque  de  l’horloge  matérielle.  C’est  l’année
              grégorienne qui correspond à la valeur zéro du champ année de l’horloge matérielle.
              Par  exemple, si vous utilisez la convention du champ année de l’horloge matérielle
              qui contient le nombre d'années  depuis  1952,  la  valeur  d’époque  de  l’horloge
              matérielle pour le noyau doit être 1952.

              La fonction --setepoch nécessite l’utilisation de l’option --epoch.

              La  valeur  de  l'époque  est  utilisée  à  chaque  fois  que hwclock lit ou ajuste
              l’horloge matérielle.

       --predict
              Prédire ce que l’horloge matérielle lira dans le futur à partir de  l’heure  donnée
              par  l’option  --date  et  des  renseignements  de  /etc/adjtime.  C’est utile, par
              exemple, pour prendre en compte  la  dérive  lors  de  la  définition  d’un  réveil
              (alarme) par l’horloge matérielle. Consultez rtcwake(8).

              N’utilisez  pas cette fonction si l’horloge matérielle est modifiée par autre chose
              que  la  commande  hwclock  du  système  d’exploitation  actuel,  comme  le  « mode
              11 minutes » ou un autre système d’exploitation en multiboot.

       -r, --show
       --get
              Lire  l’heure matérielle et l’afficher sur la sortie standard. L’heure affichée est
              toujours en heure locale, même si l’horloge  matérielle  est  en  temps  universel.
              Consultez l'option --localtime.

              Montrer  l’horloge  matérielle  est  l'action  par  défaut si aucune fonction n'est
              indiquée.

              La fonction --get applique aussi la correction de dérive à l’heure  lue,  à  partir
              des  renseignements  de  /etc/adjtime.  N’utilisez  pas cette fonction si l’horloge
              matérielle est modifiée  par  autre  chose  que  la  commande  hwclock  du  système
              d’exploitation   actuel,   comme   le  « mode  11 minutes »  ou  un  autre  système
              d’exploitation en multiboot.

       -s, --hctosys
              Mettre l’heure système à l’heure de l’horloge matérielle. L’heure lue de  l’horloge
              matérielle  est  compensée  pour  prendre en compte la dérive systématique avant de
              l’utiliser pour définir l’heure système. Consultez la discussion  ci-dessous,  sous
              La fonction d'ajustement.

              L’horloge  système  doit  être  gardée  en UTC pour que les applications de date et
              heure fonctionnent correctement avec le fuseau horaire configuré sur le système. Si
              l’horloge  matérielle  est  conservée  en heure locale, alors l’heure qui y est lue
              doit être convertie en UTC avant de l’utiliser pour définir l’horloge  système.  La
              fonction  --hctosys  le fait à partir des renseignements du fichier /etc/adjtime ou
              des  arguments  --localtime  et  --utc  en  ligne  de  commande.  Remarque :  aucun
              ajustement  d’heure  d’été  n’est  réalisé. Consultez la discussion ci-dessous sous
              LOCALE ou UTC.

              Le noyau garde aussi une valeur de fuseau horaire, la fonction --hctosys la définit
              au fuseau configuré pour le système. Le fuseau horaire système est configuré par la
              variable d'environnement TZ ou le fichier /etc/localtime,  tels  que  tzset(3)  les
              interpréterait.  Le champ obsolète tz_dsttime du noyau est mis à zéro (pour plus de
              précisions sur ce que ce champ signifiait, consultez settimeofday(2)).

              Lors d’une utilisation dans un script de démarrage, si la fonction --hctosys est la
              première  à  appeler  settimeofday(2)  depuis le démarrage, cela définira le « mode
              11 minutes » de NTP par l’intermédiaire de la variable persistent_clock_is_local du
              noyau.  Si la configuration du fuseau horaire de l’horloge matérielle est modifiée,
              alors un redémarrage est nécessaire pour informer le noyau. Consultez la discussion
              ci-dessous, sous Synchronisation automatique de l’horloge matérielle par le noyau.

              C’est  une  fonction  particulièrement utile dans un des scripts de démarrage avant
              que les systèmes de fichiers ne soient montés en lecture et écriture.

              Cette fonction ne devrait jamais être utilisée sur un  système  en  fonctionnement.
              Les  sauts  d’horloge  système  provoqueront  des  problèmes  comme par exemple des
              horodatages corrompus sur le système de fichiers. Ainsi, si quelque chose a modifié
              l’horloge  matérielle,  comme  le  « mode  11 minutes »  de NTP, --hctosys définira
              l’heure de façon incorrecte en incluant la compensation de dérive.

              La compensation de dérive peut être inhibée en définissant le facteur de  dérive  à
              zéro dans /etc/adjtime. Ce réglage sera persistant tant que l’option --update-drift
              n’est pas utilisée avec --systohc à l’arrêt (ou n’importe quand). Une  autre  façon
              d’inhiber  cela  est  d’utiliser  l’option  --noadjfile  en  appelant  la  fonction
              --hctosys. Une troisième méthode est d’effacer  le  fichier  /etc/adjtime.  hwclock
              utilisera  alors  UTC par défaut pour l’horloge matérielle. Si l’horloge matérielle
              est à l’heure locale, elle devra être définie dans le fichier. Cela peut être  fait
              en  appelant  hwclock --localtime --adjust ;  quand  le  fichier n’est pas présent,
              cette commande n’ajustera pas vraiment  l’horloge,  mais  créera  le  fichier  avec
              l’heure locale configurée et un facteur de dérive à zéro.

              Une  condition  sous  laquelle l’inhibition de correction de dérive de hwclock peut
              être utile est lorsque plusieurs systèmes sont utilisés en multiboot.  Pendant  que
              cette  instance de Linux est arrêtée, si un autre système d’exploitation modifie la
              valeur de l’horloge matérielle, la correction de dérive appliquée  sera  incorrecte
              quand cette instance redémarrera.

              Pour  que  la correction de dérive de hwclock fonctionne correctement, rien ne doit
              modifier l’horloge matérielle pendant que cette instance  de  Linux  n’est  pas  en
              fonctionnement.

       --set  Mettre  l’horloge matérielle à l’heure donnée par l'option --date, et mettre à jour
              les horodatages dans /etc/adjtime.  Avec  l’option  --update-drift,  recalculer  le
              facteur de dérive.

       --systz
              C'est  une  alternative à la fonction --hctosys qui ne lit pas l’horloge matérielle
              et n’ajuste pas l’horloge système ; par conséquent,  aucune  correction  de  dérive
              n’est effectuée. Elle est conçue pour être utilisée dans un script de démarrage sur
              les systèmes avec des noyaux de version supérieure à 2.6 où l’horloge système a été
              ajustée depuis l’horloge matérielle par le noyau lors du démarrage.

              Elle  procède  aux actions suivantes qui sont détaillées ci-dessus dans la fonction
              --hctosys :

              • correction du fuseau horaire  de  l’horloge  matérielle  en  UTC  si  nécessaire.
                Seulement, au lieu d’accomplir cela en réglant l’horloge système, hwclock informe
                simplement le noyau qui se charge de la modification ;

              • activation du « mode 11 minutes » de NTP du noyau ;

              • définition du fuseau horaire du noyau.

              Les deux premières actions ne  sont  disponibles  que  lors  du  premier  appel  de
              settimeofday(2)  après  le  démarrage. Par conséquent, cette option n’a de sens que
              dans un script de démarrage. Si la configuration du  fuseau  horaire  de  l’horloge
              matérielle est modifiée, un redémarrage serait nécessaire pour informer le noyau.

       -w, --systohc
              Mettre  l’horloge  matérielle  à  l’heure système, et mettre à jour les horodatages
              dans /etc/adjtime. Avec l’option --update-drift, recalculer le facteur de dérive.

       -V, --version
              Afficher les informations sur la version et quitter.

       -h, --help
              Afficher un texte d'aide puis quitter.

OPTIONS

       --adjfile=fichier
              Remplacer le chemin de fichier par défaut /etc/adjtime.

       --badyear
              Indiquer que l’horloge matérielle est incapable de stocker les années qui  ne  sont
              pas  comprises entre 1994 et 1999. C'est un problème lié à certains BIOS (quasiment
              tous les « Award BIOS » fabriqués entre  le  26/04/94  et  le  31/05/95)  qui  sont
              incapables  de  gérer  les  années  supérieures à 1999. Si on essaie d'affecter une
              année inférieure à 94 (ou 95 dans certains cas), la valeur réellement affectée  est
              94  (ou  95).  Donc,  si  vous  possédez  une  de ces machines, hwclock ne peut pas
              affecter une année supérieure à 1999 et ne peut donc  pas  utiliser  la  valeur  de
              l’horloge comme une valeur normale.

              Afin  de  compenser  cela  (sans  mettre  à  jour  le  BIOS,  ce  qui  est pourtant
              préférable), vous devez toujours utiliser --badyear si vous  possédez  une  de  ces
              machines.  Quand  hwclock sait que l’horloge est endommagée, il ignore la valeur de
              l'année de l’horloge matérielle, et essaie de deviner l'année grâce à  la  date  du
              dernier  étalonnage sauvegardé dans le fichier d'ajustement, en supposant que cette
              date fait partie de l'année en cours. Pour que cela fonctionne, vous  feriez  mieux
              d'exécuter hwclock --set ou hwclock --systohc au moins une fois par an !

              Bien  que  hwclock  ignore  l’année  en  lisant  l’horloge matérielle, elle modifie
              l’année lors du réglage de l’horloge. Elle met alors l'année à 1995, 1996, 1997, ou
              1998, suivant celle qui a la même position dans le cycle des années bissextiles que
              la véritable année. De cette façon,  l’horloge  matérielle  insère  les  jours  des
              années  bissextiles  où  il  faut.  À  nouveau,  si  vous  n’ajustez  pas l’horloge
              matérielle pendant plus d'une année, cela ne fonctionnera pas  et  un  jour  risque
              d'être perdu.

              hwclock  avertit  que  --badyear  est  probablement  nécessaire  quand  l'année  de
              l’horloge matérielle est 1994 ou 1995.

       --date=chaîne_date
              Cette option n'est nécessaire qu'avec les fonctions --set ou --predict, sinon, elle
              est ignorée. Elle indique l’heure à laquelle l’horloge matérielle sera initialisée,
              ou l’heure à laquelle prédire l’horloge matérielle. La valeur de cette  option  est
              utilisée comme argument de l’option --date de date(1). Par exemple,

                  hwclock --set --date='2011-08-14 16:45:05'

              L’argument  doit  être  en  heure  locale, même si l’horloge matérielle est en UTC.
              Consultez l’option --localtime. L’argument ne doit pas être en temps relatif, comme
              par  exemple  « +5 minutes »  car  la précision de hwclock dépend de la corrélation
              entre la valeur de l’argument et le moment où la touche Entrée est pressée.

       --debug
              Afficher beaucoup d'informations sur les actions internes d'hwclock.  Certaines  de
              ses  fonctions  sont  complexes  et  cette  sortie  permet  de comprendre ce que le
              programme fait.

       --directisa
              Cette option est utile pour les machines compatibles ISA, y compris x86 et  x86_64,
              ou  Alpha  (qui  a  une  interface d’horloge matérielle similaire). Pour les autres
              machines, cela n'a pas d'impact. Cette option  indique  à  hwclock  d'utiliser  des
              instructions  d’entrée  et  sortie  explicites pour accéder à l’horloge matérielle.
              Sans cette option, hwclock essaiera d'utiliser le périphérique rtc, supposé  piloté
              par  le  pilote de périphérique RTC. Depuis la version 2.26, --directisa n’est plus
              automatiquement utilisé quand le pilote rtc n’est pas disponible ; cela  provoquait
              une  condition  non  sécurisée  qui  pouvait permettre à deux processus d’accéder à
              l’horloge matérielle en même temps. L’accès  direct  au  matériel  depuis  l’espace
              utilisateur ne devrait être utilisé que pour des essais, du dépannage ou en dernier
              recours après échec de toutes les autres méthodes. Consultez l’option --rtc.

       -f, --rtc=fichier
              Remplacer le nom de fichier du périphérique rtc par défaut de  hwclock.  Sinon,  le
              premier trouvé sera utilisé, dans cet ordre :
                  /dev/rtc
                  /dev/rtc0
                  /dev/misc/rtc
              Pour IA-64 :
                  /dev/efirtc
                  /dev/misc/efirtc

       --localtime
       -u, --utc
              Indiquer le fuseau horaire utilisé par l’horloge matérielle.

              L’horloge  matérielle  peut  être configurée pour utiliser soit UTC, soit le fuseau
              horaire local, mais rien n’indique dans l’horloge elle-même l’alternative utilisée.
              Les  options  --localtime  et  --utc  indiquent cela à la commande hwclock. Si vous
              indiquez la mauvaise information (ou n’en indiquez aucune  et  que  la  valeur  par
              défaut  est incorrecte), à la fois le réglage et la lecture de l’horloge matérielle
              seront incorrectes.

              Si vous n'indiquez ni --utc ni --localtime, la valeur  utilisée  la  dernière  fois
              avec  une  fonction de définition (--set, --systohc ou --adjust), comme sauvegardée
              dans /etc/adjtime, sera utilisée. Si le fichier d'ajustement n'existe pas, UTC  est
              choisie.

              Remarque :   les  modifications  d’heure  d’été  peuvent  être  incohérentes  quand
              l’horloge matérielle est gardée en heure locale. Consultez la discussion ci-dessous
              sous LOCALE ou UTC.

       --noadjfile
              Ne  pas  tenir compte de /etc/adjtime. hwclock ne lira ni n'écrira dans ce fichier.
              L'option --utc ou --localtime doit obligatoirement être indiquée avec cette option.

       --test Ne pas vraiment faire de modification sur  le  système,  c’est-à-dire  ni  sur  les
              horloges,  ni  sur  le fichier d’ajustement. C’est utile avec l’option --debug pour
              comprendre le fonctionnement des opérations internes de hwclock.

       --update-drift
              Mettre à jour le coefficient de dérive de l’horloge matérielle  dans  /etc/adjtime.
              C’est utilisé avec --set ou --systohc, sinon c’est ignoré.

              Une  période  minimale  de  quatre  heures  entre les réglages est nécessaire. Cela
              permet d’éviter des calculs incorrects. Plus la période est longue, plus le facteur
              de dérive résultant est précis.

              Cette  option  a  été  ajoutée  à la version 2.26, parce que les systèmes appellent
              souvent hwclock --systohc  lors  de  l’arrêt ;  avec  l’ancien  comportement,  cela
              forçait  le  (re)calcul  du  facteur de dérive, avec pour conséquence les problèmes
              suivants :

              • lors de l’utilisation de ntpd avec un noyau en « mode 11 minutes », le facteur de
                dérive était écrasé par une valeur quasiment nulle ;

              • cela  ne  permettait  pas d’utiliser la correction de dérive « à froid ». Avec la
                plupart des configurations, l’utilisation de la dérive « à  froid »  donnera  des
                résultats  favorables. À froid signifie quand la machine est éteinte, ce qui peut
                avoir un impact significatif sur le facteur de dérive ;

              • le (re)calcul du  facteur  de  dérive  à  chaque  arrêt  entraîne  des  résultats
                suboptimaux.  Par  exemple,  si  des  conditions  éphémères  rendant  la  machine
                anormalement chaude, le calcul du facteur de dérive serait hors limites.

              Laisser hwclock calculer le facteur de dérive est un bon point de départ, mais pour
              des  résultats optimaux, il faudra probablement l’ajuster directement en éditant le
              fichier /etc/adjtime. Pour la plupart des configurations, une fois qu’un facteur de
              dérive  optimal  est mis en place, ce n’est plus la peine de le modifier. Ainsi, le
              comportement précédent de (re)calculer la dérive a été modifié, et cette option est
              nécessaire  pour  la  rétablir. Consultez la discussion ci-dessous dans La fonction
              d’ajustement.

OPTIONS SPÉCIFIQUES AUX MACHINES ALPHA

       --arc  Cette option est équivalente à --epoch=1980 et est utilisée pour indiquer  l'époque
              standard  sur les machines Alpha disposant d'une console ARC (l'époque des machines
              Ruffian est 1900).

       --epoch=année
              Indique  l'année  qui  sera  le  début  de  l'époque   de   l’horloge   matérielle.
              C'est-à-dire, l'année grégorienne qui correspond à la valeur zéro du champ année de
              l’horloge matérielle. C'est utilisé avec  l'option  --setepoch  pour  permettre  au
              noyau de connaître l'époque de l’horloge matérielle.

              Par exemple, sur une machine Digital UNIX :

                  hwclock --setepoch --epoch=1952

       --funky-toy
       --jensen
              Ces  deux  options  indiquent  le type de machine Alpha. Elles ne sont pas valables
              ailleurs que sur une machine Alpha et sont généralement inutiles : hwclock  devrait
              être capable de déterminer le type utilisé lorsque /proc est monté.

              L'option  --jensen  est utilisée pour les modèles Jensen ; --funky-toy signifie que
              la machine a besoin du bit UF à la place du bit UIP pour détecter  les  transitions
              de  l’horloge  matérielle.  « Toy »  dans  le  nom  de l'option fait référence à la
              structure temps de l'année (« Time Of Year ») de la machine.

       --srm  Cette option est équivalente à --epoch=1900 et est utilisée pour indiquer  l'époque
              standard sur les machines Alpha avec une console SRM.

NOTES

   Horloges dans un système Linux
       Deux types d’horloge existent.

       L’horloge  matérielle :  cette  horloge est un périphérique matériel indépendant, avec son
       propre système électrique (pile, condensateur, etc.) qui fonctionne quand la  machine  est
       éteinte, ou même débranchée.

       Sur  un  système  compatible ISA, l’horloge est définie dans la norme ISA. Un programme de
       contrôle ne peut lire ou ajuster l’heure qu’à la seconde, mais il peut également  détecter
       les  pentes  des tics des secondes de l’horloge, de ce fait, l’horloge a virtuellement une
       précision infinie.

       Cette horloge est communément appelée l’horloge matérielle (« hardware  clock »),  l’heure
       temps réel (« real time clock »), le RTC, l’horloge BIOS ou l’horloge CMOS. La désignation
       horloge matérielle a été inventée pour être utilisée avec hwclock. Le noyau Linux  y  fait
       référence sous le nom d’horloge persistante.

       Certains systèmes non ISA ont plusieurs horloges temps réel, mais une seule avec sa propre
       source d'énergie. Un composant externe, sur I2C ou SPI, consommant  très  peu,  peut  être
       utilisé  avec  une  batterie  de  secours  comme horloge matérielle afin d’initialiser une
       horloge temps réel intégrée plus  fonctionnelle,  utilisée  pour  la  plupart  des  autres
       objectifs.

       l’horloge  système :  cette  horloge  fait  partie du noyau Linux et est contrôlée par une
       minuterie (sur une machine ISA, les interruptions de minuterie font  partie  de  la  norme
       ISA).  Cela  n'a  de  sens  que si Linux fonctionne sur la machine. L’heure système est le
       nombre  de  secondes  écoulées  depuis   le   1er janvier 1970   00:00:00 UTC   (ou   plus
       succinctement,  le  nombre  de  secondes  depuis  1969 UTC).  L’heure système n’est pas un
       entier. Elle a virtuellement une précision infinie.

       L’horloge système donne l’heure importante. Le but essentiel de l’horloge  matérielle  est
       de  garder  l’heure  lorsque  Linux ne fonctionne pas afin de pourvoir initialiser l’heure
       système au démarrage.  Remarquez  qu'avec  DOS,  pour  qui  ISA  a  été  conçu,  l’horloge
       matérielle est la seule horloge temps réel.

       L’heure  système  ne  doit  surtout  pas subir de discontinuité comme lorsque le programme
       date(1) est utilisé pour la modifier pendant le fonctionnement du  système.  Vous  pouvez,
       cependant,   faire   tout   ce  que  vous  voulez  sur  l’horloge  matérielle  pendant  le
       fonctionnement, la prochaine fois que Linux démarrera, il prendra en  compte  la  nouvelle
       heure  de  l’horloge  matérielle.  Remarque :  ce  n’est  actuellement pas possible sur la
       plupart des systèmes car hwclock --systohc est appelée lors de l’arrêt.

       Le fuseau horaire du noyau Linux est défini par hwclock. Cependant, ne  vous  trompez  pas
       — pratiquement  personne  ne  se  préoccupe  du  fuseau horaire maintenu par le noyau. Les
       programmes devant utiliser le fuseau horaire (par exemple pour  afficher  l’heure  locale)
       utilisent  presque  toujours  une  méthode  plus traditionnelle afin de le déterminer. Ils
       utilisent la variable d'environnement TZ ou le fichier /etc/localtime, comme expliqué dans
       la  page  de  manuel  de  tzset(3). Cependant, certains programmes et certaines parties du
       noyau Linux comme les systèmes de fichiers utilisent la valeur de fuseau horaire du noyau.
       Un  exemple  est  le  système  de fichiers vfat. Si la valeur dans le noyau est fausse, le
       système de fichiers vfat lira et modifiera d'une manière erronée la date des fichiers.  Un
       autre  exemple  est le « mode 11 minutes » de NTP du noyau. Si la valeur de fuseau horaire
       du noyau ou que la variable persistent_clock_is_local sont fausses,  l’horloge  matérielle
       ne  sera  pas  réglée  correctement  par  le  « mode 11 minutes ». Consultez la discussion
       ci-dessous, sous Synchronisation automatique de l’horloge matérielle par le noyau.

       hwclock ajuste le fuseau horaire du noyau à la valeur indiquée par  TZ  ou  /etc/localtime
       avec les fonctions --hctosys ou --systz.

       Le  fuseau  horaire  du  noyau  est  composé  de deux parties : 1) un champ tz_minuteswest
       indiquant le nombre de minutes (non ajusté pour l’heure d'été) de retard  par  rapport  au
       temps  universel  (UTC) ;  2) un  champ tz_dsttime indiquant le type de convention d’heure
       d’été utilisé localement à l’heure actuelle. Ce second champ  n'est  jamais  utilisé  sous
       Linux et est toujours nul. Consultez également settimeofday(2).

   Accès utilisateur et Set-UID
       Parfois,  hwclock  doit  être  installée avec Set-UID root, par exemple pour permettre aux
       utilisateurs ordinaires  d’afficher  la  valeur  de  l’horloge  en  utilisant  la  méthode
       d’E/S ISA  directe.  Si  l’interface de périphérique rtc existe sur le système ou qu’il ne
       s’agit pas d’un système compatible ISA, les  utilisateurs  n’ont  sans  doute  pas  besoin
       d’utiliser  la  méthode  d’E/S ISA  directe,  donc  pas  la  peine de s’embêter. Consultez
       l’option --rtc.

       De toutes façons, hwclock ne permettra pas de configurer quoi que ce soit à moins  d’avoir
       le  réel  UID de superutilisateur (cette restriction n’est pas nécessaire si hwclock n’est
       pas installée avec Set-UID root, mais c’est le cas pour le moment).

   Méthodes d’accès à l’horloge matérielle
       hwclock utilise  divers  moyens  pour  interroger  et  régler  les  valeurs  de  l’horloge
       matérielle.  La façon la plus normale est de réaliser des entrée et sortie avec le fichier
       spécial de périphérique rtc, qui est supposé piloté par le pilote de périphérique RTC.  De
       plus,  les  systèmes Linux utilisant l’environnement de pilote RTC avec udev sont capables
       de prendre en charge plusieurs horloges matérielles. Cela pourrait nécessiter d’écraser le
       périphérique rtc par défaut en indiquant un autre à l’aide de l’option --rtc.

       Cependant,  cette  méthode  n’est  pas  toujours  disponible  sur  les anciens systèmes ne
       disposant pas de pilote rtc. Sur ces systèmes, la méthode d'accès à  l’horloge  matérielle
       dépend de la machine.

       Sur  un  système  compatible  ISA,  hwclock  peut  accéder directement aux registres de la
       mémoire du CMOS qui constituent l’horloge, en effectuant  des  opérations  d'E/S  sur  les
       ports  0x70  et 0x71. hwclock effectue cela avec de véritables instructions d'E/S, et doit
       donc être exécutée avec des droits de superutilisateur. Cette méthode peut  être  utilisée
       en indiquant l’option --directisa.

       C'est  vraiment  une  mauvaise  méthode  pour accéder à l’horloge, notamment parce que les
       programmes de l'espace utilisateur ne sont généralement pas supposés effectuer directement
       des  opérations  d'E/S et désactiver les interruptions. hwclock fournit cette méthode pour
       permettre de faire des essais ou du dépannage et parce  que  ça  pourrait  être  la  seule
       méthode  disponible sur les systèmes compatibles ISA et Alpha ne disposant pas d’un pilote
       fonctionnel de périphérique rtc.

       Pour un Jensen Alpha, aucun moyen ne permet à hwclock d’exécuter ces instructions d’entrée
       et  sortie,  et  à  la  place le fichier spécial de périphérique /dev/port est utilisé, et
       fournit une interface presque d’aussi bas niveau au sous-système d’E/S.

       Sur un système m68k, hwclock peut accéder à l’horloge soit par la  console,  soit  par  le
       fichier spécial de périphérique /dev/tty1.

   La fonction d’ajustement
       l’horloge  matérielle  n'est  généralement  pas très précise. Cependant, la plupart de ces
       imprécisions sont prévisibles. Elle gagne ou perd la même  durée  chaque  jour.  C’est  la
       dérive systématique. La fonction --adjust de hwclock permet d’appliquer des corrections de
       dérive systématique à l’horloge matérielle.

       Cela fonctionne de la façon suivante :  hwclock  utilise  un  fichier,  /etc/adjtime,  qui
       conserve des informations historiques. C’est le fichier d'ajustement (adjtime).

       Supposons  un  démarrage  sans  fichier  d'ajustement.  La  commande  hwclock  --set règle
       l’horloge matérielle à l’heure  actuelle.  hwclock  crée  le  fichier  d’ajustement  et  y
       sauvegarde l’heure actuelle en tant que dernier moment d’étalonnage. Cinq jours plus tard,
       l’horloge a gagné 10 secondes, la commande  hwclock  --set  --update-drift  corrige  alors
       l’heure.  hwclock  met  à  jour  le fichier d'ajustement avec l’heure actuelle en tant que
       dernier moment d’étalonnage, et enregistre une dérive systématique de 2 secondes par jour.
       Au  bout  de  24 heures,  avec  la  commande 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 été fait pendant un jour. Par conséquent, 2 secondes sont enlevées de
       l’horloge matérielle. L’heure actuelle est alors enregistrée en tant  que  dernier  moment
       d’étalonnage.  24 heures après, la commande hwclock --adjust effectuera exactement la même
       opération.

       Quand l’option --update-drift est utilisée avec --set ou  --systohc,  le  taux  de  dérive
       systématique  est  (re)calculé en comparant l’heure matérielle actuelle avec correction de
       dérive à la nouvelle heure de réglage, et est déduit le taux de  dérive  sur  24 heures  à
       partir  du dernier horodatage de calibration du fichier d’ajustement. Ce facteur de dérive
       mis à jour est sauvé dans /etc/adjtime.

       Une petite erreur est introduite quand l’horloge matérielle est définie,  de  telle  sorte
       que  --adjust  évite  de faire un ajustement de moins d'une seconde. Plus tard, lors d’une
       redemande d’ajustement, la dérive accumulée sera supérieure à une seconde et --adjust fera
       l'ajustement même de toute partie infime.

       hwclock  --hctosys  utilise  aussi  les  données du fichier d’ajustement pour compenser la
       valeur lue de l’horloge matérielle avant de l’utiliser pour régler l’horloge  système.  La
       limitation  d’une  seconde  de  --adjust  ne  s’applique  pas,  et les valeurs de décalage
       inférieures à la seconde  seront  corrigées  immédiatement.  L’horloge  matérielle  et  le
       fichier  d’ajustement  ne sont pas modifiés. Cela devrait éliminer la nécessité d’utiliser
       --adjust, sauf si autre chose sur  le  système  a  besoin  de  voir  l’horloge  matérielle
       compensée.

   Le fichier d'ajustement
       Même  s’il  garde  ce  nom  pour  des  raisons  historiques,  il contient en fait d'autres
       informations utilisées par hwclock d’un appel à l'autre.

       Le format du fichier d'ajustement, en ASCII, est le suivant.

       Ligne 1 : trois nombres, séparés par des espaces : 1) le taux de  dérive  systématique  en
       seconde  par  jour,  nombre  décimal  flottant ;  2) le  nombre de secondes écoulées entre
       1969 UTC  et  la  date  du  dernier  étalonnage,  entier  décimal ;  3) zéro   (pour   une
       compatibilité avec clock(8)) en tant qu'entier décimal.

       Ligne 2 :  un  nombre :  le  nombre  de  secondes  écoulées  entre  1969 UTC et le dernier
       étalonnage. Zéro s'il n'y a pas eu d'étalonnage ou si  un  des  derniers  étalonnages  est
       discutable  (par  exemple,  si  l’horloge matérielle, depuis cet étalonnage, est erronée).
       C'est un entier décimal.

       Ligne 3 : « UTC » ou « LOCAL ». Indique si l’horloge matérielle est à l’heure  universelle
       ou  à  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  précédemment  utilisé  avec  le  programme
       clock(8) avec hwclock.

   Synchronisation automatique de l’horloge matérielle par le noyau
       Vous  devez  être  au  courant  d'un  autre moyen utilisé pour garder l’horloge matérielle
       synchronisée sur certains systèmes. Le noyau Linux  possède  un  mode  qui  copie  l’heure
       système  vers  l’horloge  matérielle  toutes  les 11 minutes. C’est pratique de l’utiliser
       quand un moyen sophistiqué comme NTP garde l’heure système à jour (NTP  est  un  moyen  de
       synchroniser  l’heure  système  avec  soit  un  serveur de temps situé quelque part sur le
       réseau, soit une horloge radio en duplex avec le système, consultez la RFC 1305).

       Ce mode (on l'appellera le « mode 11 minutes ») est inactif jusqu'à ce que  quelque  chose
       l'active.  Le  démon  NTP  ntpd  est  une  chose  qui  l'active. Il peut être désactivé en
       exécutant n'importe quelle commande, y compris  hwclock  --hctosys  qui  ajuste  l’horloge
       système de manière classique. Cependant, si le démon NTP est toujours actif, il réactivera
       le « mode 11 minutes » la prochaine fois qu’il synchronisera l’horloge système.

       Quand le « mode 11 minutes » est actif, les 64 bits de la variable  time_status  du  noyau
       sont   mis  à  zéro.  L’état  de  la  variable  peut  être  contrôlé  avec  les  commandes
       adjtimex --print ou ntptime.

       Si le « mode 11 minutes » est activé sur le système, l’utilisation de --hctosys ou --systz
       risque  d’être  nécessaire  dans  un  script  de  démarrage,  en  particulier si l’horloge
       matérielle est configurée pour utiliser le fuseau horaire local. À moins que le  noyau  ne
       soit  informé  du  fuseau horaire utilisé par l’horloge matérielle, il risque de l’écraser
       avec une heure incorrecte. Le noyau utilise UTC par défaut.

       La première commande en espace utilisateur pour définir l’horloge système informe le noyau
       du fuseau horaire utilisé par l’horloge matérielle. Cela ce fait par l’intermédiaire de la
       variable persistent_clock_is_local du noyau. Si --hctosys ou  --systz  sont  utilisées  en
       premier,  cette  variable  sera  définie  d’après  le  fichier  d’ajustement ou l’argument
       approprié en ligne de commande. Remarquez que lorsque cette capacité est utilisée, et  que
       le  fuseau horaire de l’horloge matérielle est modifié, un redémarrage est nécessaire pour
       informer le noyau.

       hwclock --adjust ne devrait pas être utilisée avec le « mode 11 minutes » de NTP.

   Valeur du siècle de l’horloge matérielle ISA
       Une sorte de norme définit l’octet 50 de la mémoire du CMOS sur une machine ISA  comme  un
       indicateur  du  siècle.  hwclock  ne  l'utilise  ni  le  modifie car certaines machines ne
       définissent pas l'octet de cette manière, et ce  n'est  vraiment  pas  nécessaire  puisque
       l'année du siècle constitue un bon moyen de connaître le siècle.

       Si  vous  pensez  à  un  usage possible de l'octet du siècle CMOS (« CMOS century byte »),
       contactez le responsable de hwclock, une option peut être adéquate.

       Notez que cette section est pertinente uniquement si vous utilisez un accès ISA  direct  à
       l’horloge  matérielle.  L'ACPI  fournit  un  moyen  standard d'accéder au siècle, quand le
       matériel le gère.

CONFIGURATION DE DATE ET HEURE

   Garder l’heure sans synchronisation externe
       Cette discussion est basée sur les conditions suivantes.

       • Rien de ce qui fonctionne n’altère les date et heure de l’horloge, par exemple  ntpd(1),
         des tâches régulières (cron), etc.

       • L’horloge  système  est  configurée  sur  le  fuseau  horaire  local. Consultez POSIX ou
         « RIGHT » ci dessous.

       • Tôt pendant le démarrage, les commandes suivantes sont appelées dans cet ordre :
         adjtimex --tick valeur --frequency valeur
         hwclock --hctosys

       • Pendant l’arrêt, la commande suivante est appelée :
         hwclock --systohc

           * Les systèmes sans adjtimex peuvent utiliser ntptime.

       Que la précision de l’heure soit maintenue avec ntpd(1) ou pas, configurer le système pour
       qu’il reste à l’heure par lui-même est utile.

       La  première  étape  pour  réaliser  cela  est  d’avoir une vision d’ensemble claire. Deux
       périphériques matériels indépendants fonctionnent à leur propre  rythme  et  divergent  de
       l’heure  « correcte » à leur propre taux. Les méthodes et programmes pour la correction de
       dérive sont différents pour chaque périphérique. Cependant, la plupart des  systèmes  sont
       configurés  pour  échanger  des valeurs entre ces deux horloges au démarrage et à l’arrêt.
       Les heures de chaque périphérique, avec leurs propres erreurs, sont  donc  transférées  de
       l’une  à l’autre dans les deux sens. Si vous tentez de configurer une correction de dérive
       pour une seule d’entre elles, la dérive de l’autre l’écrasera. Sans vision d’ensemble,  la
       confusion s’installe…

       Ce  problème peut être évité en configurant la correction de dérive pour l’horloge système
       et en évitant simplement d’arrêter la machine. Cela, avec le fait que toute  la  précision
       de  hwclock (y compris le calcul des facteurs de dérive) dépend de l’exactitude du taux de
       l’horloge système, signifie que la configuration de  l’horloge  système  devrait  être  la
       première étape.

       La  dérive  de  l’horloge  système  est  corrigée  avec  la  commande  --tick  et l’option
       --frequency d’adjtimex(8). Les deux fonctionnent ensemble, le tic est l’ajustement  global
       alors  que  la  fréquence  est  l’ajustement  fin  (sur les systèmes sans paquet adjtimex,
       ntptime -f ppm peut être utilisé à la place).

       Certaines distributions Linux essayent de calculer automatiquement la dérive de  l’horloge
       système  avec  l’opération  de comparaison d’adjtimex. Essayer de corriger une horloge qui
       dérive en utilisant comme référence une autre horloge qui dérive est un peu comme un chien
       qui  essaye de s’attraper la queue. Ça peut fonctionner au bout d’un moment, mais pas sans
       beaucoup d’efforts et de frustration. Cette automatisme  peut  être  considéré  comme  une
       amélioration  face  à  l’absence de configuration, mais espérer un résultat optimal serait
       une erreur. Les options --log d’adjtimex s’avèrent être une meilleure possibilité pour une
       configuration manuelle.

       Simplement suivre la dérive de l’horloge système avec ntpdate -q, ou date -Ins par rapport
       à une horloge de précision, puis calculer soi-même la correction, serait plus efficace.

       Après la définition des valeurs de tic et de fréquence, il faut  continuer  de  tester  et
       affiner  les  ajustements  jusqu’à  ce  que  l’horloge système garde l’heure correctement.
       Consultez adjtimex(8) pour plus de renseignements  et  l’exemple  montrant  un  calcul  de
       dérive.

       Une fois que l’horloge système est fiable, l’horloge matérielle va pouvoir être réglée.

       En   règle  générale,  la  dérive  à  froid  fonctionne  bien  dans  la  plupart  des  cas
       d’utilisation. Cela devrait même être vrai pour  les  machines  fonctionnant  vingt-quatre
       heures  sur  vingt-quatre  et  dont  les  temps d’arrêt usuels servent uniquement pour les
       redémarrages. Dans ce cas, la valeur du facteur de dérive est peu différente, mais  si  la
       machine  est  arrêtée  plus  longtemps que d’habitude, la dérive à froid devrait donner de
       meilleurs résultats.

       Étapes pour calculer la dérive à froid

       1 Confirmer que ntpd(1) ne sera pas lancé au démarrage.

       2 L’heure de l’horloge système doit être exacte à l’arrêt.

       3 Arrêter le système.

       4 Laisser passer suffisamment de temps sans modifier l’horloge matérielle.

       5 Démarrer le système.

       6 Utiliser hwclock immédiatement pour régler l’heure exacte avec l’option --update-drift.

       Remarque : si l’étape six utilise --systohc, alors  l’horloge  système  doit  être  réglée
       correctement (étape 6a) juste avant.

       Laisser  hwclock  calculer  le  facteur  de  dérive  est un bon point de départ, mais pour
       obtenir  des  résultats  optimaux,  modifier  directement  le  fichier  /etc/adjtime  sera
       probablement  nécessaire.  Continuer  de  tester et affiner les ajustements jusqu’à ce que
       l’horloge  matérielle  soit  corrigée  correctement  au  démarrage.  Pour  vérifier  cela,
       assurez-vous  que l’heure système soit correcte avant l’arrêt puis utilisez ntpdate -q, ou
       date -Ins et une horloge de précision, immédiatement après le démarrage.

       Les deux horloges utilisent  typiquement  un  oscillateur  à  quartz.  Les  cristaux  sont
       utilisés  comme oscillateurs de référence en électronique parce qu’ils produisent une onde
       sinusoïdale très propre et stable à presque tous les égards. Leur plus  grand  défaut  est
       d’avoir  un  coefficient  de température positif, c’est-à-dire que leur fréquence augmente
       avec la température et vice  versa.  Par  conséquent,  le  taux  de  dérive  des  horloges
       matérielle  et  système  change  avec  la température propre et externe de la machine. Ces
       caractéristiques varieront en fonction des machines suivant leur conception.

       Les stratégies de correction de dérive sont multiples, mais en  général,  le  but  est  de
       trouver  une  moyenne  à long terme. Une moyenne sur un an permet de prendre en compte les
       changements de température ambiante en fonction des saisons. Dans ce cas, l’heure pourrait
       avancer un peu en été et retarder un peu en hiver, mais au bout d’un an, cela s’équilibre.

       Si  cela  commence à sembler futile, il n’en est rien. Laissée sans attention, une machine
       peut perdre trois secondes par jour ou plus. La dérive accumulée sur un an peut facilement
       dépasser une demi-heure. Les corrections de dérive soigneusement mises en place permettent
       une amélioration significative sur la capacité d’une machine à  rester  raisonnablement  à
       l’heure.

   LOCALE ou UTC
       Garder  l’horloge  matérielle  en  heure  locale  provoque  des  résultats  incohérents de
       changement d’heure d’été.

       • Si Linux est en cours de fonctionnement au moment du changement d’heure, l’heure  écrite
         dans l’horloge matérielle sera ajustée pour le changement.

       • Si  Linux  n’est pas en cours de fonctionnement au moment du changement d’heure, l’heure
         lue de l’horloge matérielle ne sera pas ajustée pour le changement.

       L’horloge matérielle sur un système compatible ISA ne garde que l’heure et la  date,  elle
       n’a  pas  de  connaissance  du  fuseau  horaire ni d’heure d’été. Ainsi, quand hwclock est
       informée d’utiliser l’heure locale, elle considère l’horloge matérielle  en  heure  locale
       « correcte » et ne fait pas d’ajustement de l’heure qui y est lue.

       Linux  ne  gère  les  changements  d’heure d’été de façon transparente que quand l’horloge
       matérielle est gardée en UTC. Ce fonctionnement facilite le  travail  des  administrateurs
       système car hwclock utilise l’heure locale en sortie et comme argument de l’option --date.

       Les systèmes POSIX, comme Linux, sont conçus pour avoir l’horloge système en heure UTC. Le
       but de l’horloge matérielle est d’initialiser l’horloge système, donc la garder  aussi  en
       UTC est sensé.

       Linux,  cependant, essaye de s’adapter à l’horloge matérielle en heure locale. C’est avant
       tout pour gérer le multiboot avec les plus anciennes versions de Microsoft Windows. Depuis
       Windows 7,  la  clef de registre RealTimeIsUniversal est supposée fonctionner correctement
       pour permettre de garder l’horloge matérielle en UTC.

   POSIX ou « RIGHT »
       Une discussion sur la configuration de date et d’heure serait incomplète  sans  parler  de
       fuseaux  horaires,  c’est  assez  bien  couvert  par  tzset(3).  Une  zone  qui semble non
       documentée est le répertoire right de la base de  données  de  fuseaux  horaires,  parfois
       appelé « tz » ou « zoneinfo ».

       Deux  bases  de  données distinctes existent dans le système zoneinfo : posix et right. Le
       répertoire right (maintenant appelé zoneinfo-leaps, secondes  intercalaires  de  zoneinfo)
       contient  les secondes intercalaires alors que posix ne les contient pas. Pour utiliser la
       base  de  données  right,  l’horloge  système  doit  être  configurée  en  (UTC + secondes
       intercalaires),  ce  qui  est  équivalent  à (TAI − 10). Cela permet de calculer le nombre
       exact de secondes entre deux dates ayant une seconde intercalaire entre  elles.  L’horloge
       système  est  alors  convertie  en  heure civile correcte, y compris UTC, en utilisant les
       fichiers de fuseau horaire right qui soustraient les  secondes  intercalaires.  Remarque :
       cette configuration est considérée expérimentale et est connue pour poser des problèmes.

       Pour  configurer  un  système  à  utiliser  une  base  de données en particulier, tous les
       fichiers de son répertoire doivent être copiés à la  racine  de  /usr/share/zoneinfo.  Les
       fichiers  ne  sont  jamais  utilisés  directement des sous-répertoires posix ou right, par
       exemple TZ='right/America/Martinique'. Cette habitude était devenue  si  répandue  que  le
       projet zoneinfo amont a restructuré le système d’arborescence de fichiers en déplaçant les
       sous-répertoires posix et right hors  du  répertoire  zoneinfo  et  dans  des  répertoires
       adjacents :

         /usr/share/zoneinfo
         /usr/share/zoneinfo-posix
         /usr/share/zoneinfo-leaps

       Malheureusement, certaines distributions Linux replacent l’arborescence comme précédemment
       dans leurs paquets. Ainsi, le problème des administrateurs système  utilisant  directement
       le  répertoire right persiste. À cause de cela, le fuseau horaire du système est configuré
       pour inclure les secondes intercalaires alors que la  base  de  données  de  zoneinfo  est
       encore  configurée  pour  les  exclure.  Pourtant, quand une application comme une horloge
       mondiale, un agent de transport de courrier (MTA) ou hwclock a besoin du fichier de fuseau
       horaire  South_Pole,  elle  le  prend à la racine du /usr/share/zoneinfo, puisque c’est ce
       qu’elle est censée faire. Ces fichiers excluent les secondes intercalaires, mais l’horloge
       système les inclut maintenant, avec pour conséquence une conversion d’heure incorrecte.

       Tenter  de  mélanger  et  de  faire  correspondre  les  fichiers  de  ces bases de données
       distinctes ne fonctionnera pas, puisqu’elles nécessitent  chacune  que  l’horloge  système
       utilise un fuseau horaire différent. La base de données zoneinfo doit être configurée pour
       utiliser soit posix, soit right, conformément à la description précédente.

VARIABLES D'ENVIRONNEMENT

       TZ

FICHIERS

       /etc/adjtime
       /etc/localtime
       /dev/rtc
       /dev/rtc0
       /dev/misc/rtc
       /dev/efirtc
       /dev/misc/efirtc
       /dev/port
       /dev/tty1
       /proc/cpuinfo

VOIR AUSSI

       crontab(1), date(1), gettimeofday(2), settimeofday(2), tzset(3), adjtimex(8)

AUTEURS

       Écrit par Bryan Henderson, septembre 1996 <bryanh@giraffe-data.com>, basé sur  le  travail
       effectué  sur le programme clock par Charles Hedrick, Rob Hooft et Harald Koenig. Veuillez
       vous référer au code source pour une histoire complète et les crédits.

DISPONIBILITÉ

       La  commande  hwclock  fait  partie  du  paquet  util-linux,  elle  est   disponible   sur
       <ftp://ftp.kernel.org/pub/linux/utils/util-linux/>.

TRADUCTION

       Cette  page  de manuel a été 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.