48 votes

Temps incorrect lors du dual-boot de Windows et Linux

Depuis que j'ai commencé à utiliser Linux en dualboot avec Windows, j'ai remarqué que lorsque je redémarrais la machine, l'heure sur l'autre OS était incorrecte, par exemple il était 12h00 sur Linux, puis j'ai redémarré et sur Windows il était 18h00, et lorsque j'ai vérifié le BIOS, l'horloge en temps réel était réglée sur 18h00. Comme mon fuseau horaire est -06:00 CST, je suppose que Linux se contente de régler l'heure de l'horloge en temps réel sur UTC et recalcule l'heure en fonction du fuseau horaire, tandis que Windows se contente de régler l'horloge en temps réel sur l'heure locale. Les deux utilisent le même serveur NTP pour synchroniser l'heure.

La question est, lequel a raison? Sur lequel devrais-je régler le paramètre de fuseau horaire sur UTC afin d'avoir la bonne heure sur les deux?

0 votes

1 votes

Question annexe : pourquoi cela ne s'est-il pas produit avec les anciennes versions de Windows et Linux?

77voto

moe3144 Points 1

J'ai récemment rencontré le même problème et voici comment je l'ai résolu. Vous devez apporter un petit changement aux deux systèmes d'exploitation.

J'ai commencé par Linux en premier. Exécutez ces commandes suivantes en tant que root.

ntpdate pool.ntp.org

Cela mettra à jour votre heure si elle n'est pas correctement définie.

Maintenant, réglez l'horloge matérielle sur UTC avec cette commande.

hwclock --systohc --utc

Source

Maintenant, démarrez sous Windows et ajoutez la clé de registre suivante. Créez simplement un fichier .reg en utilisant le code ci-dessous dans le Bloc-notes. Enregistrez-le et exécutez-le.

Windows Registry Editor Version 5.00

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

Source

Dès le prochain démarrage, les deux systèmes d'exploitation afficheront l'heure correcte.

2 votes

Doit inclure les éditions de Windows auxquelles s'applique la modification du registre.

0 votes

Je me souviens de cette astuce lorsque j'ai exécuté Windows via Boot Camp sur un MacBook Pro (temps enregistré en UTC). Bonne trouvaille à nouveau

3 votes

Quand Windows a-t-il acquis la capacité de comprendre une horloge système qui garde un temps autre que local?

18voto

Daniel Von Fange Points 123

Les deux ne sont pas faux, mais utiliser UTC est plus correct. Le RTC n'a pas de fuseau horaire; c'est simplement un simple horloge murale. Si votre fuseau horaire local respecte l'heure avancée (dont il existe de nombreux types, et les règles changent arbitrairement), alors deux fois par an, vous devez le modifier. Le système d'exploitation le fera pour vous, mais si le RTC est UTC, le système d'exploitation effectue de toute façon la traduction UTC->locale -- pourquoi bidouiller avec l'horloge? De plus, lors de la transition "retour à l'heure normale" de l'heure avancée, le RTC ne peut pas vous dire quelle heure il est! Est-ce 1h30 CDT ou CST?

Apparemment, Windows 8 prend en charge UTC pour le RTC. Windows 7 le faisait également, mais il y avait des problèmes.

Il y avait un meilleur argument contre cela à une époque où les gens réglaient manuellement leurs horloges BIOS, mais l'heure basée sur les serveurs est maintenant beaucoup plus répandue.

5voto

user Points 28521

Le cas normal est que les systèmes Linux aient l'horloge RTC (horloge temps réel) réglée sur UTC, et la conversion en heure locale se fait dans l'espace utilisateur basé sur les données de fuseau horaire et la variable d'environnement TZ. C'est "moins mauvais" car cela garde l'horloge RTC du système augmentant de manière monotone, et applique toute magie de fuseau horaire plus tard, en s'assurant par exemple qu'aucun fichier n'aura normalement de timestamp dans le futur (ce qui peut facilement arriver au moins une fois par an, si l'horloge RTC du système est réglée sur l'heure locale). Comme l'a souligné Ken, l'horloge RTC elle-même n'a aucune notion de fuseau horaire, seulement de temps.

Comme vous l'avez découvert, cela pose des problèmes lorsque vous démarrez en dual-boot avec un système qui n'opère normalement pas de cette manière, comme la famille Microsoft de systèmes d'exploitation qui s'attendent généralement à ce que l'horloge RTC soit réglée sur l'heure locale. Oui, Windows NT (je pense que ça remonte à au moins NT 4, en fait) peut fonctionner avec l'horloge RTC réglée sur UTC, mais du moins la dernière fois que j'ai regardé, ce n'était pas vraiment une configuration prise en charge et il y avait un certain nombre de mises en garde.

