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.