Provided by: manpages-fr_4.10.0-1_all bug

NOM

       hwclock – utilitaire d’horloges

SYNOPSIS

       hwclock [fonction] [option ... ]

DESCRIPTION

       hwclock  est  un outil d’administration pour des horloges. Il permet d’afficher l’heure de
       l’horloge matérielle, de modifier l’heure de l’horloge  matérielle,  de  régler  l’horloge
       matérielle  à  l’heure  système,  de  régler  l’horloge  système  à  partir  de  l’horloge
       matérielle, de compenser la dérive de l’horloge matérielle, de corriger le fuseau  horaire
       de l’horloge système, de définir le fuseau horaire du noyau, le calendrier NTP et l’Époque
       (seulement sur Alpha), 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 et à l’option --directisa, et une nouvelle option --update-drift a été  ajoutée.
       Consultez leurs descriptions 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.

       -a, --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.

       --getepoch
       --setepoch
              Ces fonctions sont uniquement pour  les  machines  Alpha  et  ne  sont  disponibles
              qu’avec le pilote RTC du noyau Linux.

              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  le  BIOS  de la machine définit le décompte d’années entières de
              l’horloge matérielle au nombre d'années entières 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 pour préciser
              l’année. Par exemple :

                  hwclock --setepoch --epoch=1952

              Le pilote de l’horloge temps réel  (RTC)  essaie  de  deviner  la  valeur  correcte
              d’Époque, aussi la régler peut ne pas être nécessaire.

              La  valeur  de  l'Époque  est  utilisée  à  chaque  fois  que hwclock lit ou ajuste
              l’horloge matérielle sur une machine Alpha. Pour les machines ISA, le noyau utilise
              une valeur fixe de 1900 pour l’Époque.

       --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 par un autre système d’exploitation en multiboot.

       -r, --show
       --get
              Lire l’horloge matérielle matérielle et afficher l’heure sur la sortie standard  au
              format  ISO 9601.  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'heure de 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  par  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
              d'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 par 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  son  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.  À  essayer  sans  cette  option  si  --set  échoue.  Consulter
              --update-drift ci-après.

       --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, (re)calculer le facteur  de  dérive.  À
              essayer sans l’option si --systohc échoue. Consulter --update-drift ci-après.

       -V, --version
              Afficher le nom et la version du logiciel et quitter.

       -h, --help
              Afficher l’aide-mémoire puis quitter.

OPTIONS

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

       --date=chaîne_date
              Cette  option  doit  être utilisée avec les fonctions --set ou --predict, autrement
              elle est ignorée.

                  hwclock --set --date='16:45'

                  hwclock --predict --date='2525-08-14 07:11:05'

              L’argument doit être en heure locale, même si  l’horloge  matérielle  est  en  UTC.
              Consultez  l’option  --localtime.  Par conséquent, l’argument ne doit pas comporter
              d’information de fuseau horaire. Il ne doit pas aussi ê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.  Les
              secondes  fractionnaires  sont  écartées  silencieusement.  Cette option peut gérer
              beaucoup de formats de date et heure, mais les paramètres précédents  doivent  être
              respectés.

       --delay=secondes
              Cette option peut être utilisée pour surcharger le délai utilisé en interne lors du
              réglage de l’horloge. La valeur par défaut est 0,5s (500 ms)  pour  rtc_cmos,  pour
              d’autres  types  d’horloge temps réel le délai est zéro. Si le type d’horloge temps
              réel est impossible à déterminer (à partir de sysfs), alors la  valeur  par  défaut
              est 0,5 pour être rétrocompatible.

              La  valeur  par défaut de 500 ms est basée sur l’horloge matérielle compatible avec
              MC146818A (x86) communément utilisée. Cette horloge matérielle peut être  réglée  à
              n’importe  valeur  entière  de  temps  plus  une demi-seconde. Le nombre entier est
              requis parce qu’il n’existe pas d’interface pour régler ou mesurer une fraction  de
              seconde. Le délai supplémentaire d’une demi-seconde existe car l’horloge matérielle
              met à jour la seconde suivante précisément 500 ms après le réglage de  la  nouvelle
              heure. Malheureusement, ce comportement est spécifique au matériel et dans certains
              cas un autre délai est nécessaire.

       -D, --debug
              Utilisation avec --verbose. L’option  --debug\fP  est  obsolète  et  pourrait  être
              redéfinie ou supprimée dans une publication future.

       --directisa
              Cette  option  est  utile  pour  les  machines  compatibles ISA des familles x86 et
              x86_64. Pour les autres machines, elle 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 fichier  de
              périphérique  rtc, supposé être 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  l'échec  de  toutes  les  autres
              méthodes. Consultez l’option --rtc.

       --epoch=année
              Cette  option  est  nécessaire  lors de l’utilisation de la fonction --setepoch. La
              valeur  minimale  de  année  est   1900.   Celle   maximale   dépend   du   système
              (ULONG_MAX - 1).

       -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/rtc0
                  /dev/rtc
                  /dev/misc/rtc
              Pour IA-64 :
                  /dev/efirtc
                  /dev/misc/efirtc

       -l, --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 /etc/adjtime (--verbose est implicite avec cette option).

       --update-drift
              Mettre à jour le coefficient de dérive de l’horloge matérielle  dans  /etc/adjtime.
              Ce ne peut être utilisé qu’avec --set ou --systohc.

              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 NTP 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  rendent  la  machine
                anormalement chaude, le calcul du facteur de dérive serait hors limites ;

                ·
                augmentation significative du temps d’arrêt du système (depuis  la  version v2.31
                lorsque --update-drift n’est pas utilisé, l’horloge temps réel n’est pas lue).

              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.

              Cette  option nécessite de lire l’horloge matérielle avant de la régler. Si elle ne
              peut être lue, cela conduit à l’échec  des  fonctions  de  réglage.  Cela  peut  se
              produire,  par exemple, si l’horloge matérielle est corrompue à cause d’un problème
              d’alimentation électrique. Dans ce cas, l’horloge doit  d’abord  être  réglée  sans
              cette option. Bien qu’il ne soit pas en fonctionnement, le facteur de correction de
              dérive ne serait pas valable de toute façon.

       -v, --verbose
              Afficher plus de détails sur ce que réalise hwclock en interne.

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 de seconde 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’horloge
       temps réel, 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).

   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ées et sorties avec le
       fichier spécial de périphérique  rtc  qui  est  supposé  être  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é 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 cela pourrait être la seule
       méthode disponible  sur  les  systèmes  compatibles  ISA  ne  disposant  pas  d’un  pilote
       fonctionnel de périphérique rtc.

   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. En 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 que nombre décimal flottant.

       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. Ce mode est une option au moment
       de la compilation, aussi tous les noyaux n’ont pas cette possibilité. Il 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).

       Si  le  noyau  est  compilé  avec  l’option  « mode  11 minutes »,  il sera actif quand la
       discipline de l’horloge du noyau est dans l’état synchronisé. Dans cet état, le bit 6  (le
       bit  réglé  dans  le  masque 0x0040) de la variable time_status du noyau n’est pas défini.
       Cette valeur est  produite  comme  ligne  « status »  des  commandes  adjtimex --print  ou
       ntptime.

       Il  agit  de manière externe, comme le démon NTP pour mettre la discipline de l'horloge du
       noyau dans l’état synchronisé et, par conséquent, active le « mode 11 minutes ».  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.

       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 des horloges, par exemple un  démon
         NTP ou une tâche régulière (cron).

         ·
         Le fuseau horaire du système est configuré pour l'heure locale correcte. Consultez POSIX
         ou « RIGHT » ci dessous.

         ·
         Rapidement lors du 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 le démon NTP 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.
       Désormais 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.

       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  de  la
       fréquence 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 les options  --tick  et  --frequency  d’‐
       adjtimex(8). Les deux fonctionnent ensemble, le tic est l’ajustement grossier 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. Cela 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 sntp, 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
       d'affiner les ajustements jusqu’à ce que l’horloge  système  garde  l’heure  correctement.
       Consultez  adjtimex(2)  pour plus de renseignements et l’exemple montrant un calcul manuel
       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 Veiller à ce que le démon NTP ne soit par 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   correcte   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 sntp, ou
       date -Ins et une horloge de précision, immédiatement après le démarrage.

   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 ou en assignant
       un chemin de base de données à la variable TZDIR d'environnement.

