【Linux】ハードウェア時刻とシステム時刻

Linux

どーも!marusukeです!

Linuxに存在する2種類の時刻「ハードウェア時刻」と「システム時刻」についてです!

ハードウェア時刻とシステム時刻について

Linux には ハードウェア時刻(RTC: Real Time Clock)システム時刻 の2種類の時刻が存在します
これらは別々に管理されており、適切に同期を取ることで時刻のズレを防ぎます

1. ハードウェア時刻(RTC: Real Time Clock)とは?

  • コンピュータのマザーボード上の時計(BIOS/UEFI 内部の時計)
  • 電源を切っても維持される(ボタン電池によって動作)
  • OS が起動する前に時刻を保持し、システム起動時にシステム時刻へコピーされる

ハードウェア時刻の確認

hwclock --show

出力例

2025-02-06 12:34:56.123456+0900

hwclock コマンドでハードウェア時刻を確認できる

2. システム時刻とは?

  • OS が動作している間に使用される時刻
  • カーネルが管理する時刻(メモリ上で保持)
  • OS 起動時に ハードウェア時刻を元に設定される
  • date コマンドで確認・変更可能

システム時刻の確認

date

出力例

Thu Feb  6 12:34:56 JST 2025

→ システム時刻を表示

dateコマンドに関する記事は以下です

3. システム時刻とハードウェア時刻の同期

ハードウェア時刻をシステム時刻に合わせる

sudo hwclock --hctosys

hwclock (--hctosys: Hardware Clock To System Clock) により、ハードウェア時刻をシステム時刻に反映します

システム時刻をハードウェア時刻に合わせる

sudo hwclock --systohc

hwclock (--systohc: System Clock To Hardware Clock) により、システム時刻をハードウェア時刻に保存します

4. システム時刻の変更

手動でシステム時刻を変更

sudo date -s "2025-02-06 12:34:56"

→ システム時刻を 2025-02-06 12:34:56 に変更します

変更後、ハードウェア時刻にも反映

sudo hwclock --systohc

→ システム時刻をハードウェア時刻に保存します

5. timedatectl を使った時刻管理

timedatectl は、システム時刻やハードウェア時刻を管理するためのコマンドです
NTP(Network Time Protocol)を使用した時刻同期も設定できます

時刻設定の確認

timedatectl

出力例

               Local time: Thu 2025-02-06 12:34:56 JST
           Universal time: Thu 2025-02-06 03:34:56 UTC
                 RTC time: Thu 2025-02-06 03:34:56
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active

Local time(システム時刻)と RTC time(ハードウェア時刻)を確認することができます

タイムゾーンの変更

sudo timedatectl set-timezone Asia/Tokyo

→ タイムゾーンを Asia/Tokyo(日本時間)に設定します

NTP による時刻同期を有効化

sudo timedatectl set-ntp true

→ インターネット経由で自動的に正確な時刻を取得します


6. ハードウェア時刻の UTC と ローカル時刻設定

Linux では通常、ハードウェア時刻を UTC(協定世界時)で管理し、タイムゾーン設定によってローカル時刻を表示します
しかし、Windows とのデュアルブート環境ではハードウェア時刻がローカルタイムになっていることがあり、時刻ズレの原因になります

ハードウェア時刻を UTC に設定

sudo timedatectl set-local-rtc 0

推奨設定(Linux では通常 UTC を使用)

ハードウェア時刻を ローカルタイム に設定(Windows 互換)

sudo timedatectl set-local-rtc 1

Windows とのデュアルブート時に推奨(ただし、NTP との併用は非推奨)

まとめ

時刻の種類説明
ハードウェア時刻(RTC)マザーボードの時計(電源オフでも保持)
システム時刻OS が動作中に使用する時刻(起動時にRTCを読み込む)
コマンド説明
dateシステム時刻の表示・変更
hwclockハードウェア時刻の表示・変更
timedatectlシステム・ハードウェア時刻の管理(systemdを利用)

適切に hwclocktimedatectl を活用し、時刻のズレを防ぐことが重要です

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました