opkg install ntp-systemd
systemctl enable ntpdate.service
systemctl enable ntpd.service
/etc/ntp.conf を編集し、次の行にコメントを付けます (存在しないハードウェア クロックへのフォールバックはなく、ntpdate サービスが「ntpd -q」コマンドを使用するため)。
#server 127.127.1.0
#fudge 127.127.1.0 stratum 14
次の 2 つのサービスがインストールされます。
/lib/systemd/system/ntpd.service:
[Unit]
Description=Network Time Service
After=network.target
[Service]
Type=forking
PIDFile=/run/ntpd.pid
ExecStart=/usr/bin/ntpd -p /run/ntpd.pid
/lib/systemd/system/ntpdate.service:
[Unit]
Description=Network Time Service (one-shot ntpdate mode)
Before=ntpd.service
[Service]
Type=oneshot
ExecStart=/usr/bin/ntpd -q -g -x
RemainAfterExit=yes
ntpd は、ネットワークがアップした後に開始されるため (After=network.target)、日付は継続的に同期される必要があります。しかし、ntpdのmanページで説明しています:
今日のほとんどのオペレーティング システムとハードウェアには、電源がオフになっている間も時刻を維持するための年 (TOY) チップが組み込まれています。マシンの起動時に、オペレーティング システムの時刻を初期化するためにチップが使用されます。マシンが NTP サーバーに同期された後、オペレーティング システムは時々チップを修正します。TOY チップがない場合、または何らかの理由でその時間がサーバー時間から 1000 秒を超えている場合、ntpd は何かがひどく間違っているに違いないと想定し、信頼できる唯一のアクションはオペレーターが介入して時計を手動で設定することです。これにより、ntpd が終了し、システム ログにパニック メッセージが出力されます。-g オプションはこのチェックを上書きし、クロックはチップ時間に関係なくサーバー時間に設定されます。ただし、壊れたハードウェアから保護するために、
したがって、ntpd を開始する前に日付を設定する必要があります。これは、ntpd.service を開始する前に「ntpd -q -g -x」を実行することにより、ntpdate サービスによって行われます。
ntpd のマニュアルページから:
-q クロックが最初に設定された直後に ntpd を終了します。この動作は、廃止予定の ntpdate プログラムの動作に似ています。-g および -x オプションは、このオプションと一緒に使用できます。注: このオプションを使用すると、カーネル時間規則が無効になります。
Beaglebone にインストールされた別のサービスは、日付/時刻と対話します
タイムスタンプ.サービス
[Unit]
Description=Timestamping service
ConditionPathExists=/etc/timestamp
After=remount-rootfs.service
[Service]
RemainAfterExit=yes
ExecStart=/usr/bin/load-timestamp.sh
ExecStop=/usr/bin/load-timestamp.sh --save
このサービスは、停止時に現在のタイムスタンプを /etc/timestamp に保存し、開始時にそのタイムスタンプから日付を設定します。したがって、ntpd がインストールされておらず、日付が手動で設定され、ビーグルボーンが再起動された場合、日付は起動時間だけ遅れます。