web-dev-qa-db-fra.com

L'horloge affiche une heure erronée après le passage d'Ubuntu à Windows 10

J'ai double amorcé Windows 10 et Ubuntu 16.04 en mode UEFI (démarrage sécurisé désactivé). Mon temps dans le BIOS est correct.

Lorsque je démarre sous Ubuntu puis sous Windows 10, le moment est mal choisi. Je dois le corriger manuellement ou par Internet dans Windows 10, et lorsque je redémarre sous Windows 10, le problème ne se pose pas. L'horloge indiquera l'heure correcte. Et puis, lorsque je redémarre sous Linux, l'horloge est correcte, mais si vous revenez à Windows 10, l'horloge tourne à nouveau.

76
Brij Raj Kishore

Conflits horaires de plusieurs systèmes d'amorçage

Les systèmes d’exploitation stockent et récupèrent l’heure dans l’horloge matérielle située sur votre carte mère afin qu’elle puisse la suivre même lorsque le système n’est pas alimenté. La plupart des systèmes d'exploitation (Linux/Unix/Mac) stockent l'heure sur l'horloge matérielle sous la forme UTC par défaut, bien que certains systèmes (notamment Microsoft Windows) stockent l'heure sur l'horloge matérielle sous la forme - heure locale. Cela pose des problèmes dans un système à double démarrage si les deux systèmes voient l’horloge matérielle différemment.

L’avantage d’avoir l’horloge matérielle en UTC est qu’il n’est pas nécessaire de la modifier pour passer d’un fuseau horaire à l’autre, ni au début ou à la fin de l’heure avancée de l’été, car l’heure UTC n’a pas de décalage DST ou de fuseau horaire.

Changer Linux pour utiliser l'heure locale est plus facile et plus fiable que Windows pour utiliser l'UTC, les systèmes Linux/Windows à double démarrage ont tendance à utiliser l'heure locale.

Depuis Intrepid (8.10), UTC = yes est la valeur par défaut.

Solution 1: obliger Windows à utiliser l'UTC

Note: Cette méthode n'était pas initialement prise en charge sur Windows Vista et Server 2008, mais est revenue avec Vista SP2, Windows 7, Server 2008 R2 et Windows 8/8.1.

Pour que MS Windows calcule l'heure à partir de l'horloge matérielle au format UTC.

Créez un fichier nommé WindowsTimeFixUTC.reg avec le contenu suivant, puis double-cliquez dessus pour le fusionner avec le registre:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
 "RealTimeIsUniversal"=dword:00000001

Remarque: le service de temps Windows continue d'écrire l'heure locale sur le RTC, quel que soit le paramètre de registre défini ci-dessus à l'arrêt, il est donc pratique de désactiver le service de temps Windows avec cette commande (si la synchronisation est toujours requise si, dans Windows, utilisez une solution de synchronisation temporelle tierce):

sc config w32time start= disabled

Si vous exécutez la commande ci-dessus dans Powershell, vous devrez spécifier sc.exe:

sc.exe config w32time start= disabled

Inverser le changement

Vous pouvez créer un fichier avec le contenu suivant, puis double-cliquer dessus pour fusionner les modifications d'origine, comme ci-dessus:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
 "RealTimeIsUniversal"=-

Si le service de temps Windows est désactivé, réactivez-le avec la commande suivante:

sc config w32time start= demand

Solution 2: Faites en sorte que Linux utilise l'heure locale

Pour indiquer à votre système Ubuntu que l'horloge matérielle est réglée sur l'heure "locale":

Systèmes antérieurs à Ubuntu 15.04 (par exemple, Ubuntu 14.04 LTS):

  1. éditer/etc/default/rcS
  2. ajouter ou modifier la section suivante

    # Set UTC=yes if your hardware clock is set to UTC (GMT)
    UTC=no
    

Systèmes Ubuntu 15.04 et supérieurs (par exemple Ubuntu 16.04 LTS):

  1. ouvrir un terminal et exécuter la commande suivante

    timedatectl set-local-rtc 1
    

source: Aide Ubunt

92
Ceda EI