日時の設定は、インストール時またはArch Linuxの最小限インストールの完了直後に行うべき作業のひとつです。
時刻の設定にあたっては、Arch LinuxなどのOSではシステムクロックとハードウェアクロックという2種類の時計を使われていることが前提知識となります。
システムクロックは、OSが動作している間だけ時を刻みます。OSがブートするときに、ハードウェアクロックの日時をもとにシステムクロックが設定され、OSがシャットダウンするときにはシステムクロックの日時がハードウェアクロックに設定されます。ハードウェアクロックは、小型電池などを電源にして、コンピューターの電源が落ちている間も時を刻みます。
システムクロックは、NTP(Net Time Protocol)によってインターネット上のサーバーと同期することで、日時を正確に保つことができます。
現在の日時の設定は、timedatectlコマンドで確認できます。
[root@archlinux ~]# timedatectl
Local time: Wed 2018-10-24 08:17:31 UTC
Universal time: Wed 2018-10-24 08:17:31 UTC
RTC time: Wed 2018-10-24 08:17:32
Time zone: UTC (UTC, +0000)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
最小限インストール直後では、タイムゾーンが設定されていないため、日本時間と比べて9時間前にあたるUTC(協定世界時)の日時が表示されます。dateコマンドなどでも、UTCの日時が表示されます。
[root@archlinux ~]# date
Wed Oct 24 08:17:50 UTC 2018
また、ハードウェアクロック(RTC: Real Time Clock)をローカルタイムにするかUTCにするかを設定するRTC in local TZは、通常はnoとなります。この設定は変更する必要はありません。Arch Linuxを含めたLinuxではハードウェアクロックはUTCに設定した方がトラブルが少ないとされています。詳細は、systemd環境におけるハードウェアクロック調整などを参照して下さい。
タイムゾーンの設定
timedatectlコマンドで、タイムゾーンを設定できます。
設定できるタイムゾーンの表示
timedatectl list-timezonesコマンドで設定できるタイムゾーンの一覧が表示されます。次のコマンドで、tokyoのタイムゾーンを表示できます。
[root@archlinux ~]# timedatectl list-timezones | grep -i tokyo
Asia/Tokyo
タイムゾーンの設定
timedatectl set-timezoneコマンドでタイムゾーンを設定できます。次のコマンドで、タイムゾーンをAsia/Tokyoに設定します。
[root@archlinux ~]# timedatectl set-timezone Asia/Tokyo
設定後、日時の設定を確認します。
[root@archlinux ~]# timedatectl
Local time: Wed 2018-10-24 17:19:15 JST
Universal time: Wed 2018-10-24 08:19:15 UTC
RTC time: Wed 2018-10-24 08:19:16
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
Local timeがUniversal timeの9時間後になります。dateコマンドなどでは、Local timeが出力されます。
[root@archlinux ~]# date
Wed Oct 24 17:19:24 JST 2018
NTPサーバーとの同期の設定
OSがインターネットに接続している場合、次のコマンドでNTPサーバーとの同期を有効にできます。
[root@archlinux ~]# timedatectl set-ntp true
設定後、日時の設定を確認します。
[root@archlinux ~]# timedatectl
Local time: Wed 2018-10-24 17:21:06 JST
Universal time: Wed 2018-10-24 08:21:06 UTC
RTC time: Wed 2018-10-24 08:21:07
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
System clock synchronizedがyesとなり、NTP serviceがactiveとなります。
NTP serviceがactiveとなるまでには少し時間がかかります。inactiveと表示される場合は少し時間が経ってから再度timedatectlコマンドを実行してください。
インターネットに接続していない場合、NTPサーバーとの同期は有効にできません。先に、ネットワーク接続を設定してください。
また、NTPサーバーの設定などはネットワークの設定と一緒に行います。
参考資料
- 時刻 - ArchWiki
- systemd-timesyncd - ArchWiki
- ロケール - ArchWiki
- インストールガイド - ArchWiki
- 一般的な推奨事項 - ArchWiki
- systemd環境におけるハードウェアクロック調整 - Qiita
まとめ
今回実行したコマンドをまとめると、次のようになります。
timedatectl
timedatectl list-timezones
timedatectl set-timezone Asia/Tokyo
timedatectl set-ntp true