CODE DE RETOUR

       Une des valeurs suivantes sera renvoyée.

       EXIT_SUCCESS (0 sur les systèmes POSIX)
              Exécution du programme réussie.

       EXIT_FAILURE (1 sur les systèmes POSIX)
              L’opération a échoué ou la syntaxe de la commande était inadéquate.

ENVIRONNEMENT

       TZ     Si cette variable est définie, sa valeur prend le  pas  sur  la  valeur  de  fuseau
              horaire configurée sur le système.

       TZDIR  Si  cette  variable est définie, sa valeur prend le pas sur le chemin du répertoire
              de base de données des fuseaux horaires configuré sur le système.

FICHIERS

       /etc/adjtime
              Fichier de configuration et d’état pour hwclock.

       /etc/localtime
              Fichier de fuseau horaire du système

       /usr/share/zoneinfo/
              Répertoire de la base de données de fuseaux horaires du système.

       Fichiers de périphérique pouvant être essayés  par  hwclock  pour  un  accès  à  l’horloge
       matérielle :
       /dev/rtc0
       /dev/rtc
       /dev/misc/rtc
       /dev/efirtc
       /dev/misc/efirtc

VOIR AUSSI

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

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
       <https://www.kernel.org/pub/linux/utils/util-linux/>.

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <ccb@club-internet.fr>,  Michel  Quercia <quercia AT cal DOT enst DOT fr>, Thierry Vignaud
       <tvignaud@mandriva.com>,   Frédéric   Delanoy   <delanoy_f@yahoo.com>,   Thierry   Vignaud
       <tvignaud@mandriva.com>,    Christophe   Sauthier   <christophe@sauthier.com>,   Sébastien
       Blanchet, Jérôme Perzyna <jperzyna@yahoo.fr>, Aymeric Nys  <aymeric  AT  nnx  POINT  com>,
       Alain  Portal  <aportal@univ-montp2.fr>,  Thomas  Huriaux <thomas.huriaux@gmail.com>, Yves
       Rütschlé <l10n@rutschle.net>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien
       Cristau   <jcristau@debian.org>,  Philippe  Piette  <foudre-blanche@skynet.be>,  Jean-Baka
       Domelevo-Entfellner <domelevo@gmail.com>, Nicolas Haller <nicolas@boiteameuh.org>, Sylvain
       Archenault <sylvain.archenault@laposte.net>, Valéry Perrin <valery.perrin.debian@free.fr>,
       Jade         Alglave         <jade.alglave@ens-lyon.org>,         Nicolas         François
       <nicolas.francois@centraliens.net>, Alexandre Kuoch <alex.kuoch@gmail.com>, Lyes Zemmouche
       <iliaas@hotmail.fr>,   Florentin    Duneau    <fduneau@gmail.com>,    Alexandre    Normand
       <aj.normand@free.fr>,   David   Prévot   <david@tilapin.org>   et   Jean-Paul  Guillonneau
       <guillonneau.jeanpaul@free.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à debian-l10n-french@lists.debian.org ⟨⟩.