Beim Dual-Boot ist die Uhrzeit ausgeschaltet

303

Dual-Boot-System Windows XP Pro und Ubuntu 12.04.

Ich habe das BIOS auf die richtige Zeit und Ubuntu auf die US Eastern Zeit eingestellt. Ubuntu bootet und die Zeit wird um -4 Stunden verschoben. Wenn ich die Zeit in Ubuntu korrigiere, wird die Zeit beim Booten in Windows XP um + 4 Stunden verschoben.

Dies ist eine Neuinstallation von 12.04. Ich hatte dieses Problem nicht vor der Neuinstallation von Ubuntu.

Bill Walden
quelle

Antworten:

265

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

Zeitkonflikte bei mehreren Boot-Systemen

Betriebssysteme speichern und rufen die Zeit in der Hardware-Uhr auf Ihrem Motherboard ab, damit sie die Zeit auch dann verfolgen kann, wenn das System nicht mit Strom versorgt wird. Die meisten Betriebssysteme (Linux / Unix / Mac) speichern die Uhrzeit auf der Hardware-Uhr standardmäßig als UTC , obwohl einige Systeme (insbesondere Microsoft Windows) die Uhrzeit auf der Hardware-Uhr als "lokale" Uhrzeit speichern. Dies führt in einem Dual-Boot-System zu Problemen, wenn beide Systeme die Hardware-Uhr unterschiedlich anzeigen.

Der Vorteil der Hardware-Uhr als UTC besteht darin, dass Sie die Hardware-Uhr nicht ändern müssen, wenn Sie zwischen Zeitzonen wechseln oder wenn die Sommerzeit (DST) beginnt oder endet, da UTC keine DST- oder Zeitzonen-Offsets hat.

Die Umstellung von Linux auf die lokale Zeit ist einfacher und zuverlässiger als die Umstellung von Windows auf UTC. Daher verwenden Dual-Boot-Linux- / Windows-Systeme in der Regel die lokale Zeit.

Seit Intrepid (8.10) ist UTC = yes voreingestellt.

Windows UTC verwenden lassen

Hinweis: Diese Methode wurde ursprünglich unter Windows Vista und Server 2008 nicht unterstützt, wurde jedoch mit Vista SP2, Windows 7, Server 2008 R2 und Windows 8 / 8.1 zurückgegeben.

Damit MS Windows die Zeit von der Hardware-Uhr als UTC berechnet.

Erstellen Sie eine Datei mit dem Namen WindowsTimeFixUTC.reg mit dem folgenden Inhalt und doppelklicken Sie darauf, um den Inhalt mit der Registrierung zusammenzuführen:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
     "RealTimeIsUniversal"=dword:00000001

Hinweis: Der Windows-Zeitdienst schreibt die Ortszeit unabhängig von der oben angegebenen Registrierungseinstellung beim Herunterfahren weiterhin in die Echtzeituhr. Daher ist es praktisch, den Windows-Zeitdienst mit diesem Befehl zu deaktivieren (wenn die Zeitsynchronisierung unter Windows weiterhin erforderlich ist und Zeit von Drittanbietern verwendet wird) Synchronisierungslösung):

sc config w32time start= disabled

Änderung rückgängig machen
Sie können eine Datei mit folgendem Inhalt erstellen und anschließend darauf doppelklicken, um die ursprünglichen Änderungen wie oben beschrieben zu übernehmen:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
     "RealTimeIsUniversal"=-

Wenn der Windows-Zeitdienst deaktiviert war, aktivieren Sie ihn erneut mit dem folgenden Befehl:

sc config w32time start= demand

Verwenden Sie unter Linux die lokale Zeit

So teilen Sie Ihrem Ubuntu-System mit, dass die Hardware-Uhr auf die lokale Zeit eingestellt ist:

Systeme vor Ubuntu 15.04 (zB Ubuntu 14.04 LTS):

  1. bearbeiten /etc/default/rcS
  2. Fügen Sie den folgenden Abschnitt hinzu oder ändern Sie ihn

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

