web-dev-qa-db-ja.com

Windows対Linuxの現地時間?

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

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

41
arielnmz

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

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

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

16
Ken

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

最初にLinuxから始めました。以下のコマンドをrootとして実行します。

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が正しい時刻を表示します。

69
Ayan

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

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

あなたの場合の簡単な解決策は、おそらくRTCを現地時間に設定し、RTCが現地時間に設定されていることをLinuxシステムに通知することです(これを行う正確なメカニズムは、ディストリビューションとリリースバージョンによって異なります。しかし どうやらUbuntuではUTC=noを/ etc/default/rcSに設定します )、オペレーティングシステムをoneのみになるように構成します(できれば、他のすべてに表示される時刻は、起動されて修正されるまで、年に2回正しく表示されないため、最も多く使用します) 夏時間 の変更を処理します。また、シングルユーザーシステムで管理可能な欠点に対処する必要があります。

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

4
a CVn

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

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

2
user423645

私はWindows 10をデュアルブートしてosをリミックスしており、単純にWindowsのガイドのみに従うだけで、どちらの場合も機能します。コマンドラインを使用してスクリプトを追加しました

0
Edwin Correa