はじめに

WindowsをLinuxやmacOS(bootcampでない)とデュアルブートしていると、OSの時計表示がおかしくなってしまうことがあります。

どうしておかしくなるのか

Windowsは内部でローカルの時間を利用しています。日本であればUTC+09:00です。電源を切るとき、BIOSにこの値を保存します。これをハードウェアクロック、RTC、CMOSクロックと呼びます。BIOSは搭載された電池によって、この値を保持・更新し、次回Windowsが起動する際にWindowsに渡します。しかし、LinuxやmacOSでは、UTCそのものでハードウェアクロックを管理し、表示する際にはタイムゾーンに合わせた値を計算します。このため、例えば、WindowsがUTC+09:00としてシャットダウン時に保存した値をLinuxはUTCと解釈してしまうのです。逆もまた然りです。このため、どちらかの方法に統一する必要があります。今回はWindowsのハードウェアクロックをUTCにあわせます。

WindowsをUTCに

コマンドプロンプトを開いて以下のコマンドを実行します。このコマンドはレジストリを変更し、WindowsのハードウェアクロックをUTCに合わせます。コマンドを実行する際管理者権限が必要です。

1# set UTC
2reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

戻す際は、下のコマンドを実行してください。

1# unset
2reg delete HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /f

このあと時刻表示がおかしくなっているOSをNTPサーバーと同期して正しい時刻に修正すれば、完了です。