Windows vs Linux Ortszeit?

40

Seitdem ich Linux in Dualboot mit Windows verwendet habe, habe ich festgestellt, dass beim Neustart des Computers die Uhrzeit auf dem anderen Betriebssystem falsch war, z. B. 12:00 Uhr unter Linux, dann habe ich neu gestartet und unter Windows war es 18:00 Uhr Als ich das BIOS überprüfte, wurde die RTC auf 18:00 gesetzt. Da meine Zeitzone -06: 00 CST ist, gehe ich davon aus, dass Linux die RTC-Zeit auf UTC setzt und die Zeit basierend auf der Zeitzone neu berechnet, während Windows die RTC nur auf die lokale Zeit setzt. Beide verwenden denselben NTP-Server, um die Uhrzeit zu synchronisieren.

Die Frage ist, wer macht das Richtige? Auf welchem ​​sollte ich die Zeitzoneneinstellung auf UTC setzen, um auf beiden die richtige Zeit zu haben?

arielnmz
quelle
Nebenfrage: Warum geschah dies nicht mit älteren Versionen von Windows und Linux?
Golimar

Antworten:

16

Beides ist nicht falsch, aber die Verwendung von UTC ist sinnvoller. Die Echtzeituhr hat keine Zeitzone. Es ist nur eine dumme Wanduhr. Wenn Ihre lokale Zeitzone die Sommerzeit berücksichtigt (von der es viele Geschmacksrichtungen gibt und die Regeln willkürlich geändert werden), müssen Sie sie zweimal im Jahr ändern. Das Betriebssystem erledigt das für Sie, aber wenn die RTC UTC ist, erledigt das Betriebssystem die UTC-> lokale Übersetzung trotzdem - warum mit der Uhr fummeln? Während des DST "Fallback" -Übergangs kann Ihnen die RTC nicht sagen, wie spät es ist! Ist es 1:30 Uhr CDT oder CST?

Anscheinend unterstützt Windows 8 UTC für die RTC. Windows 7 hat es auch getan, aber es gab Probleme .

Es gab ein besseres Argument dagegen, als die Leute ihre BIOS-Uhren manuell einstellten, aber die serverbasierte Zeit ist jetzt viel vorherrschender.

Ken
quelle
68

Vor kurzem war ich mit demselben Problem konfrontiert, und so habe ich es behoben. Sie müssen in beiden Betriebssystemen eine kleine Änderung vornehmen.

Ich habe zuerst mit Linux angefangen. Führen Sie die folgenden Befehle als root aus.

ntpdate pool.ntp.org

Dadurch wird Ihre Zeit aktualisiert, wenn sie nicht richtig eingestellt ist.

Stellen Sie nun mit diesem Befehl die Hardware-Uhr auf UTC.

hwclock --systohc --utc

Quelle

Starten Sie nun Windows und fügen Sie die folgende Registrierung hinzu. Erstellen Sie einfach eine .reg-Datei mit dem folgenden Code im Editor. Speichern Sie es und führen Sie es aus.

Windows Registry Editor Version 5.00

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

Quelle

Ab dem nächsten Start zeigen beide Betriebssysteme die korrekte Uhrzeit an.

Ayan
quelle
6
Beste dokumentierte Antwort mit konkreten Anweisungen! +1.
Am
1
Sollte enthalten, für welche Windows-Editionen die Registrierungsoptimierung gilt.
Tanath
2
Wann hat Windows die Fähigkeit erlangt, eine Systemuhr zu verstehen, die eine andere als die lokale Zeit anzeigt?
Mark
1
Diese Registrierungsoptimierung funktioniert unter Windows XP / Vista / 7/8 / 8.1. @ Tanath
Ayan
3
@ Mark In Windows XP.
Michael Hampton
4

Der Normalfall ist, dass auf Linux-Systemen die RTC (Echtzeituhr) auf UTC eingestellt ist und die Umstellung auf lokale Zeit im Benutzerbereich auf der Grundlage der Zeitzonendaten und der TZUmgebungsvariablen erfolgt. Dies ist "weniger schlecht", da die RTC des Systems monoton ansteigt und später jede Zeitzonenmagie angewendet wird. So wird beispielsweise sichergestellt, dass in Zukunft normalerweise keine Dateien einen Zeitstempel erhalten (was in diesem Fall mindestens einmal im Jahr der Fall sein kann) System-RTC ist auf Ortszeit eingestellt). Wie Ken betonte , kennt die RTC selbst keine Zeitzone, sondern nur die Zeit.

