Heure locale Windows vs Linux?

40

Depuis que j’ai commencé à utiliser Linux avec Dualboot sous Windows, j’ai remarqué que lorsque j’ai redémarré la machine, l’heure était fausse sur l’autre système d’exploitation. Lorsque j'ai vérifié le BIOS, le RTC était réglé à 18h00. Étant donné que mon fuseau horaire est -06: 00 CST, je suppose que Linux règle simplement l'heure du RTC à UTC et recalcule l'heure en fonction du fuseau horaire, alors que Windows règle simplement le RTC sur l'heure locale. Les deux utilisent le même serveur NTP pour synchroniser l'heure.

La question est de savoir lequel fait la bonne chose? Sur lequel dois-je régler le fuseau horaire sur UTC afin d’avoir la bonne heure sur les deux?

arielnmz
la source
question secondaire: pourquoi cela n’est-il pas arrivé avec les anciennes versions de Windows et Linux?
Golimar

Réponses:

16

Ni l'un ni l'autre n'a tort, mais utiliser l'UTC est plus juste. Le RTC n'a pas de fuseau horaire; c'est juste une horloge murale stupide. Si votre fuseau horaire local respecte l'heure d'été (il existe de nombreuses variantes et que les règles changent arbitrairement), 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 fait de toute façon la traduction UTC-> locale - pourquoi jouer avec l’horloge? En outre, pendant la transition "de repli" de l’heure d'été, le CCF ne peut pas vous dire quelle heure il est! Est-ce qu'il est 1 h 30, heure de Paris ou CST?

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

Il y avait un meilleur argument contre cela lorsque les gens définissaient leurs horloges BIOS manuellement, mais l'heure basée sur le serveur est beaucoup plus répandue maintenant.

Ken
la source
68

J'ai récemment fait face au même problème et voici comment je l'ai résolu. Vous devez faire un peu de changement dans les deux systèmes d'exploitation.

J'ai d'abord commencé avec Linux. Exécutez ces commandes suivantes en tant que root.

ntpdate pool.ntp.org

Cela mettra à jour votre temps s'il n'est pas réglé correctement.

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

hwclock --systohc --utc

La source

Maintenant, démarrez Windows et ajoutez le registre suivant. Créez simplement un fichier .reg en utilisant le code ci-dessous dans le Bloc-notes. Enregistrez-le et lancez-le.

Windows Registry Editor Version 5.00

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

La source

À partir du prochain démarrage, les deux systèmes d'exploitation vous indiqueront l'heure exacte.

Ayan
la source
6
Meilleure réponse documentée avec des instructions concrètes! +1
agtoever
1
Devrait inclure les éditions de Windows auxquelles s’applique le réglage de registre.
Tanath
2
Quand Windows at-il pu comprendre une horloge système qui conserve une heure autre que locale?
Mark
1
Ce réglage du registre fonctionne pour Windows XP / Vista / 7/8 / 8.1. @Tanath
Ayan
3
@ Mark Sous Windows XP.
Michael Hampton
4

Le cas normal est que l'horloge temps réel (RTC) est définie sur UTC et que la conversion en heure locale est effectuée dans l'espace utilisateur en fonction des données de fuseau horaire et de la TZvariable d'environnement. C’est "moins mauvais" car le système RTC augmente de façon monotone et applique plus tard toute magie de fuseau horaire, garantissant par exemple qu’aucun fichier n’aura normalement d’horodatage (ce qui peut facilement se produire au moins une fois par an si le le système RTC est réglé sur l'heure locale). Comme Ken l'a souligné , le CCF lui-même n'a pas de concept de fuseau horaire, mais seulement du temps.

Comme vous l'avez constaté, cela pose des problèmes lors du double démarrage avec un système qui ne fonctionne pas normalement de cette façon, comme la famille de systèmes d'exploitation Microsoft qui s'attend généralement à ce que le RTC soit défini sur l' heure locale . Oui, Windows NT (je pense remonter jusqu’à NT 4, en fait) peut fonctionner avec le RTC défini sur UTC, mais au moins la dernière fois, j’ai regardé qu’il n’était pas vraiment une configuration prise en charge et qu’il y avait un certain nombre de mises en garde.

