本節ではシステムサービス 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 コマンドは chroot 環境内では動作しない点に注意してください。 systemd を使って LFS システムを起動したときになって、初めて利用できるものです。
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 はハードウェアクロックを更新しない点に注意してください。