どーも!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を利用) |
適切に hwclock
や timedatectl
を活用し、時刻のズレを防ぐことが重要です
以上です!
ここまで読んでいただきありがとうございました!
コメント