ハードウェアの日付(日時)変更(hwclock)
ハードウェアの日付(日時)変更するには「hwclock」コマンド!
linuxでハードウェアの日付(日時)変更を行うには「hwclock」コマンドを使用する
個人で古いPCを使っていると、1週間使用せず放置しておくだけでバッテリーの充電量がゼロになります。コンセントに繋がずそのまま電源ONしても立ち上がらず、仕方なくコンセント繋いで電源ON。その後linuxにログインして「date」コマンドすると日時が違っている。こんな経験ありませんか。
linux上のシステム日付(date)が違っていたら、ハードウェア日付「hwclock」も違っているので、まずは、ハードウェア日付「fwclock」を変更します。
「hwclockって何?
Linux上には時計が2種類あります。1つはシステム日付(date)。システムには欠かせない時計でいわゆるカーネル内に存在してlinuxが起動している間だけ動いています。もう1つはハードクロックと言われる「hwclock」で、この時計はlinuxが停止中でも稼動してます。
linux上で稼動するシステムは全てシステム日付(date)を基準としますが、linuxが停止するとシステム日付も停止してしまいます。そのため、このシステム日付とは独立したハードクロックが必要となるのです。ハードクロックはCPUを使わないのでlinuxが停止中でも電源供給が続く限り動き続けるのです。しかしバッテリーが0(ゼロ)になると当然動作しません。PC電源をONすると、システム日付(date)はハードクロック(hwclock)と同期を取ります。この時ハードクロック(hwclock)自体の時間が違っているとシステム日付(date)も違ってしまうのです。
ハードクロックの設定方法
ハードクロックの設定には「hwclock」コマンドを使用します。そのまま「hwclock」と入力して実行するとハードクロックの日時が表示されます。変更するには「hwclock△--set△--date△"日△月△年△時間"」を入力します。日付変更はシステム権限で行って下さい。
[root@localhost ~]# hwclock
1980年01月04日 09時25分15秒 -0.491497 秒
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# hwclock --set --date "07 Mar 2020 15:34"
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# hwclock
2020年03月07日 15時34分09秒 -0.423442 秒
[root@localhost ~]#
ハードクロックの時間が変更されました。
システム日付との同期
システム日付(date)を正しい時間に戻すには、dateコマンドで変更するのでなく、ハードクロック(hwclock)と同期します。コマンドは「hwclock△--hctosys」で行います。最初にシステム日時を確認してから同期処理を行って、その後システム日時とハードクロック日時を確認してみます。
[root@localhost ~]# date
1980年 1月 4日 金曜日 09:26:32 JST
[root@localhost ~]#
[root@localhost ~]# hwclock --hctosys
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# date
2020年 3月 7日 土曜日 15:34:38 JST
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# hwclock
2020年03月07日 15時34分46秒 -0.892574 秒
[root@localhost ~]#
[root@localhost ~]#
日時の同期がとれました。
ハードクロック(hwclock)が違ってなければ、システム日付(date)の変更は不要な作業です。システム日時を変更するような、例えば過去日/未来日でテストするといった特殊な作業を行わない限りこの操作が発生することなどありえません。なぜなら、linuxを起動する度にハードクロックと同期を取っているからです。