本当はサーバーを構築したらすぐに設定するべき項目でしたが忘れてました、ロケールや時刻合わせ。

今回やっていきたいと思いますだって日本人だし。

J A P A N !

ロケール(日本語)環境の設定

そもそもLANGとか、今何が設定されているのか。それを確認してみる。

pi@raspberrypi:~ $ sudo locale
LANG=en_GB.UTF-8
LANGUAGE=
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=

なんじゃこりゃ。enってことはEnglishつまりイギリスですかね。

まず、ここらへんを多分ja_JP.UTF-8みたいな値にしなきゃいけないじゃないかと。

というわけで、以下のコマンドをたたく。

pi@raspberrypi:~ $ sudo dpkg-reconfigure locales

すると以下のようなCUIなのにGUIのような画面が出るので、en_GB.UTF-8のところでSPACEキー押して「*」を消して、逆にja_JP.UTF-8のところでSPACEキー押して「*」を付ける感じだ。多分。

あとはTabキーで「OK」のところに移動してEnterキー押せばよいみたい。

そうするとDefault locale for the system environmentを聞かれる画面が出るので、分らんけどもカーソルキーでja_JP.UTF-8選んで再びTabキーで「OK」のところに移動してEnterキー押せばよいみたい。

そうするとコンソール画面に戻るんだけども、

:
Generating locales (this might take a while)...
  ja_JP.UTF-8... done
Generation complete.
pi@raspberrypi:~ $

みたいなメッセージが出て設定が完了?

一度TeraTermを終了して再度接続(これ重要!)してからlocaleを確認してみる。

pi@raspberrypi:~ $ sudo locale
LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

よし。そしてdateコマンド実行すると

pi@raspberrypi:~ $ date
2020年  6月 27日 土曜日 13:19:40 BST

日本語表記よ!・・・でもBSTになってるな。。。時刻もあってないし。。。

Raspbianの時刻合わせデーモン「systemd-timesyncd」

RaspbianはNTPでもChronyでもなくてsystemd-timesyncdを使って時刻を合わせるようです。

systemd-timesyncdってなんぞや?ってことで調べてみると

systemd-timesyncd はネットワークを介してシステム時刻を同期させるために追加されたデーモンです。SNTP クライアントが実装されています。chrony や NTP リファレンスサーバーなどの NTP 実装とは対照的に、timesyncd はクライアント側しか実装しておらず、完全な NTP の複雑性に悩むことなく、リモートサーバーに時刻を問い合わせてそれにローカルクロックを同期させることだけに焦点を置いています。NTP をネットワークのクライアントに提供したりローカルのハードウェアクロックに接続したいのでなければ、このシンプルな NTP クライアントだけでほとんどの場合は十二分に間に合います。デーモンは最小権限で動作し、networkd と紐付けられることでネットワーク接続が有効なときだけ同期を行います。Raspberry Pi や組み込みデバイスなどの RTC を載せてないシステムのために、新しい NTP の同期が取得される度にディスクに現在の時刻を保存し、それを使って起動時にシステム時刻を修正することができ、時刻が常に正しいわけではないときでも、それらのシステムで時刻がモノトニックに進むことを保証します。このデーモンを利用するには systemd のインストール時に新しいユーザーとグループ “systemd-timesync” を作る必要があります。

ってことで、要約すると自分自身は時刻合わせのサーバーとはなりえずクライアント機能のみ実装されているんでシンプルで軽いってことなのかな。

とりあえず、ntpdやchronyd、systemd-timesyncdが現在動いているのか確認してみた。

pi@raspberrypi:~ $ sudo systemctl status chronyd
Unit chronyd.service could not be found.

pi@raspberrypi:~ $ sudo systemctl status ntpd
Unit ntpd.service could not be found.

pi@raspberrypi:~ $ sudo systemctl status systemd-timesyncd
Warning: The unit file, source configuration file or drop-ins of systemd-timesyn
● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendo
  Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
           mqdisable-with-time-daemon.conf
   Active: active (running) since Sat 2020-06-27 07:05:51 BST; 6h ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 294 (systemd-timesyn)
   Status: "Synchronized to time server for the first time 194.0.5.123:123 (2.de
    Tasks: 2 (limit: 4915)
   Memory: 3.4M
   CGroup: /system.slice/systemd-timesyncd.service
           mq294 /lib/systemd/systemd-timesyncd

 6月 27 07:05:50 raspberrypi systemd[1]: Starting Network Time Synchronization..
 6月 27 07:05:51 raspberrypi systemd[1]: Started Network Time Synchronization.
 6月 27 07:06:33 raspberrypi systemd-timesyncd[294]: Synchronized to time server

systemd-timesyncdのみインストールされていて既に動いてるんだけど!ただしWarning出てるね。。。

Raspbianの時刻合わせ設定

systemd-timesyncdの設定ファイルを以下のようにNTPとFallbackNTPを有効にして修正。

pi@raspberrypi:~ $ sudo vi /etc/systemd/timesyncd.conf

:
[Time]
NTP=ntp.jst.mfeed.ad.jp ntp.nict.jp
FallbackNTP=time.google.com

そのあと以下のコマンドでNTPを有効にする。

pi@raspberrypi:~ $ sudo timedatectl set-ntp true

systemd-timesyncdデーモンを再起動。

pi@raspberrypi:~ $ sudo systemctl restart systemd-timesyncd
Warning: The unit file, source configuration file or drop-ins of systemd-timesyncd.service changed on disk. Run 'systemctl daemon-reload' to reload units.

そしたらなんか上記のようにWarning出た!怖!なのでメッセージの言うとおりにやってみる。

pi@raspberrypi:~ $ sudo systemctl daemon-reload
pi@raspberrypi:~ $ sudo systemctl restart systemd-timesyncd

今度は何も怒られないかった。それも怖!動いてるのか?確認してみる。

pi@raspberrypi:~ $ sudo systemctl status systemd-timesyncd
● systemd-timesyncd.service - Network Time Synchronization
   Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
           mqdisable-with-time-daemon.conf
   Active: active (running) since Sat 2020-06-27 21:51:58 JST; 11min ago
     Docs: man:systemd-timesyncd.service(8)
 Main PID: 2890 (systemd-timesyn)
   Status: "Synchronized to time server for the first time 210.173.160.87:123 (ntp.jst.mfeed.ad.jp)."
    Tasks: 2 (limit: 4915)
   Memory: 968.0K
   CGroup: /system.slice/systemd-timesyncd.service
           mq2890 /lib/systemd/systemd-timesyncd

 6月 27 21:51:58 raspberrypi systemd[1]: Starting Network Time Synchronization...
 6月 27 21:51:58 raspberrypi systemd[1]: Started Network Time Synchronization.
 6月 27 21:51:59 raspberrypi systemd-timesyncd[2890]: Synchronized to time server for the first time 210.173.160.87:123 (ntp.jst.mfeed.ad.jp).

Warningもなく正常に動いているっぽい。さてdateはどうなってる?

pi@raspberrypi:~ $ date
2020年  6月 27日 土曜日 13:54:44 BST

は?(設定当時の日時:6/27 21:58)

タイムゾーンの設定

はい、未設定でした。てなわけで以下のコマンドで設定。そしてdateコマンド!今度こそ!!

pi@raspberrypi:~ $ sudo timedatectl set-timezone Asia/Tokyo
pi@raspberrypi:~ $ date
2020年  6月 27日 土曜日 21:58:46 JST

お疲れさまでした~!

まとめ

よし、今日は終了。じゃねぇよ!

ヤバいな、構築してすぐにやるべき事、他にもありそうな気がする。。。