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.

util-linux                                        janvier 2015                                        HWCLOCK(8)