はじめに
LinuxとWindowsをデュアルブートにしたとき、多くの場合で、時間がずれます。
これは、PC本体の時計(BIOSで「システム時間」として表示される)がWindowsではLocal Time、Linuxでは 協定世界時(UTC)に設定されているために起こります。
これを直します。
内容としては一般的に起こる問題で、Let'sNoteであるかどうかは関係ありません。
なにもしないと、どうなっているのか

Windows11を立ち上げて、「今すぐ同期」でタイムサーバーと同期した後の時間です。
2023年11月4日 8:12 です。
これは、Local Time(日本)です。
Local Time(日本)は、「UTC + 09:00」で計算されてます。
(画像のタイムゾーンのところ参照)

立ち上げ直後は、BIOSで確認したシステム時間8:13+9時間+1分(起動にかかった時間)の
17:14が表示されました。
これは、Linuxでは、BIOSで確認した「システム時間」を協定世界時(UTC)として扱っているためです。

その後すぐに、ネットで時間合わせが行われ、
8:14とLocal Time(日本)になりました。
同時に、BIOSで表示されるシステム時間を、協定世界時(UTC)=Local Time(日本)-9時間の23:14に書き換えていると思われます。

Windows11の時間は、システム時間をLocal Timeとして扱っているので、
2023年11月3日 23:18
協定世界時(UTC)に置き換わってしまいます。
ここで、「今すぐ同期」をクリックすれば、
どうやって直すか
Windows側を直す方法と、Linux側を直す方法がありますが、Linux側を直す方が簡単なので、そちらを紹介します。
Linuxを立ち上げて、ターミナルで「hwclock」コマンドで直します。
"hwclock"コマンドは、Ubuntuでは使えません。その場合は、"timedatectl"コマンドを使います。
こちらにまとめましたので、あわせてどうぞ。

まずは、現状を確認しましょう。
ターミナルで、
sudo hwclock -v
と打ち込み、パスワードを入力します。
「Assuming hardware clock is kept in UTC time.」(画像中段赤枠)から、ハードウェアクロック=BIOSで確認できる「システム時間」をUTC Timeに保つとなっていることが分かります。

次に、Local Timeに設定を変更するため、
sudo hwclock -v -w -l
と打ち込みます。
「Assuming hardware clock is kept in local time.」(画像中段赤枠)と表示され、設定が変更されたことが確認できました。
hwclockコマンドの後ろのオプションは、
-v は --verboseでもよくて、display more details という意味。
-wは --systohcでもよくて、set the RTC from the system time という意味
-lは --localtimeでもよくて、the RTC timescale is Local という意味
という意味です。
ちなみにもとに戻すには、
sudo hwclock -v -w -u
-uは --utcでもよくて、the RTC timescale is UTC という意味
でOKです。
一度設定してしまえばOKです。
コメント