La solution facile dans votre cas est probablement de régler l'horloge RTC sur l'heure locale, dire à votre système Linux que l'horloge RTC est réglée sur l'heure locale (la méthode exacte pour faire cela varie en fonction de la distribution et de la version de publication, mais apparemment dans Ubuntu vous réglez UTC=no dans /etc/default/rcS), et ensuite configurer les systèmes d'exploitation de telle sorte que seul un d'entre eux (de préférence celui que vous utilisez le plus, puisque l'heure affichée dans tous les autres sera incorrecte deux fois par an jusqu'à ce qu'il soit démarré et ait eu l'occasion de corriger cela) gère les changements d'heure d'été. Et accepter les inconvénients, qui devraient être gérables sur un système mono-utilisateur.

Vous pourriez également paramétrer le côté Windows pour utiliser UTC comme fuseau horaire et désactiver les modifications automatiques de l'heure d'été dans Windows, et rester avec Linux réglé pour avoir l'horloge RTC en UTC et afficher l'heure convertie selon ses pratiques. Cependant, cela fera afficher à Windows la date et l'heure en UTC, ce qui pourrait ne pas être ce que vous voulez vraiment. Ce n'est pas un gros problème pour nous, Européens, qui sommes au plus à trois heures de retard par rapport à UTC, mais cela pourrait poser plus de problèmes aux États-Unis. C'est probablement une option plus réaliste si vous n'utilisez Windows que de temps en temps, et que votre OS principal est Linux ou un autre OS prenant en compte RTC-UTC.

0 votes

Avez-vous des informations sur "ce n'était pas vraiment une configuration prise en charge et il y avait un certain nombre de mises en garde."?

0 votes

@Random832 Laissez-moi voir si je peux trouver ça. Je sais que je l'ai vu avant, mais je ne semble pas pouvoir le trouver avec une recherche rapide sur Google du moins.

2voto

Si vous avez un dual boot et qu'il y a des conflits horaires entre Windows et Ubuntu, cela se produit parce qu'Ubuntu stocke l'heure sur l'horloge matérielle en UTC par défaut, tandis que Microsoft Windows stocke l'heure en tant qu'heure locale, causant ainsi des conflits horaires entre Ubuntu et Windows.

Vous devez configurer votre système Linux pour utiliser l'heure locale comme expliqué ici dans ce guide pour Ubuntu.

0 votes

Il utilise l'heure locale, et je suis conscient qu'il stocke en effet l'heure en UTC (si vous avez au moins lu la question), et je sais ce que je peux faire pour corriger cela, la question est laquelle fait réellement la bonne chose pour changer l'autre à la place.

0 votes

Par défaut, Windows utilise l'heure locale, Mac OS utilise UTC, et les systèmes d'exploitation de type UNIX varient. Un système d'exploitation qui utilise la norme UTC considérera généralement l'heure CMOS (horloge matérielle) comme une heure UTC (GMT, heure de Greenwich) et effectuera un ajustement lors du réglage de l'heure système au démarrage en fonction de votre fuseau horaire.

0 votes

Encore une fois, j'en suis conscient, je veux juste savoir quel système d'exploitation le fait correctement afin de pouvoir par exemple définir le fuseau horaire de Windows sur UTC et corriger cela, ou juste faire l'inverse.

0voto

morhook Points 150

Choisissez votre propre aventure!

Vous pouvez soit le réparer sur Linux, soit sur Windows 11 (si vous y êtes déjà!)

Windows 11

Ma solution préférée, merci d'être venu ici.

Ouvrez une console cmd en tant qu'administrateur (Recherche -> "cmd" -> Clic droit sur "Invite de commandes" -> Exécuter en tant qu'administrateur). Et tapez la commande :

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

Cela ajoutera une entrée dans le registre qui fera fonctionner tout. En guise de touche finale, pour éviter de redémarrer et tout ça (pour corriger l'heure actuelle), il suffit de cliquer sur Paramètres -> Heure et Langue -> Date et heure -> Régler l'heure automatiquement -> Désactivé puis Activé de nouveau (comme dans la IT crowd).

Linux

Tapez cette commande (cela pourrait perturber les calculs des changements d'heures d'été! Attention au pays dans lequel vous vivez!).

timedatectl set-local-rtc 1 --adjust-system-clock

Pour annuler cela, exécutez

timedatectl set-local-rtc 0

source de référence https://ubuntuhandbook.org/index.php/2021/06/incorrect-time-windows-11-dual-boot-ubuntu/

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