L'heure est éteinte sur le double démarrage

303

Système à double démarrage Windows XP Pro et Ubuntu 12.04.

Le bios est réglé sur l'heure correcte et Ubuntu sur l'heure est des États-Unis. Ubuntu démarrera et le temps sera réduit de -4 heures. Si je corrige l'heure dans Ubuntu, lorsque je lance Windows XP, l'heure est désactivée de + 4 heures.

Ceci est une nouvelle installation de 12.04. Je n'avais pas ce problème avant de réinstaller Ubuntu.

Bill Walden
la source

Réponses:

265

https://help.ubuntu.com/community/UbuntuTime#Multiple_Boot_Systems_Time_Conflicts

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 au format UTC par défaut, bien que certains systèmes (notamment Microsoft Windows) stockent l'heure sur l'horloge matérielle au format "local". 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.

Rendre Windows utiliser UTC

Remarque: cette méthode n'était pas initialement prise en charge sous Windows Vista et Server 2008, mais elle 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 de l'heure est toujours requise lorsque vous utilisez Windows, utilisez une heure tierce solution de synchronisation):

sc config w32time start= disabled

Annulation de la modification
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

Faire 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. modifier /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
    
Eric Carvalho
la source
53
Oh Seigneur. Je ne peux pas croire qu'ils étaient assez stupides pour utiliser l'heure locale sur une horloge matérielle. Pourquoi voudriez-vous jamais faire cela?
iono
20
@twome car, dans les débuts de MS-DOS, la mise en réseau était peu fréquente et qu'il ne serait pas courant de déplacer un PC si loin que de modifier le fuseau horaire. (Et oui, même en considérant cette histoire, ce n'était toujours pas le meilleur coup).
Jon Hanna
9
@twome bien que je sois d’accord avec vous pour que votre horloge matérielle reste en mode universel, car elle ne conserve pas les informations sur les fuseaux horaires, il ya peu de problèmes à ce sujet: A) Le BIOS / UEFI présente diverses fixer des temps pour ces déclencheurs. Il serait étrange de définir ces heures en UTC - du moins pour l'utilisateur moyen. B) Comme Jon a dit plus haut, des raisons de compatibilité ascendante.
Shahriyar Imanov
5
Dans Windows PowerShell, exécutez cette commande pour mettre à jour la propriété de registre mentionnée ci-dessus: New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -PropertyType DWord -Value 00000001
Anatoly Mironov le
6
Pour ceux qui parcourent le texte, il vous suffit de modifier les paramètres de l'un des systèmes d'exploitation, pas les deux.
Alexander Revo
67

Pour définir l'horloge du BIOS sur l'heure locale au lieu de l'heure UTC dans une version basée sur systemd (15.04 et ultérieure), vous devez utiliser la timedatectlcommande. Selon le Wiki Arch :

Vous pouvez définir l'heure standard de l'horloge matérielle via la ligne de commande. Vous pouvez vérifier ce que vous avez configuré pour utiliser en:

$ timedatectl | grep local

L'horloge matérielle peut être interrogée et définie avec la timedatectl commande. Pour modifier l'heure standard de l'horloge matérielle en heure locale, utilisez:

# timedatectl set-local-rtc 1

Si vous souhaitez revenir à l'horloge matérielle en UTC, procédez comme suit:

# timedatectl set-local-rtc 0
muru
la source
4
Sur Ubuntu 16.10, il a aidé à faire "hwclock --systohc --localtime". Ceci écrit la "partie locale" dans / etc / adjtime et le rend ainsi permanent.
user1050755
1
@ user1050755 est-ce avant, après ou à la place de la commande timedatectl?
nasch
36

Votre fuseau horaire est Est , qui est actuellement HAE (heure avancée de l'Est). L’EDT est le UTC moins quatre heures, le même que l’offset que vous rencontrez.

Lorsque cela se produit sur un système à double amorçage, c'est généralement parce qu'un système d'exploitation pense que l'horloge matérielle suit l'heure locale, tandis que l'autre système pense que l'horloge matérielle suit l'UTC.

Dans votre cas, votre horloge matérielle est probablement réglée sur l'heure locale et:

  • Windows est configuré pour utiliser l'heure locale, qui (étant donné vos paramètres d'heure) est correcte .
  • Ubuntu est configuré pour utiliser UTC, qui (étant donné vos paramètres de temps) est incorrect .

Si vous deviez simplement réinitialiser l'heure dans le système Ubuntu, manuellement ou automatiquement , ce serait alors faux dans Windows, ce n'est donc pas une bonne solution.

Au lieu de cela, la meilleure solution est probablement de reconfigurer Ubuntu pour traiter l'heure d'horloge matérielle comme une heure locale (vous pouvez alors laisser votre configuration Windows et votre heure d'horloge matérielle seules).

Pour ce faire, éditez en /etc/default/rcStant que root et assurez-vous qu'il a UTC=no:

  1. Appuyez sur Alt+ F2.

  2. Tapez gksu gedit /etc/default/rcSet appuyez sur Enter.

  3. Vous verrez probablement ceci:

    # assume that the BIOS clock is set to UTC time (recommended)
    UTC=yes
    
    • Si vous le faites, changez UTC=yespour UTC=no. (Ou vous pouvez également ajouter un commentaire en le modifiant comme UTC=no # changed to accommodate Windows systemsuit. Tout ce qui se trouve sur une ligne après un #personnage correspond à un commentaire et il n’est là que pour rendre vos paramètres plus lisibles par l’homme.)
    • Si vous ne le faites pas, cherchez une UTC=ligne. Si elle n'est pas commentée (c'est-à-dire qu'elle n'a pas de #début), changez-la en conséquence. S'il est commenté, décommentez-le en supprimant le texte principal #et assurez-vous qu'il l'indique UTC=no.
  4. Enregistrez le fichier et quittez l'éditeur de texte.

  5. Redémarrez pour appliquer vos modifications et vérifier que l'heure fonctionne correctement sur les deux systèmes d'exploitation.

Source: https://help.ubuntu.com/community/UbuntuTime#Make_Linux_use_.27Local.27_time

(Mais c'est très général; j'ai écrit cette réponse pour s'appliquer spécifiquement à votre situation, qui est un problème assez commun.)

Eliah Kagan
la source
Notez que cela peut également se produire lorsque vous mettez à niveau une version d’Ubuntu à la suivante, comme cela m’a été fait pour moi. Je peux recommander d'effectuer le correctif ci-dessus, puis de synchroniser manuellement votre horloge comme indiqué dans cette réponse (en l'ajustant pour qu'elle fonctionne avec systemd): askubuntu.com/a/254846/139735
starbeamrainbowlabs
Cela devrait être la réponse acceptée à mon humble avis. J'avais Windows installé et fonctionnait bien, puis j’ai installé Ubuntu et les horloges ont été malmenées - je ne vois pas pourquoi je devrais modifier les paramètres de Windows si c’était clairement l’ajout de Linux qui avait cassé ma configuration.
Przemek D
13

Le correctif / etc / rcS ne fonctionnait pas sur mon installation Win7 / Ubuntu 14.04x64, pas plus que les correctifs via l’interface graphique d’horloge. Parce que la racine du problème est l'heure du BIOS par rapport à l'heure UTC et que Windows est un problème pour l'utilisation de l'UTC, je viens de choisir un point sur la carte qui utilise UTC + 0 (aucun changement entre l'heure du BIOS et l'heure UTC). .

Essayez de changer d’emplacement pour Reykjavik (la capitale de l’Islande). Voila! Votre heure Ubuntu changera pour correspondre à votre heure BIOS.

OpensourceFool
la source
Haha! Impressionnant. : Je ne me soucie vraiment pas de ma position. C'était une réparation de deux secondes. Merci beaucoup.
Pale Blue Dot