7 votes

Ubuntu 18.04 ne peut pas régler l'horloge matérielle sur l'heure locale

J'avais une machine Ubuntu 18.04.1 en dual boot avec Windows 10, et ces deux OS ont un conflit de temps. Auparavant sur ma machine avec Ubuntu 16.04 ce conflit peut être facilement résolu avec timedatectl set-local-rtc 1 — adjust-system-clock mais cette commande ne fonctionne plus sur mon système Ubuntu 18.04.

Voici la sortie du terminal :

yunhui@hp:~$ timedatectl set-local-rtc 1 --adjust-system-clock
yunhui@hp:~$ timedatectl 
                      Local time: Thu 2018-08-02 16:31:58 CST
                  Universal time: Thu 2018-08-02 08:31:58 UTC
                        RTC time: Thu 2018-08-02 08:31:58
                       Time zone: Asia/Shanghai (CST, +0800)
       System clock synchronized: no
systemd-timesyncd.service active: yes
                 RTC in local TZ: yes

Warning: The system is configured to read the RTC time in the local time zone.
         This mode can not be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.
yunhui@hp:~$ grep -i utc /etc/default/rcS
grep: /etc/default/rcS: No such file or directory

En fait, Ubuntu sait que j'ai changé pour interpréter l'horloge matérielle comme étant l'heure locale, mais l'heure RTC est toujours l'heure universelle. Le fichier "rcS" n'existe pas non plus, mais j'ai essayé de le créer manuellement et d'écrire "UTC=no", sans succès.

Quelqu'un sait-il comment résoudre ce problème ?

0voto

tagMacher Points 518

La bonne solution consiste à régler l'horloge à l'heure UTC. Le comportement par défaut d'Ubuntu indique alors l'heure locale correcte sur la base des paramètres locaux/régionaux ou de la détection de l'emplacement si elle est disponible. La façon dont Ubuntu traite le RTC peut être vérifiée à l'aide de la sortie de sudo hwclock --debug ; il vous dira qu'Ubuntu s'attend à ce que la RTC soit réglée sur UTC. Le comportement de Windows peut être corrigé par une modification appropriée d'une clé de registre particulière - des informations à ce sujet sont disponibles sur Internet.

0voto

Lido Points 168

Il est préférable que le RTC suive l'UTC, il faut donc utiliser la commande suivante

timedatectl set-local-rtc 0

Pouvez-vous nous montrer les paramètres actuels en exécutant la commande timedatectl sans aucun paramètre ? Voici un exemple de ce à quoi il faut faire attention :

$ timedatectl
                  Local time: Wed 2020-02-19 09:46:42 +08
              Universal time: Wed 2020-02-19 01:46:42 UTC
                    RTC time: Wed 2020-02-19 01:46:43
                   Time zone: Asia/Singapore (+08, +0800)
   System clock synchronized: no
             RTC in local TZ: no

Si l'horloge du système est synchronisée, cela peut vous empêcher de régler le RTC. Vous devez donc la désactiver en :

sudo timedatectl set-ntp false

Vous pouvez maintenant remettre l'heure RTC à zéro en procédant comme suit :

sudo timedatectl set-time "2014-11-08 06:40:00"

Notez que Windows utilise le RTC différemment de Linux. Par défaut, Windows suppose que la RTC est stockée en heure locale, tandis que Linux suppose que l'heure est stockée en heure UTC et applique un décalage. Cela peut conduire à ce que l'un de vos systèmes d'exploitation affiche une heure erronée dans une situation de double amorçage.

Références :

0voto

Pezhvak Points 101

Comme l'ont suggéré d'autres personnes ici, je vous recommande vivement de conserver la RTC en UTC et d'ajuster votre heure locale dans les deux systèmes d'exploitation. Sous Windows, vous pouvez utiliser la procédure décrite dans https://superuser.com/questions/494432/force-Windows-8-to-use-utc-when-dealing-with-bios-clock .
En fait, vous créez une entrée de registre appelée

HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

et cela indique à Windows l'heure à laquelle votre RTC est réglé. Si vous utilisez Windows 10 64bit, vous devez utiliser un QWord ; les autres versions utilisent un DWord, mais les valeurs sont les mêmes pour toutes les versions de Windows qui honorent cette entrée de registre : 1, pour dire que votre RTC est réglé sur UTC, 0 pour dire qu'il est réglé sur l'heure locale. On sait que cela fonctionne au moins de Win7 à Win10, et la plupart des serveurs Win. Peut-être que XP fonctionne aussi, mais je ne sais pas.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X