19.18. ハードウェアクロック更新の設定
リアルタイムクロック (RTC) とも呼ばれるハードウェアクロックの更新には、システムクロックが使用できます。本セクションでは、これを実行する 3 つのアプローチを説明します。
- 即時ワンタイム更新
ハードウェアクロックの即時ワンタイム更新を行うには、root で以下のコマンドを実行します。
~]# hwclock --systohc
- ブートごとの更新
ntpdate 同期ユーティリティー実行後にブートごとに毎回ハードウェアクロックが更新するようにするには、以下を実行します。
以下の行を
/etc/sysconfig/ntpdate
ファイルに追加します。SYNC_HWCLOCK=yes
ntpdate
サービスを root で有効にします。~]# systemctl enable ntpdate.service
ntpdate
サービスは/etc/ntp/step-tickers
ファイルで定義されている NTP サーバーを使用することに留意してください。注記仮想マシンの場合は、仮想マシン自体の次回起動時ではなく、ホストマシンの次回起動時にハードウェアクロックが更新されます。
- NTP から更新
ntpd
またはchronyd
サービスを使うと、システムクロックが更新されるたびにハードウェアクロックを更新することができます。root として
ntpd
サービスを起動します。~]# systemctl start ntpd.service
この動作を次回ブート後にも維持するには、サービスがブート時に自動的に起動するようにします。
~]# systemctl enable ntpd.service
または
root で
chronyd
サービスを起動します。~]# systemctl start chronyd.service
この動作を次回ブート後にも維持するには、サービスがブート時に自動的に起動するようにします。
~]# systemctl enable chronyd.service
その結果、
ntpd
またはchronyd
がシステムクロックを同期するたびに、カーネルがハードウェアクロックを 11 分ごとに自動更新します。警告上記の 11 分モードは常に有効になっているわけではないので、このアプローチが常に機能するとは限りません。このため、ハードウェアクロックはシステムクロックの更新時に更新されるとは限りません。
ソフトウェアクロックがハードウェアクロックに同期しているかを確認するには、
root
としてntpdc -c kerninfo
またはntptime
コマンドを使用します。~]# ntpdc -c kerninfo
以下のような結果になります。
pll offset: 0 s pll frequency: 0.000 ppm maximum error: 8.0185 s estimated error: 0 s
status: 2001 pll nano
pll time constant: 6 precision: 1e-09 s frequency tolerance: 500 ppmまたは
~]# ntptime
以下のような結果になります。
ntp_gettime() returns code 0 (OK) time dcba5798.c3dfe2e0 Mon, May 8 2017 11:34:00.765, (.765135199), maximum error 8010000 us, estimated error 0 us, TAI offset 0 ntp_adjtime() returns code 0 (OK) modes 0x0 (), offset 0.000 us, frequency 0.000 ppm, interval 1 s, maximum error 8010000 us, estimated error 0 us, status 0x2001 (PLL,NANO), time constant 6, precision 0.001 us, tolerance 500 ppm,
ハードウェアクロックがシステムクロックに同期しているかどうかを確認するには、出力の status 行を確認します。その行に
unsync
またはUNSYNC
という単語が含まれている場合は、ハードウェアクロックがシステムクロックと同期していません。ハードウェアクロックがシステムクロックに同期しています。
status 0x2001 (PLL,NANO)
ハードウェアクロックがシステムクロックに同期していません。
status 0x41 (PLL,UNSYNC)