Linuxシステムにおける「時刻の正確さ」は、ログの整合性やスケジュールタスクの実行などに大きな影響を与える重要な要素です。その中でも、「ハードウェアクロック(RTC:Real Time Clock)」は、OSのシャットダウン後も時刻を保持する役割を担っています。この記事では、Linuxでこのハードウェアクロックを表示・設定・同期するために使用される hwclock
コマンドの基本的な使い方から、時刻の読み書き、トラブル対策までを詳しく解説します。システム管理者はもちろん、Linuxを学ぶすべての方におすすめの内容です。
hwclockとは何か?
hwclock
は、Linuxシステムでハードウェアクロックを表示したり、設定したりするためのコマンドです。ハードウェアクロックは、コンピューターのマザーボード上に存在する独立した時計で、システムがオフの状態でも内蔵バッテリーによって時刻が維持されます。
一方、OSが起動してから使用される「システムクロック(System Clock)」とは異なり、hwclock
はBIOSレベルの時刻操作に関わります。
hwclock
は通常、以下のような場面で使用されます。
- BIOSレベルでの時刻の確認
- システムクロックとハードウェアクロックの時刻同期
- 時刻ずれの調整や確認
ハードウェアクロックを表示する
ハードウェアクロックの現在時刻を確認するには、以下のコマンドを使用します。
sudo hwclock --show
または短縮形で:
sudo hwclock -r
出力例:
2025年04月06日 12時34分56秒 -0.123456 秒
この出力から、現在のハードウェアクロックの日時がわかります。-0.123456 秒
というのは、システムクロックとの差分です。
システムクロックとハードウェアクロックの違い
Linuxには2種類の時刻管理システムがあります。
- システムクロック(ソフトウェアクロック)
OS起動中に使用される内部時計で、NTPなどによって同期されます。 - ハードウェアクロック(RTC)
BIOSが保持しており、マシンの電源がオフでも時刻を保持。
OSは起動時にハードウェアクロックの時刻を読み込み、システムクロックに反映させます。その後、システムクロックがOS内での基準時刻として使用されます。
ハードウェアクロックの設定方法
ハードウェアクロックの時刻を手動で設定したい場合は、以下のように入力します。
sudo hwclock --set --date="2025-04-06 15:30:00"
このコマンドは、ハードウェアクロックを指定した日時に更新します。--date
オプションで日時を指定し、形式は "YYYY-MM-DD HH:MM:SS"
が基本です。
システムクロックとの同期操作
ハードウェアクロック → システムクロックへ反映
sudo hwclock --hctosys
--hctosys
は「Hardware Clock To System Clock」の略です。このコマンドは、ハードウェアクロックの時刻をシステムクロックにコピーします。
システムクロック → ハードウェアクロックへ反映
sudo hwclock --systohc
--systohc
は「System Clock To Hardware Clock」の略です。これは、OSのシステムクロックを現在の正確な時刻として、ハードウェアクロックに反映させる操作です。NTPで時刻を同期した後に使用されることが多いです。
ローカルタイムとUTCの設定
Linuxのディストリビューションでは、ハードウェアクロックをUTCとして扱うのが一般的ですが、Windowsとのデュアルブートなどの事情によりローカルタイムで管理することもあります。
現在の設定を確認するには:
timedatectl
出力例:
RTC in local TZ: no
UTCで管理されていることがわかります。
設定を変更するには、以下のようにします:
sudo timedatectl set-local-rtc 1
ローカルタイムとして扱いたい場合は 1
を、UTCとして扱う場合は 0
を指定します。
hwclockでよくあるトラブルと対策
Q1. hwclock: Cannot access the Hardware Clock via any known method.
このエラーは、仮想マシンやハードウェアクロックのアクセス権がない環境で発生します。次の対処が有効です。
sudo
を付けて実行しているか確認する- 仮想環境(VirtualBoxなど)では、RTCが有効になっているか確認
/dev/rtc
へのアクセス権をチェック
Q2. ハードウェアクロックとシステムクロックの時刻差が大きい
この場合、以下のコマンドで同期を取ります。
sudo hwclock --systohc
また、NTPを使用してシステムクロック自体を正確に保つ設定もおすすめです。
hwclockを使いこなすポイントまとめ
hwclock -r
で現在のハードウェアクロックを確認--hctosys
と--systohc
を状況に応じて使い分ける--set
で手動調整も可能- ローカルタイムとUTCの扱いは用途に応じて調整
- 仮想環境では注意が必要
hwclock
はシンプルながら、システム全体の時刻管理において非常に重要な役割を持っています。定期的な確認や、NTPとの併用で、常に正確な時刻を保ちましょう。