Windows vs Linux Local Time?


40

WindowsとのデュアルブートでLinuxを使用し始めてから、マシンを再起動すると、他のOSの時刻が間違っていることに気付きました。たとえば、Linuxでは12:00でしたが、Windowsでは18:00でした。 BIOSをチェックしたとき、RTCは18:00に設定されていました。私のタイムゾーンは-06:00 CSTであるため、LinuxはRTCの時刻をUTCに設定し、タイムゾーンに基づいて時刻を再計算するだけであるのに対し、WindowsはRTCを現地時刻に設定するだけです。どちらも同じNTPサーバーを使用して時刻を同期します。

問題は、どちらが正しいことをしているのかということです。両方で適切な時間を設定するには、どちらでタイムゾーン設定をUTCに設定する必要がありますか?



副次的質問:古いバージョンのWindowsおよびLinuxではなぜこれが起こらなかったのですか?
ゴリマー

回答:


16

どちらも間違っていませんが、UTCを使用する方が適切です。RTCにはタイムゾーンがありません。それはただの壁掛け時計です。ローカルタイムゾーンがDST(多くのフレーバーがあり、ルールが任意に変更される)を尊重する場合は、年に2回、変更して変更する必要があります。OSがあなたのためにそれを行いますが、RTCがUTCである場合、OSはとにかくUTC->ローカル変換を行います-なぜ時計をいじるのですか?さらに、DSTの「フォールバック」移行中に、RTCはそれが何時かを通知できません!午前1時30分(CDTまたはCST)ですか?

どうやら、Windows 8は RTCのUTCサポートしています。Windows 7も同様ですが、問題ありました

人々がBIOSクロックを手動で設定するとき、これに対するより良い議論がありましたが、サーバーベースの時間は現在はるかに普及しています。


68

私は最近同じ問題に直面しました、そして、これは私がそれを修正した方法です。両方のOSで少し変更する必要があります。

最初にLinuxから始めました。これらの次のコマンドをルートとして実行します。

ntpdate pool.ntp.org

正しく設定されていないと、これにより時刻が更新されます。

次に、このコマンドを使用してハードウェアクロックをUTCに設定します。

hwclock --systohc --utc

ソース

Windowsを起動して、次のレジストリを追加します。メモ帳で以下のコードを使用して.regファイルを作成するだけです。保存して実行します。

Windows Registry Editor Version 5.00

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

ソース

次回の起動以降、両方のOSに正しい時間が表示されます。


6
具体的な指示が記載された最良の文書化された回答!+1。
-agtoever

1
レジストリの調整が適用されるWindowsのエディションを含める必要があります。
タナス

2
Windowsがローカル時刻以外の時刻を保持するシステムクロックを理解できるようになったのはいつですか?
マーク

1
このレジストリ調整は、Windows XP / Vista / 7/8 / 8.1で機能します。@Tanath
アヤン

3
Windows XPの@Mark。
マイケル・ハンプトン

4

通常、LinuxシステムではUTCに設定されたRTC(リアルタイムクロック)が使用され、現地時間への変換はタイムゾーンデータとTZ環境変数に基づいてユーザー空間で行われます。これは、システムRTCを単調に増加させ続け、タイムゾーンマジックを後で適用するため、「それほど悪くない」です。たとえば、通常、将来、タイムスタンプを持つファイルが存在しないことを保証します(システムRTCは現地時間に設定されます)。Kenが指摘したように、RTC自体には時間帯の概念はなく、時間だけがあります。

お気づきのとおり、これは、通常RTCが現地時間に設定されることを期待するMicrosoftファミリのオペレーティングシステムのように、通常はそのように動作しないシステムでデュアルブートするときに問題を引き起こします。はい、Windows NT(実際にはNT 4に戻ると思う) UTCに設定されたRTCで動作しますが、少なくとも最後に私はそれが実際にサポートされている構成ではなく、いくつかの警告がありました。

あなたの場合の簡単な解決策は、おそらくRTCを現地時間に設定し、RTCが現地時間に設定されていることをLinuxシステムに伝えることです(これを行う正確なメカニズムは、ディストリビューションとリリースバージョンによって異なりますUTC=noが、明らかに/ etc / default / rcS)、オペレーティングシステムを設定して、そのうちの1つのみ(できれば最も頻繁に使用するものが望ましい)修正するには)夏時間の変更を処理します。そして、シングルユーザーシステムで管理できるはずの欠点を抱えて生きてください。

また、タイムゾーンとしてUTCを使用するようにWindows側を設定し、Windowsで夏時間の自動変更をオフにし、RTCをUTCに設定し、慣行に従って変換された時刻を表示するようにLinuxを設定します。ただし、これにより、Windowsは日付と時刻をUTCで表示しますが、これは実際に必要なものではない場合があります。これは、UTCからせいぜい3時間離れているヨーロッパ人にとっては大きな問題ではありませんが、米国ではより大きな問題になる可能性があります。これは、Windowsをときどきしか使用せず、プライマリOSがLinuxまたはその他のRTC-UTC対応OSである場合に、より現実的なオプションです。


「実際にはサポートされている構成ではなく、いくつかの注意事項がありました」という情報はありますか?
Random832

@ Random832それを見つけることができるかどうか見てみましょう。私は前にそれを見たことがあることを知っていますが、今では少なくともグーグル検索でそれを見つけることができないようです。
CVn

2

デュアルブートでWindowsとUbuntuの間に時間の競合がある場合、これは、Ubuntuがハードウェアクロックの時刻をデフォルトでUTCとして保存し、Microsoft Windowsが時刻を現地時間として保存するために発生します。

このUbuntuのガイドで説明されているように、ローカル時間を使用するようにLinuxシステムを設定する必要があります。


それは現地時間を使用しており、実際に時刻をUTCとして保存していることを知っています(少なくとも質問を読んだ場合)、これを修正するために何ができるか知っています、質問は実際に正しいことをするものです代わりに他を変更します。
-arielnmz

デフォルトでは、Windowsは現地時間を使用し、Mac OSはUTCを使用し、UNIXのようなオペレーティングシステムは異なります。通常、UTC標準を使用するOSは、CMOS(ハードウェアクロック)時間をUTC時間(GMT、グリニッジ時間)と見なし、タイムゾーンに従ってブート時のシステム時間を設定しながら調整します。

繰り返しになりますが、WindowsのタイムゾーンをUTCに設定してこれを修正する、またはその逆を行うために、どのOSが適切かを知りたいだけです。
-arielnmz

@MagomedSegaIsmailov Mac RTはBIOS RTCを使用するシステムで動作しますか?EFIが何らかの健全性を提供すると仮定していたでしょう。
Random832

0

私はwindows 10とremix osをデュアルブートしていて、windowsのガイドに従うだけでうまくいきました。コマンドラインを使用して、スクリプトを簡単に追加しました。


回答として「ありがとう」を追加しないでください。サイトにしばらく時間をかけると、あなたが好きな答えを投票するのに十分な特権を得ることができます。
DavidPostill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.