不同步时禁用 chrony NTP 服务器

Disable chrony NTP server when unsync

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

我想要一个 LAN NTP 服务器,但如果由于某种原因没有互联网连接并且由于断电导致时钟错误,则 NTP 服务器将错误的时间传递给客户端。考虑一下我正在使用 'cheap' NTP 客户端 (Android/Arduino/other routers/cameras),它们无法防止大时钟摆动。

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

我也尝试过 ntpd,我愿意接受替代品(但它必须 运行 在 OpenWRT 上)。

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

目前我的解决方案:

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

deny all

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

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

chronyc allow all

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

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