概要

Raspberry Piにはハードウェアクロックがありません。

そのため、時刻を合わせる場合NTPなどを使って、起動時に時刻を合わせる必要があります。

今回は、ntpdを使って時刻を合わせる方法を紹介します。

環境

  • Raspberry Pi 4 Model B
  • Fedora 32

新しい物好きなため、なるべく最新のパッケージが使えるFedoraを使用しています。

今回紹介する方法は、おそらくRaspbianでも使えると思います。

ntpdのインストール

最初に、NTPサーバをインストールします。

色々なところで、インストールの方法は紹介されているため、ここでは詳しく説明はしません。

エラー

私の環境では、単にNTPサーバを起動しただけでは、時刻が同期されませんでした。

今回の記事で特に伝えたい部分はここです。私はこのエラーの解決にかなり時間がかかってしまいました。もし、同じような問題を抱えている人は参考になると思います。

ログを見てみると、Raspberry Piに設定されている時刻と実際の時刻が大きくずれているのが原因ということが分かりました。

解決方法

そもそも、時刻が大きくずれていると時刻の同期に失敗するのは、仕様のようです。またなぜそのような仕様なのかというと、あまりにも時刻がずれているのは何か不具合の可能性が高いということで同期をしないようにするためのようです。

今回は、設定を書き換えて時刻が大きく離れている際でも、同期をすることにしました。

設定は/etc/ntp.confに次の内容を追記しました。

tinker panic 0

時刻が大きくずれていても同期がされるようになりました。

これ以外の解決法として、初回の同期時だけ、大きくずれていても同期するという設定をする方法があるのですが、私の環境ではうまくいきませんでした。

ntpdで時刻を同期できるようになりました。

さいごに

かなり解決するまでに時間がかかってしまいました。

他の時刻の同期方法としてGPSを使う方法があるのですが、そのような方法を使うと、代わりにGPSモジュールを買う必要がありますが、ここまで苦労しなくても済むと思います。