hwclockコマンドでLinuxとWindowsの時刻のズレを修正する方法

WindowsマシンにDebianやUbuntuをインストールしてデュアルブートにした場合、時刻に9時間のズレが生じる。これは、Windows側のシステム時刻(OSが管理している時刻)がLocal Time(ローカル時)、Linux側がUTC(協定世界時)に設定されているために起こる。

これを修正するには、どちらかのシステム時刻の設定方針に合わせなければならないのだが、Windows側の設定をLinux側に合わせようとすると、Winodws側のレジストリを修正しなければならなくなるので、設定変更はLinux側で行う方が簡単だ。

以前は、Linuxのディストロ毎にシステム時刻の変更方法に微妙な違いがあったが、最近のLinuxディストロでは、hwclockコマンドによる設定変更にほぼ統一されつつある。

時刻の確認とUTCからLocal Timeへの切り替え

先ずは現在のハードウェアクロック(BIOSで設定される時計)の時刻とその設定内容(ローカル時かUTCかなど)を確認するため、ターミナル上で、次のようにコマンドを打ち込む。

$ sudo hwclock -D --show 

Linux Mint 18.2(Ubuntu 16.04 LTSベース)でのコマンド実行結果は次のとおり。

実行結果に「ハードウェアの時刻はUTCです」という文言があることからも分かるとおり、このPCのハードウェアクロックは、UTCに設定されている。

ということは、現在のシステム時刻は、ハードウェアクロックに協定世界時とローカル時の差をプラスしたものが表示されていることになる。

日本のローカル時は、協定世界時にプラス9時間されたものだから、現在のハードウェアクロックには、日本時間からマイナス9時間されたものが入っているということが、これで分かった。

そこで、ハードウェアクロックに現在のシステム時刻はローカル時だということを教えるために、次のコマンドを打ち込む。

$ sudo hwclock -D --systohc --localtime  

オプション –systohcは、set the SYStem time TO the Hardware Clockの略で、システム時刻を、ローカル時としてハードウェアクロックにセットしなさいと指示していることになる。

Local TimeからUTCへの切り替え

反対にローカル時からUTCへ戻したい場合は、次のようになる。

$ sudo hwclock -D --systohc --utc  

オプション -Dの意味とdateコマンドとの関係

オプション -D(又は–debug)は詳細情報の表示を指示している。例えば、-D オプションなしでこのコマンドを実行した場合は、dateコマンドを実行したときの情報とほぼ同じとなり、日時のみの表示となる。

$ sudo hwclock --show  

ただし、dateコマンドで表示されるのはシステム時刻であるのに対して、hwclockはその名のとおり、ハードウェアクロック(HardWare CLOCK)に設定されている時刻が表示されことになる。

また、hwclockコマンドには、オプション –systohcとは反対の働きを指示する、–hctosysというオプションもある。これは、set the Hardware Clock TO SYStem timeの略、つまり、ハードウェアクロックの時刻をシステム時刻としてセットしなさいという意味だ。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク