時刻合わせと言えば、ntpdateだと相場が決まっています。
しかし、Ubuntuにおいては違います。
timedatectlを利用することが、正解なのです。
本記事の内容
- ntpdateのインストールは不要
- timedatectlによる時刻合わせ(時刻同期)
- systemd-timesyncdの設定
- systemd-timesyncdの起動
それでは、上記に沿って解説していきます。
ntpdateのインストールは不要
Ubuntunは、デフォルトでntpdateコマンドが使えません。
試しにコマンドを実行すると、以下のように言われます。
$ ntpdate コマンド 'ntpdate' が見つかりません。次の方法でインストールできます: apt install ntpdate # version 1:4.2.8p12+dfsg-3ubuntu4.20.04.1, or apt install ntpsec-ntpdate # version 1.1.8+dfsg1-4build1 Ask your administrator to install one of them.
このことは、Ubuntu 18.04以降であれば確実です。
ちなみに、検証中のOSは以下となります。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"
では、インストールをおススメされたパッケージを確認してみましょう。
$ sudo apt show ntpdate Package: ntpdate Version: 1:4.2.8p12+dfsg-3ubuntu4.20.04.1 Priority: optional Section: universe/net Source: ntp Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Debian NTP Team <ntp@packages.debian.org> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 178 kB Depends: netbase, libc6 (>= 2.17), libssl1.1 (>= 1.1.0) Homepage: http://support.ntp.org/ Download-Size: 48.8 kB APT-Sources: http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages Description: client for setting system time from NTP servers (deprecated) Network Time Protocol 略称 NTP は、インターネット又はローカルのネットワークに 接続されたコンピュータと時刻を同期するか、GPS、DCF-77、NIST 又は同様の時刻信号 を解釈できる正確なハードウェア受信機に従うことにより、コンピュータの時刻を 正確に保つために利用できます。 . ntpdate is deprecated. Please use sntp instead for manual or scripted NTP queries/syncs.
インストール対象のパッケージは、Ubuntu公式のリポジトリに登録されています。
じゃあ、インストールしても問題ありませんね。
ということで、インストールをするのが普通です。
でも、ntpdateをインストールする必要がありません。
インストールする必要があれば、デフォルトでインストール済みのはずです。
では、自動の時刻合わせ(時刻同期)をどうすればよいのでしょうか?
次に、そのための方法を説明します。
timedatectlによる時刻合わせ(時刻同期)
Ubuntuでは、デフォルトでtimedatectlコマンドが利用可能です。
timedatectlの機能は、時刻の表示・設定となります。
このtimedatectlを利用して、時刻合わせが可能なのです。
正確には、timedatectlとsystemd-timesyncdが連携しています。
systemd-timesyncdの機能を一言で表現すると、 ネットワーク時刻同期となります。
そして、timedatectlがsystemd-timesyncdを管理しているイメージです。
そのイメージは、timedatectlコマンドの実行結果からも掴めると思います。
$ timedatectl Local time: 日 2021-06-20 16:17:23 JST Universal time: 日 2021-06-20 07:17:23 UTC RTC time: 日 2021-06-20 07:17:22 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: no NTP service: inactive RTC in local TZ: no
「NTP service: inactive」
ネットワーク時刻同期が、機能していないということです。
このときのsystemd-timesyncdの状況は、以下。
$ sudo systemctl status systemd-timesyncd.service ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: inactive (dead) Docs: man:systemd-timesyncd.service(8)
これより、timedatectlとsystemd-timesyncdが一蓮托生だとわかります。
以上、timedatectlによる時刻合わせ(時刻同期)について説明しました。
次は、systemd-timesyncdの設定を行います。
systemd-timesyncdの設定
systemd-timesyncdの設定といっても、そんな面倒なことではありません。
単純に、時刻を見に行くNTPサーバーを登録するだけです。
systemd-timesyncdの設定ファイルは、以下のパスとなります。
/etc/systemd/timesyncd.conf
初期状態では、以下の内容です。
# This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # Entries in this file show the compile time defaults. # You can change settings by editing this file. # Defaults can be restored by simply deleting this file. # # See timesyncd.conf(5) for details. [Time] #NTP= #FallbackNTP=ntp.ubuntu.com #RootDistanceMaxSec=5 #PollIntervalMinSec=32 #PollIntervalMaxSec=2048
1か所だけ変更します。
NTP=ntp.nict.jp
日本でNTPサーバーと言えば、 ntp.nict.jpでしょう。
もちろん、他のNTPサーバーを設定しても構いません。
以上、systemd-timesyncdの設定の説明でした。
次は、systemd-timesyncdを起動していきます。
systemd-timesyncdの起動
timedatectlコマンドを使って、systemd-timesyncdを起動します。
$ sudo timedatectl set-ntp true
連携状況を確認しましょう。
$ timedatectl Local time: 日 2021-06-20 16:37:06 JST Universal time: 日 2021-06-20 07:37:06 UTC RTC time: 日 2021-06-20 07:37:07 Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no
「NTP service: active」
inactiveからactiveに変わりました。
では、systemd-timesyncdの状況も確認しましょう。
$ sudo systemctl status systemd-timesyncd.service ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2021-06-20 16:35:12 JST; 3min 54s ago Docs: man:systemd-timesyncd.service(8) Main PID: 8572 (systemd-timesyn) Status: "Initial synchronization to time server 133.243.238.243:123 (ntp.nict.jp)." Tasks: 2 (limit: 9513) Memory: 1.3M CGroup: /system.slice/systemd-timesyncd.service └─8572 /lib/systemd/systemd-timesyncd 6月 20 16:35:12 ubuntu-focal systemd[1]: Starting Network Time Synchronization... 6月 20 16:35:12 ubuntu-focal systemd[1]: Started Network Time Synchronization. 6月 20 16:35:12 ubuntu-focal systemd-timesyncd[8572]: Initial synchronization to time server 133.243.238.243:123 (ntp.nict.jp).
起動していることが確認できます。
NTPサーバーの設定も適切に反映しています。
Status: "Initial synchronization to time server 133.243.238.243:123 (ntp.nict.jp)."
以上、systemd-timesyncdの起動について説明しました。