Man page - hwclock(8)
Packages contains this manual
apt-get install util-linux-extra
Available languages:
en fr ja ro sr deManual
HWCLOCK
NOMSYNOPSIS
DESCRIPTION
FONCTIONS
OPTIONS
NOTES
Horloges dans un systĂšme Linux
MĂ©thodes dâaccĂšs Ă lâhorloge matĂ©rielle
La fonction dâajustement
Le fichier dâajustement
Synchronisation automatique de lâhorloge matĂ©rielle par le noyau
Valeur du siĂšcle de lâhorloge matĂ©rielle ISA
CONFIGURATION DE DATE ET HEURE
Garder lâheure sans synchronisation externe
LOCALE ou UTC
POSIX ou « RIGHT »
CODE DE RETOUR
ENVIRONNEMENT
FICHIERS
VOIR AUSSI
AUTEURS
SIGNALER DES BOGUES
DISPONIBILITĂ
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 la 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 <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/>.