0

我有一个运行 chrony (chronyd) 的 OpenWRT 路由器。硬件没有 RTC,所以在断电后,系统时钟会变得疯狂。

我想拥有一个 LAN NTP 服务器,但如果不知何故没有互联网连接并且由于断电而时钟错误,则 NTP 服务器将错误的时间传递给客户端。考虑到我正在使用无法防止大时钟摆动的“廉价”NTP 客户端(Android/Arduino/其他路由器/相机)。

我想在重新启动时禁用 chrony NTP 服务器并等待第一次同步以启用它。我认为这是一个常见的设置,但在任何地方都找不到。

我也尝试过 ntpd 并且我对替代方案持开放态度(但它必须在 OpenWRT 上运行)。

注意:即使没有互联网连接,我已经尝试使用 USB GPS 作为更可靠的时钟源。

4

1 回答 1

0

到目前为止我的解决方案:

在 chrony.conf 上,设置为在启动时禁用。

deny all

然后,我创建了一个脚本来检查时钟是否同步(使用 chronyc),然后再次启用它。

until ! chronyc tracking | grep "Reference ID" | grep -q "()"
    do sleep 60
done

chronyc allow all

最后,设置为在启动时运行脚本。

似乎只有 chrony(不是 ntpd)才有可能,因为它有一个客户端可以动态更改设置。

于 2019-12-23T12:56:02.803 回答