Ubuntu 15.04 Systeme und höher (zB Ubuntu 16.04 LTS):

  1. Öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus

    timedatectl set-local-rtc 1
    
Eric Carvalho
quelle
53
Oh Gott. Ich kann nicht glauben, dass sie dumm genug waren, die lokale Zeit auf einer Hardware-Uhr zu verwenden. Warum würdest du das jemals tun?
iono
20
@twome, weil es in den frühen Tagen von MS-DOS nicht viel gab, was die Vernetzung betraf, und es nicht üblich gewesen wäre, einen PC so weit zu verschieben, dass er Zeitzonen verschob. (Und ja, trotz dieser Geschichte war es immer noch nicht der beste Schachzug).
Jon Hanna
9
@twome Obwohl ich Ihnen zustimme, dass die Hardware-Uhr als universell gilt, da sie keine Zeitzoneninformationen enthält, gibt es einige Probleme damit: A) BIOS / UEFI verfügen über verschiedene Funktionen, z. B. Auto-Wake-Up / Sleep-Timer Zeiten für diese Trigger festlegen. Es wäre seltsam, diese Zeiten in UTC einzustellen - zumindest für durchschnittliche Benutzer. B) Wie Jon bereits sagte, aus Gründen der Abwärtskompatibilität.
Shahriyar Imanov
5
Führen Sie in Windows PowerShell diesen Befehl aus, um die oben genannte Registrierungseigenschaft zu aktualisieren: New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -PropertyType DWord -Value 00000001
Anatoly Mironov
6
Für diejenigen, die den Text überfliegen, müssen Sie nur die Einstellungen in einem der Betriebssysteme ändern, nicht in beiden.
Alexander Revo
67

Um die BIOS-Uhr in einer systembasierten Version (15.04 und höher) auf die lokale Zeit anstatt auf UTC einzustellen, müssen Sie den timedatectlBefehl verwenden. Laut dem Arch Wiki :

Sie können den Hardware-Uhrzeitstandard über die Befehlszeile einstellen. Sie können überprüfen, was Sie eingestellt haben, indem Sie:

$ timedatectl | grep local

Die Hardware-Uhr kann mit dem timedatectl Befehl abgefragt und eingestellt werden . Verwenden Sie Folgendes, um den Zeitstandard der Hardware-Uhr auf Ortszeit zu ändern:

# timedatectl set-local-rtc 1

Wenn Sie zur Hardware-Uhr in UTC zurückkehren möchten, gehen Sie wie folgt vor:

# timedatectl set-local-rtc 0
muru
quelle
4
Auf Ubuntu 16.10 hat es geholfen, "hwclock --systohc --localtime" zu machen. Dies schreibt den "lokalen Teil" nach / etc / adjtime und macht ihn dadurch permanent.
user1050755
1
@ user1050755 Ist das vor, nach oder anstelle des Befehls timedatectl?
Nasch
36

Ihre Zeitzone ist Eastern , derzeit EDT (Eastern Daylight Time). EDT ist UTC minus vier Stunden, genau wie der Offset, den Sie erleben.

Wenn dies auf einem Dual-Boot-System geschieht, liegt dies normalerweise daran, dass ein Betriebssystem davon ausgeht, dass die Hardware-Uhr die Ortszeit verfolgt, während das andere Betriebssystem davon ausgeht, dass die Hardware-Uhr die UTC-Zeit verfolgt.

In Ihrem Fall ist Ihre Hardware-Uhr wahrscheinlich auf die Ortszeit eingestellt, und:

  • Windows ist so eingestellt, dass die Ortszeit verwendet wird, was (in Anbetracht Ihrer Zeiteinstellungen) korrekt ist .
  • Ubuntu ist auf die Verwendung von UTC eingestellt, was (in Anbetracht Ihrer Zeiteinstellungen) falsch ist .

