7.5. システムクロックの設定

本節ではシステムサービス systemd-timedated の設定方法について示します。 このサービスはシステムクロックとタイムゾーンの設定を行うものです。

ハードウェアクロックが UTC に設定されているかどうか忘れた場合は hwclock --localtime --show を実行すれば確認できます。 このコマンドにより、ハードウェアクロックに基づいた現在時刻が表示されます。 その時刻が手元の時計と同じ時刻であれば、ローカル時刻として設定されているわけです。 一方それがローカル時刻でなかった場合は、おそらくは UTC に設定されているからでしょう。 hwclock によって示された時刻からタイムゾーンに応じた一定時間を加減してみてください。 例えばタイムゾーンが MST であった場合、これは GMT -0700 なので、7時間を加えればローカル時刻となります。

systemd-timedated コマンドは /etc/adjtime ファイルを読み込みます。 そしてこのファイルの設定内容に応じて、システムクロックを UTC かあるいはローカル時刻に設定します。

ハードウェアクロックをローカル時刻に設定する場合は、以下の内容により /etc/adjtime ファイルを生成します。

cat > /etc/adjtime << "EOF"
0.0 0 0.0
0
LOCAL
EOF

起動時に /etc/adjtime ファイルが存在しなかった場合、ハードウェアクロックは UTC に設定されているものとして systemd-timedated が判断し、このファイルを調整します。

timedatectl ユーティリティーを用いる方法もあります。 これを使って systemd-timedated に対し、ハードウェアクロックが UTC かローカル時刻かを設定することができます。

timedatectl set-local-rtc 1

timedatectl コマンドを用いれば、システム時刻やタイムゾーンを変更することもできます。

システム時刻を変更するには以下を実行します。

timedatectl set-time YYYY-MM-DD HH:MM:SS

ハードウェアクロックも同様に設定することができます。

タイムゾーンを変更するには以下を実行します。

timedatectl set-timezone TIMEZONE

利用可能なタイムゾーンの一覧は以下を実行して確認できます。

timedatectl list-timezones
[注記]

注記

timedatectl コマンドはあくまで systemd により起動されたシステムにおいて利用できる点に注意してください。

7.5.1. ネットワークによる時刻同期

systemd のバージョン 213 からは systemd-timesyncd というデーモンが提供されています。 これはシステム時刻とリモートの NTP サーバーの時刻同期を行うものです。

このデーモンは、NTP デーモンとして充実したものではありません。 NTP デーモンに代わるものと位置づけられるものではなく、SNTP プロトコルのクライアントのみの実装であり、簡単なタスクの処理やリソースが限られているシステム上にて用いられます。

systemd のバージョン 216 からはデフォルトで systemd-timesyncd デーモンが用いられます。 これを無効にしたい場合は以下を実行します。

systemctl disable systemd-timesyncd

systemd-timesyncd が利用する NTP サーバーを変更するには /etc/systemd/timesyncd.conf ファイルを用います。

システムクロックがローカル時刻に設定されている場合、systemd-timesyncd はハードウェアクロックを更新しない点に注意してください。