web-dev-qa-db-fra.com

Heure locale Windows vs Linux?

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, par exemple. il était 12 heures sous Linux, puis j'ai redémarré et sous Windows, il était 18 heures; lorsque j'ai vérifié le BIOS, le RTC était réglé à 18 heures. Étant donné que mon fuseau horaire est -06: 00 CST, je suppose que Linux ne fait que mettre l’heure à l’heure UTC à l’heure RTC 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?

38
arielnmz

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 de manière arbitraire), 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? De plus, pendant la transition "de repli" de l'heure d'été, le RTC ne peut pas vous dire l'heure qu'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 des problèmes se sont posés .

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

15
Ken

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 commencé avec Linux en premier. 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

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

Source

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

67
Ayan

Le cas normal est que les systèmes Linux ont le RTC (horloge temps réel) défini 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 variable d'environnement TZ. Ceci est "moins mauvais" car il maintient le système RTC en augmentation monotone et applique ultérieurement la magie du fuseau horaire, en veillant par exemple à ce qu'aucun fichier ne contienne normalement d'horodatage à l'avenir (ce qui peut facilement se produire au moins une fois par an, si le système RTC est réglé sur l'heure locale). Comme Ken l'a souligné , le RTC lui-même n'a pas de notion de fuseau horaire, mais uniquement 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 dans la famille de systèmes d'exploitation Microsoft qui s'attend généralement à ce que RTC soit défini sur . heure locale . Oui, Windows NT (je pense remonter à NT 4, en fait) peut fonctionner avec le RTC sur UTC, mais au moins je l'ai examiné n'était pas vraiment une configuration prise en charge et il y avait un certain nombre de mises en garde.

La solution la plus simple dans votre cas consiste probablement à définir le RTC en heure locale et à informer votre système Linux que le RTC est défini en heure locale (le mécanisme exact de cette opération varie en fonction de la distribution). et la version finale, mais apparemment dans Ubuntu, vous définissez UTC=no dans/etc/default/rcS ), puis configurez les systèmes d’exploitation de sorte que seul un d'entre eux (de préférence celui que vous utilisez le plus, car le temps affiché dans tous les autres sera incorrect deux fois par an jusqu'à ce qu'il ait été démarré et ait eu la chance de le corriger) gère l'heure d'été change. 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 configuré de manière à ce que RTC en UTC et affiche l'heure convertie selon 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 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.

4
a CVn

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 utiliser l'heure locale , comme expliqué ici dans ce guide pour Ubuntu .

2
user423645

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

0
Edwin Correa