La solution la plus simple dans votre cas est probablement de régler le RTC sur l'heure locale et d'indiquer à votre système Linux que le RTC est défini sur l'heure locale (la mécanique exacte de cette opération varie en fonction de la distribution et de la version, mais apparemment dans Ubuntu, vous définissez UTC=no/ etc / default / rcS ), puis configurer les systèmes d'exploitation de sorte que seul l' un d'entre eux ( de préférence celui que vous utilisez le plus, depuis le temps affiché dans tous les autres seront faussés deux fois par an jusqu'à ce qu'il ait été botté et a eu une chance pour le corriger) gère les changements de l' heure d'été . Et vivre avec les inconvénients, ce qui devrait être gérable sur un système mono-utilisateur.

Vous pouvez également configurer Windows pour qu'il utilise l'UTC comme fuseau horaire, désactiver les modifications automatiques de l'heure d'été dans Windows et laisser Linux paramétré pour que le RTC soit au format UTC et afficher l'heure convertie conformément à ses pratiques. Cependant, cela entraînera Windows à afficher 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 tout au plus à environ trois heures de distance de l'UTC, mais qui pourrait être plus un problème aux États-Unis. C'est probablement une option plus réaliste si vous utilisez Windows occasionnellement et que votre système d'exploitation principal est Linux ou un autre système d'exploitation compatible RTC-UTC.

un CVn
la source
Avez-vous des informations sur le fait que "ce n'était pas vraiment une configuration prise en charge et il y avait un certain nombre de mises en garde."?
Random832
@ Random832 Laissez-moi voir si je peux trouver ça. Je sais que je l'ai déjà vu, mais je n'arrive pas à le trouver au moins avec une recherche rapide sur Google.
un CVn
2

Si vous double-amorcez et qu'il existe des conflits de temps entre Windows et Ubuntu, cela se produit car Ubuntu stocke l'heure sur l'horloge matérielle au format UTC par défaut, tandis que Microsoft Windows stocke l'heure au format local, ce qui provoque des conflits de temps entre Ubuntu et Windows.

Vous devez configurer votre système Linux pour qu'il utilise l'heure locale, comme expliqué dans ce guide pour Ubuntu .

JakeGould
la source
C’est en utilisant l’heure locale, et j’ai conscience qu’il stocke effectivement l’heure au format UTC (si vous lisez au moins la question), et je sais ce que je peux faire pour résoudre ce problème. La question est de savoir lequel fait réellement changez l'autre à la place.
arielnmz
Par défaut, Windows utilise l'heure locale, Mac OS utilise l'UTC et les systèmes d'exploitation de type UNIX varient. Un système d'exploitation qui utilise le standard UTC considère généralement l'heure CMOS (horloge matérielle) comme une heure UTC (GMT, heure de Greenwich) et l'ajuste lors du réglage de l'heure système au démarrage en fonction de votre fuseau horaire.
Encore une fois, je suis conscient de cela, je veux juste savoir quel système d’exploitation le fait correctement pour pouvoir par exemple définir le fuseau horaire de Windows sur UTC et le réparer, ou simplement l’inverse.
arielnmz
@MagomedSegaIsmailov Est-ce que Mac OS fonctionne sur tous les systèmes utilisant le BIOS RTC? J'aurais supposé qu'EFI apportait un peu de raison.
Random832
0

Je double amorce windows 10 et remix os et je ne fais que suivre le guide pour windows a fonctionné pour moi les deux fois sont corrects. J'ai utilisé la ligne de commande pour ajouter votre script, car c'était plus facile

Edwin Correa
la source
S'il vous plaît ne pas ajouter "merci" comme réponses. Investissez un peu de temps sur le site et vous obtiendrez des privilèges suffisants pour que les réponses qui vous intéressent soient majorées au maximum, ce qui est la façon dont le super-utilisateur dit merci.
DavidPostill