Raspbian stretch の新しいイメージファイル (2017-11-29-raspbian-stretch-lite.zip) が出ていたので、これを使って久しぶりに Raspberry Pi でハードウェアクロック(RTC)付きタイムサーバーを作ってみた。備忘録を残しておく。
以前(wheezyで試したとき)とは、いろいろ、やり方が変わっているようだ。stretchのほうが簡単に思える。
RasPiに接続したRTCを認識させるには device tree overlay 機能を使う。おなじみのconfig.txtファイルに次のような設定を追加してRasPiを再起動すれば /dev/rtc0 と /dev/rtc が生えてくる。
$ sudo -e /boot/config.txt
dtoverlay=i2c-rtc,pcf2127
この設定例はリアルタイムクロックICとしてPCF2127を接続した場合を想定している(I2C接続なのでraspi-configでI2Cを有効にしておくのも忘れずに)。
他にどのようなチップに対応しているか調べるには次のようにする。
$ dtc -I dtb -O dts -@ /boot/overlays/i2c-rtc.dtbo
wheezyではNTPクライアント/サーバーに ntpd を使っていたが、最近は、NTPクライアント機能だけでよければ systemd-timesyncd を、サーバー機能も必要なら Chrony を使うのが一般的らしい(ntpdも使える)。
fake-hwclock をアンインストール(あるいは無効化)して chrony をインストールする。