问题
项目中有arm开发板NTP时间同步失败,首先想到在windows下测试NTP服务器:w32tm /stripchart /computer:<ntp ip/url>
C:\Users\bm>w32tm /stripchart /computer:192.168.2.140
正在跟踪 192.168.2.140 [192.168.2.140:123]。
当前时间是 2019/4/16 15:58:59。
15:58:59, d:+00.0005045s o:-01.1312742s [ * | ]
15:59:01, d:+00.0003217s o:-01.1313553s [ * | ]
15:59:03, d:+00.0003784s o:-01.1313271s [ * | ]
从结果看与ntp服务器的通讯没有问题,问题可能出在服务器设置上,在arm板上运行ntpdate尝试同步:
root@myzr /home$ ./ntpdate 192.168.2.140
16 Apr 16:07:59 ntpdate[31711]: no server suitable for synchronization found
继续执行:
root@myzr /home$ ./ntpdate -d 192.168.2.140
16 Apr 16:08:53 ntpdate[31780]: ntpdate 4.2.8p13@1.3847 Tue Apr 16 04:16:53 UTC 2019 (1)
Looking for host 192.168.2.140 and service ntp
host found : 192.168.2.140
transmit(192.168.2.140)
receive(192.168.2.140)
transmit(192.168.2.140)
receive(192.168.2.140)
transmit(192.168.2.140)
receive(192.168.2.140)
transmit(192.168.2.140)
receive(192.168.2.140)
192.168.2.140: Server dropped: strata too high
server 192.168.2.140, port 123
stratum 16, precision -21, leap 11, trust 000
refid [INIT], root delay 0.000000, root dispersion 0.002640
reference time: (no time)
originate timestamp: e0600c1c.ddc02ea4 Tue, Apr 16 2019 16:09:00.866
transmit timestamp: e0600c1c.21f555b6 Tue, Apr 16 2019 16:09:00.132
filter delay: 0.02780 0.02869 0.02766 0.02791
---- ---- ---- ----
filter offset: 0.731777 0.732142 0.731872 0.732264
---- ---- ---- ----
delay 0.02766, dispersion 0.00017, offset 0.731872
16 Apr 16:09:00 ntpdate[31780]: no server suitable for synchronization found
打开NTP服务器/etc/ntp.conf,注释掉原来server,这些server作为NTP服务器的上层NTP服务器,现在要把本机作为服务器,所以把server改成:
server 127.127.1.0
fudge 127.127.1.0 stratum 10
保存后重启NTP服务
/etc/init.d/ntp restart
再次同步就OK了。
NTP交叉编译
ARM中如果没有ntpdate命令那就需要交叉编译
1.ntp下载:http://www.ntp.org/downloads.html
2.解压根目录下执行./configure --host=arm-none-linux-gnueabi(根据环境修改)
3.make
4.提取静态可执行文件放入ARM环境执行即可