19.18. ハードウェアクロック更新の設定
リアルタイムクロック (RTC) とも呼ばれるハードウェアクロックの更新には、システムクロックが使用できます。本セクションでは、これを実行する 3 つのアプローチを説明します。
- 即時ワンタイム更新
ハードウェアクロックの即時ワンタイム更新を行うには、root で以下のコマンドを実行します。
~]# hwclock --systohc- ブートごとの更新
ntpdate 同期ユーティリティー実行後にブートごとに毎回ハードウェアクロックが更新するようにするには、以下を実行します。
以下の行を
/etc/sysconfig/ntpdateファイルに追加します。SYNC_HWCLOCK=yesntpdateサービスを root で有効にします。~]# systemctl enable ntpdate.servicentpdateサービスは/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)