ハードウェアの日付(日時)変更(hwclock)
ハードウェアの日付(日時)変更するには「hwclock」コマンド!
linuxでハードウェアの日付(日時)変更を行うには「hwclock」コマンドを使用する
個人で古いPCを使っていると、1週間使用せず放置しておくだけでバッテリーの充電量がゼロになります。そのまま電源ONしても立ち上がらず、仕方なくコンセント繋いで数十秒後に電源ON。linuxにログインして「date」コマンドすると日時が違っている。こんな経験ありませんか。
linuxで日付変更(日時)するには「fwclock」コマンドや「date」コマンドを使って行います。
「fwclockって何?
Linux上には時計が2種類あります。1つはシステム日付(date)。システムには欠かせない時計でいわゆるカーネル内に存在してlinuxが起動している間だけ動いています。もう1つはハードクロックと言われる「hwclock」で、この時計はlinuxが停止中でも稼動してます。linux上で稼動するシステムは全てシステム日付(date)を基準で動作しますが、linuxが停止するとシステム日付も停止してしまうのでこのシステム日付とは独立したハードクロックが必要となります。ハードクロックはCPUを使わないためlinux停止中でも電源供給が続く限り動き続けるのですが、バッテリーが0(ゼロ)になると当然動作しません。PCを立ち上げるとシステム日付がハードクロックと同期を取ろうとしますが、ハードクロック自体の時間が違うためシステム日付(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)とハードクロックとの同期合わせを行い、システム日時をハードクロック日時に合わせます。コマンドは「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 ~]#
日時の同期がとれました。
本来であればハードクロックが違ってなければシステム日付(date)の変更は不要な作業です。システム日時を変更するような、例えば過去日/未来日でテストするといった特殊な作業を行わない限りこの操作が発生することなどありえません。なぜなら、linux起動時にハードクロックと同期を取っているからです。