概要

Linux Mint とWindows 7 のデュアルブート環境でPCを使っている。
2つのOSの中で、Windows 側の時刻だけが9時間遅れている。
どうやら、システム時計の時刻をどう見るか、というのがOSによって違うみたい。
Linux の場合は、システム時計を協定世界時と見なしている。一方、Windows の方は、システム時計を地域の時刻と見なすみたい。これが原因で、ずれが起こっている模様。
このずれを無くすために、Linux Mint の設定を変えた。つまり、システム時計を協定世界時とみなすのではなく、地域の時刻と見なすようにした。
こうすることで、Linux Mint, Windows, システム時計の3つ全てが地域(日本)の時刻になり、ずれが無くなった。

詳細

環境

・以下のOSのデュアルブート
– Linux Mint 18.2 ‘Sonya’ “MATE 64-Bit”
– Windows 7 Professional with SP1 32ビット版
・機種:Lenovo ThinkPad X220

症状

2つのOSの中で、Windows 側の時刻だけが9時間遅れている。
Windows の方で時刻を修正すると、今度はLinux Mint 上の時刻がずれてしまう。で、Linux Mint で時刻を修正すると、またWindows 上の時刻が9時間遅れてしまう。このとき、BIOSで見えるシステム時刻は、協定世界時(UTC)になっている。
ずれに気づく度にいちいち時刻を修正してると、この繰り返しが起こる。

原因

どうやら、システム時計(Real Time Clock: RTC)の時刻をどう見るか、というのがOSによって違うみたい。
Linux の場合は、RTCを協定世界時(UTC)と見なしている。つまり、Linux Mint 上で「日本」に設定していると、RTC+9時間 という時刻が常に表示されている。
一方、Windows の方は、RTCを地域の時刻(ローカルタイム)と見なすみたい。つまり、システム時計とWindows 上の時刻は常に同じでなければならない。
このような仕組みが原因で、互いに時刻の認識のずれが起こっている模様。

改善した方法

Windows 上で、RTCをどう見るかに関しての設定を変更するのは難しそう。
なので、Linux Mint 側の設定を、Windows と同様の動きに変更してみた。つまり、RTCをローカルタイムだとMint に認識せるようにした。

コマンド

現在の設定を確認

cat /etc/adjtime

RTCをローカルタイムだと認識させるように設定を変更

sudo timedatectl set-local-rtc 1

設定が変更されたことを確認

cat /etc/adjtime

—> LOCAL と表示されていればOK
この後、Mint,Win,BIOS上での時刻が、どれも同じになった。どれもUTC+9時間という日本時間になった

参考にしたウェブページ

https://forums.linuxmint.com/viewtopic.php?t=226779
http://park12.wakwak.com/~eslab/pcmemo/clock/clock3.html

備考

Windows では、OS上の時刻を変更すると、変更後の時刻が即座にRTCに反映(同期)される。
一方Linux Mint の方は、インストールだとかの特定のタイミングでないと、RTCには反映(同期)されないっぽい。