Wie Sie festgestellt haben, führt dies zu Problemen beim Dual-Booten mit einem System, das normalerweise nicht so funktioniert, wie die Microsoft-Betriebssystemfamilie, bei der im Allgemeinen davon ausgegangen wird, dass die RTC auf die Ortszeit eingestellt ist. Ja, Windows NT (ich glaube, es wird bis zu NT 4 zurückgegangen) kann mit der auf UTC eingestellten RTC funktionieren, aber zuletzt sah es so aus, als ob es sich nicht wirklich um eine unterstützte Konfiguration handelte, und es gab eine Reihe von Einschränkungen.

Die einfache Lösung in Ihrem Fall ist wahrscheinlich, die RTC auf die lokale Zeit einzustellen und Ihrem Linux-System mitzuteilen, dass die RTC auf die lokale Zeit eingestellt ist (die genaue Vorgehensweise variiert je nach Distribution und Release-Version, aber anscheinend in Ubuntu, das Sie UTC=noin / eingestellt haben). etc / default / rcS ) und konfigurieren Sie dann die Betriebssysteme so, dass nur eines von ihnen (vorzugsweise dasjenige, das Sie am häufigsten verwenden, da die in allen anderen angezeigte Zeit zweimal im Jahr falsch ist, bis es gestartet wurde und eine Chance hatte Um dies zu korrigieren, wird die Sommerzeit geändert. Und leben Sie mit den Nachteilen, die auf einem Einzelbenutzersystem beherrschbar sein sollten.

Sie können die Windows-Seite auch so einstellen, dass UTC als Zeitzone verwendet wird und die automatische Sommerzeitumstellung in Windows deaktiviert wird. Außerdem können Sie Linux so einstellen, dass die RTC in UTC angezeigt wird und die Zeit entsprechend der jeweiligen Vorgehensweise konvertiert wird. Dies führt jedoch dazu, dass Windows Datum und Uhrzeit in UTC anzeigt, was möglicherweise nicht Ihren Wünschen entspricht. Für uns Europäer, die höchstens drei Stunden von UTC entfernt sind, ist das kein großes Problem, aber in den USA könnte es ein größeres Problem sein. Dies ist wahrscheinlich realistischer, wenn Sie Windows nur gelegentlich verwenden und Ihr primäres Betriebssystem Linux oder ein anderes RTC-UTC-fähiges Betriebssystem ist.

ein CVn
quelle
Haben Sie Informationen zu "Es war nicht wirklich eine unterstützte Konfiguration und es gab eine Reihe von Einschränkungen."?
Random832
@ Random832 Mal sehen, ob ich das finde. Ich weiß, dass ich es schon einmal gesehen habe, aber jetzt kann ich es nicht mehr mit einer schnellen Google-Suche finden.
ein Lebenslauf vom
2

Wenn Sie dual booten und es Zeitkonflikte zwischen Windows und Ubuntu gibt, geschieht dies, weil Ubuntu die Zeit standardmäßig als UTC auf der Hardware-Uhr speichert, während Microsoft Windows die Zeit als lokale Zeit speichert, was zu Zeitkonflikten zwischen Ubuntu und Windows führt.

Sie müssen Ihr Linux-System so einstellen, dass es die Ortszeit verwendet, wie in diesem Handbuch für Ubuntu beschrieben .

JakeGould
quelle
Es wird die Ortszeit verwendet, und mir ist bewusst, dass die Uhrzeit tatsächlich in UTC gespeichert wird (wenn Sie zumindest die Frage lesen). Ich weiß, was ich tun kann, um dies zu beheben ändern Sie stattdessen den anderen.
Arielnmz
Standardmäßig verwendet Windows die Ortszeit, Mac OS verwendet UTC und UNIX-ähnliche Betriebssysteme variieren. Ein Betriebssystem, das im Allgemeinen den UTC-Standard verwendet, betrachtet die CMOS-Zeit (Hardware Clock) als UTC-Zeit (GMT, Greenwich Time) und nimmt eine Anpassung vor, während die Systemzeit beim Systemstart entsprechend Ihrer Zeitzone eingestellt wird.
Auch hier ist mir bewusst, dass ich nur wissen möchte, welches Betriebssystem es richtig macht, damit ich z. B. die Windows-Zeitzone auf UTC einstellen und dieses Problem beheben kann, oder umgekehrt.
Arielnmz
@MagomedSegaIsmailov Läuft Mac OS auf Systemen, die BIOS RTC verwenden? Ich hätte angenommen, dass EFI etwas Vernunft bietet.
Random832
0

Ich boote doppelt Windows 10 und remixe OS und folge einfach nur der Anleitung für Windows, die für mich funktioniert hat, beide Male sind korrekt. Ich habe die Befehlszeile verwendet, um Ihr Skript hinzuzufügen, da es einfacher war

Edwin Correa
quelle
Bitte geben Sie als Antwort nicht "Danke" an. Wenn Sie etwas Zeit in die Website investieren, erhalten Sie ausreichende Berechtigungen , um die von Ihnen gewünschten Antworten zu verbessern.
DavidPostill