Wenn Sie die Zeit im Ubuntu-System nur manuell oder automatisch zurücksetzen würden, wäre dies in Windows falsch. Das ist also keine gute Lösung.

Stattdessen ist es wahrscheinlich die beste Lösung, Ubuntu so zu konfigurieren, dass die Hardware-Uhrzeit als Ortszeit behandelt wird (dann können Sie Ihre Windows-Konfiguration und Ihre Hardware-Uhrzeit in Ruhe lassen).

Bearbeiten Sie dazu /etc/default/rcSals root und stellen Sie sicher, dass Folgendes vorhanden ist UTC=no:

  1. Drücken Sie Alt+ F2.

  2. Tippen gksu gedit /etc/default/rcSund drücken Enter.

  3. Du wirst wahrscheinlich folgendes sehen:

    # assume that the BIOS clock is set to UTC time (recommended)
    UTC=yes
    
    • Wenn Sie dies tun, wechseln Sie UTC=yeszu UTC=no. (Oder Sie möchten möglicherweise auch einen Kommentar hinzufügen, indem Sie ihn in eine Art ändern UTC=no # changed to accommodate Windows system. Alles in einer Zeile nach einem #Zeichen ist ein Kommentar und dient nur dazu, Ihre Einstellungen besser lesbar zu machen.)
    • Wenn nicht, suchen Sie nach einer UTC=Linie. Wenn es unkommentiert ist (dh #am Anfang kein a hat ), ändern Sie es entsprechend. Wenn es kommentiert ist, entfernen Sie das Kommentarzeichen, #und vergewissern Sie sich, dass darauf steht UTC=no.
  4. Speichern Sie die Datei und beenden Sie den Texteditor.

  5. Starten Sie den Computer neu, um die Änderungen zu übernehmen, und überprüfen Sie, ob die Uhrzeit jetzt auf beiden Betriebssystemen ordnungsgemäß funktioniert.

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

(Aber das ist sehr allgemein; ich habe diese Antwort geschrieben, um sie speziell auf Ihre Situation zu beziehen, was ein ziemlich verbreitetes Problem ist.)

Eliah Kagan
quelle
Beachten Sie, dass dies auch passieren kann, wenn Sie ein Upgrade von einer Ubuntu-Version auf die nächste durchführen, wie es bei mir der Fall war. Ich kann empfehlen, die oben genannte Korrektur durchzuführen und dann Ihre Uhr wie in dieser Antwort manuell zu synchronisieren (Anpassung an die Arbeit mit systemd): askubuntu.com/a/254846/139735
starbeamrainbowlabs
Dies sollte imho die akzeptierte Antwort sein. Ich hatte Windows installiert und lief gut, dann installierte ich Ubuntu und die Uhren gingen durcheinander - ich kann keinen Grund sehen, warum ich die Windows-Einstellungen ändern sollte, wenn es eindeutig das Hinzufügen von Linux war, das meine Konfiguration brach.
Przemek D
13

Die / etc / rcS-Korrektur funktionierte bei meiner Win7 / Ubuntu 14.04x64-Installation nicht und es wurden auch keine Korrekturen über die Uhr-GUI vorgenommen. Da die Ursache des Problems die BIOS-Zeit im Vergleich zur UTC-Zeit ist und Windows bei der Verwendung von UTC ein Problem darstellt, habe ich nur einen Punkt auf der Karte ausgewählt, der UTC + 0 verwendet (keine Änderung zwischen BIOS- und UTC-Zeit). .

Versuchen Sie, Ihren Standort nach Reykjavik (der Hauptstadt Islands) zu ändern. Voila! Ihre Ubuntu-Zeit ändert sich entsprechend Ihrer BIOS-Zeit.

OpensourceFool
quelle
Haha! Genial. : D Es ist mir wirklich egal, wo ich mich befinde. Das waren zwei Sekunden. Danke vielmals.
Hellblauer Punkt