我有一个嵌入式Linux系统没有RTC,因此(当前)在启动时认为是 1970 年 1 月 1 日。
我已经ntpd
安装并启动为:
/usr/bin/ntpd -g
有一个相当标准的/etc/ntp.conf
:
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst
restrict default nomodify nopeer noquery limited kod
restrict 127.0.0.1
restrict [::1]
不幸的是,这需要很长的时间(有时> 120秒)才能实现锁定(即:用*
in标记的对等点ntpq -nc peers
)。
我可以使用哪些其他选项(如果有)来尽可能缩短同步时间?
相关问题:合理的同步时间是多少(假设合理的网络连接ping
时间约为 16 毫秒0.pool.ntp.org
)?
注:我做过阅读man 8 ntpd
和man 5 ntp.conf
,但我很困惑,我需要专家的建议。
更新:
鉴于评论,我认为我需要详细说明我的用例:
- 我的嵌入式Linux系统是这样的不是有一个 RTC,所以它在 1970 年 1 月 1 日醒来。
- 我
ntpd
从 sysV 初始化脚本开始start-stop-daemon -S -q -x /usr/sbin/ntpd -- -g
- 我需要知道系统时间何时“相当接近”(我可以接受几秒的错误,而不是在“分钟”范围内)。
- 网络可能是有线网络或 WiFi(或两者),因此可能需要大量时间才能启动。
- 即使 LAN 已启动并运行,由于连接、NAT 或防火墙,我也可能在访问时间服务器时遇到问题;这意味着等待固定的时间是行不通的(即使我可以
ping
服务器!)。 - 我可以通过不同的方式获得“正确”时间
ntp
(例如:用户显式设置日期和时间,可能存在巨大错误!)。
我的目标是尽快获取信息,无论当前时间是否从ntp
服务器检索(因此可以“可信”)。如前所述,我不需要亚秒级精度,但我需要尽快“确定”知道分钟是否正确以及何时正确,当然前提是网络正常工作)。