Provided by: util-linux-locales_2.40.2-14ubuntu1.1_all bug

NOM

       hwclock - utilitaire d’horloges

SYNOPSIS

       hwclock [function] [option...]

DESCRIPTION

       hwclock is an administration tool for the time clocks. It can: display the Hardware Clock time; set the
       Hardware Clock to a specified time; set the Hardware Clock from the System Clock; set the System Clock
       from the Hardware Clock; compensate for Hardware Clock drift; correct the System Clock timescale; set the
       kernel’s timezone, NTP timescale, and epoch (Alpha only); and predict future Hardware Clock values based
       on its drift rate.

       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.

       --param-get=parameter; --param-set=parameter=value
           Read and set the RTC’s parameter. This is useful, for example, to retrieve the RTC’s feature or set
           the RTC’s Backup Switchover Mode.

           parameter is either a numeric RTC parameter value (see the Kernel’s include/uapi/linux/rtc.h) or an
           alias. See --help for a list of valid aliases. parameter and value, if prefixed with 0x, are
           interpreted as hexadecimal, otherwise decimal values.

       --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\ 8601.
           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.

           The kernel also keeps a timezone value, the --hctosys function sets it to the timezone configured for
           the system. The system timezone is configured by the TZ environment variable or the /etc/localtime
           file, as tzset(3) would interpret them. The obsolete tz_dsttime field of the kernel’s timezone value
           is set to zero. (For details on what this field used to mean, see 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.

       --vl-read, --vl-clear
           Some RTC devices are able to monitor the voltage of the backup battery and thus provide a way for the
           user to know that the battery should be replaced. The --vl-read function retrieves the Voltage Low
           information and decodes the result into human-readable form. The --vl-clear function resets the
           Voltage Low information, which is necessary for some RTC devices after a battery replacement.

           See the Kernel’s include/uapi/linux/rtc.h for details on which pieces of information may be returned.
           Note that not all RTC devices have this monitoring capability, nor do all drivers necessarily support
           reading the information.

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

       -V, --version
           Afficher le numéro de version et 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.

           The 500ms default is based on commonly used MC146818A-compatible (x86) hardware clock. This Hardware
           Clock can only be set to any integer time plus one half second. The integer time is required because
           there is no interface to set or get a fractional second. The additional half second delay is because
           the Hardware Clock updates to the following second precisely 500 ms after setting the new time.
           Unfortunately, this behavior is hardware specific and in some cases another delay is required.

       -D, --debug
           Utilisation avec --verbose. L’option --debug 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. Par 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.

       The Hardware Clock: This clock is an independent hardware device, with its own power domain (battery,
       capacitor, etc), that operates when the machine is powered off, or even unplugged.

       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.

       The System Clock: This clock is part of the Linux kernel and is driven by a timer interrupt. (On an ISA
       machine, the timer interrupt is part of the ISA standard.) It has meaning only while Linux is running on
       the machine. The System Time is the number of seconds since 00:00:00 January 1, 1970 UTC (or more
       succinctly, the number of seconds since 1969 UTC). The System Time is not an integer, though. It has
       virtually infinite precision.

       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 sets the kernel’s timezone to the value indicated by TZ or /etc/localtime with the --hctosys or
       --systz functions.

       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 uses many different ways to get and set Hardware Clock values. The most normal way is to do I/O
       to the rtc device special file, which is presumed to be driven by the rtc device driver. Also, Linux
       systems using the rtc framework with udev, are capable of supporting multiple Hardware Clocks. This may
       bring about the need to override the default rtc device by specifying one with the --rtc option.

       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 also uses the adjtime file data to compensate the value read from the Hardware Clock
       before using it to set the System Clock. It does not share the 1 second limitation of --adjust, and will
       correct sub-second drift values immediately. It does not change the Hardware Clock time nor the adjtime
       file. This may eliminate the need to use --adjust, unless something else on the system needs the Hardware
       Clock to be compensated.

   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 should not be used with NTP '11 minute mode'.

   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
           valor --frequency valor 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.

       Steps to calculate cold drift:

       1
           Ensure that NTP daemon will not be launched at startup.

       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.

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
           The configuration and state file for hwclock. See also adjtime_config(5).

       /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), adjtime_config(5), adjtimex(8), gettimeofday(2), settimeofday(2), crontab(1p), tzset(3)

AUTEURS

       Écrit par Bryan Henderson <bryanh@giraffe-data.com>, septembre 1996, basé sur le travail effectué sur le
       programme clock(8) 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.

SIGNALER DES BOGUES

       Pour signaler un bogue, utilisez le gestionnaire de bogues sur
       https://github.com/util-linux/util-linux/issues.

DISPONIBILITÉ

       La commande hwclock fait partie du paquet util-linux, elle est disponible sur l’archive du noyau Linux
       <https://www.kernel.org/pub/linux/utils/util-linux/>.

util-linux 2.40.2                                  2025-06-05                                         HWCLOCK(8)