Ubuntu 22.04でWindows 11とのデュアルブート時に時計がずれないようにする方法

Ubuntu 22.04でWindows 11とのデュアルブート時に時計がずれないようにする方法

2024年1月23日
  • この投稿はUbuntu 22.04の内容であり、他のバージョンでは異なる場合があります。

1つのパソコンで[Windows]と[Ubuntu]の両方を使っている場合(デュアルブートなど)、表示される時刻に「ズレ」が生じることがあります。ズレが9時間の場合、これは両方のOSで時刻の取り扱いに違いがあることが原因です。

なぜ9時間ずれるのか

時刻に9時間のズレが生じるのは時差によるもので、日本の時差が協定世界時(UTC)から+9時間だからです。

パソコンは本体に時刻の情報(ハードウェアクロック)を持っており、その時刻をWindowsは「ローカル時刻(日本標準時/JST)」とみなしますが、UbuntuをはじめとしたLinuxでは「協定世界時/UTC」とみなします。時刻はインターネット上から自動的に同期してしまうため、WindowsUbuntuの両方を使っていると同期のタイミングによって「時計がずれる」と言うことが起こりえます。

Windowsで「起動時に時刻を同期する」としても良いですが、本体の時刻を「ローカル時刻とUTCのどちらとみなすか」を揃えることもできるので、今回はUbuntuを「ローカル時刻である」とみなすよう変更してみました。

Windowsの方を「UTCとみなす」こともできますが、レジストリを編集する必要があるためUbuntuでコマンドを実行したほうが簡単でしょう。

ローカル時刻とみなす手順

現在の状態を表示する

Ubuntuの端末より以下のコマンドを実行し現在の状態を表示します。

sudo hwclock --verbose
「sudo: hwclock: コマンドが見つかりません」とエラーが表示される場合はutil-linux-extraをインストールします。

sudo apt-get install util-linux-extra

実行結果にハードウェアの時刻は UTC ですハードウェアの時刻が UTC に設定されているものと仮定します。などが含まれていればハードウェアクロック=UTCとみなしています。

hwclock from util-linux 2.37.2
System Time: 1775085066.679958
Trying to open: /dev/rtc0
Using the rtc interface to the clock.
ハードウェアの時刻が UTC に設定されているものと仮定します。
...

ハードウェアクロック=UTCであればハードウェアクロック=ローカル時刻に変更します。

ハードウェアクロック=ローカル時刻に変更する

Ubuntuの端末より以下のコマンドを実行しハードウェアクロック=ローカル時刻にします。

sudo hwclock --verbose --systohc --localtime
元に戻す場合は以下のコマンドを実行します。

sudo hwclock --verbose --systohc --utc

実行結果にハードウェアの時刻は ローカル時刻 ですハードウェアの時刻が ローカル時刻 に設定されているものと仮定します。などが含まれていればハードウェアクロック=ローカル時刻とみなしています。

hwclock from util-linux 2.37.2
System Time: 1775085219.723201
Trying to open: /dev/rtc0
Using the rtc interface to the clock.
ハードウェアの時刻が ローカル時刻 に設定されているものと仮定します。
...

ローカル時刻とみなすやり方は以上です。

カテゴリー