嵌入式产品NTP服务器移植详解

当前,很多Linux系统都支持NTP服务器,但是,当真正应用到一款项目产品时,除了自行设定时间之外,由于时钟芯片的延迟或纽扣电池没电等原因,总会造成时间上多少不准确的现象,现在就主要针对嵌入式产品等移植NTP服务器,所以以下编辑器使用的是arm-linux-gcc;而不是gcc版本,请移植之前先确保arm-linux-gcc的准确性。

NTP:NTP服务器【Network Time Protocol(NTP)】是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。时间按NTP服务器的等级传播。按照离外部UTC源的远近把所有服务器归入不同的Stratum(层)中。

移植步骤(arm-linux-gcc版本):
一、从官方网上下载最新安装包
http://www.ntp.org/downloads.html

嵌入式产品NTP服务器移植详解

二、在linux中建立一个net文件夹,并将ntp-4.2.8p6.tar.gz复制进去,并解压

嵌入式产品NTP服务器移植详解

三、建立一个准备存放安装文件的文件夹(如存放arm版本的)

嵌入式产品NTP服务器移植详解

四、编译configure(注意设置--prefix, --exec-prefix的安装路径,以及--host安装平台)
[root@localhost ntp-4.2.8p6]# ./configure --prefix=/opt/toolschain/ntp/ntp-4.2.8p6_arm/ --exec-prefix=/opt/toolschain/ntp/ntp-4.2.8p6_arm/ --host=arm-none-linux-gnueabi --with-yielding-select=yes

嵌入式产品NTP服务器移植详解

注意:如何不添加--with-yielding-select=yes,将出现以下错误。

嵌入式产品NTP服务器移植详解

五、修改ntpd/ntp_loopfilter.c文件,添加以下代码
147 #ifndef MOD_NANO
148 #define MOD_NANO 0x2000
149 #endif

嵌入式产品NTP服务器移植详解嵌入式产品NTP服务器移植详解
 
目的:防止mage编译是出现undeclared错误
[root@localhost ntp-4.2.8p6]# make
ntp_loopfilter.c:520:27: error: ?.OD_NANO?.undeclared (first use in this function)

六、执行make编译
[root@localhost ntp-4.2.8p6]# make CC=arm-none-linux-gnueabi-gcc

嵌入式产品NTP服务器移植详解

七、执行make install安装
[root@localhost ntp-4.2.8p6]# make install

嵌入式产品NTP服务器移植详解

八、查看ntp-4.2.8p6_arm文件夹下是否生成库文件

嵌入式产品NTP服务器移植详解嵌入式产品NTP服务器移植详解
 
/*****************************************************************************/

运行ntpd /etc/ntp.conf,ntp服务就运行起来了

嵌入式产品NTP服务器移植详解

最简单的可以脚本这样写:
#!/bin/sh
server="pool.ntp.org"
/usr/sbin/ntpdate -s $server
/usr/sbin/hwclock --systohc
exit

ntpdate -d time.windows.com
ntpdate -d 210.72.145.44
ntpdate -u 210.72.145.44
watch ntpq -p

但是运用测试好的脚本最好编写详细的注释,且尽可能编写异常处理程序。

九、全球可用的NTP服务器
当前已提供的各国NTP服务器列表
[INTERNATIONAL NTP server list.]

区域[zone]    域名[Domain]  IP池[IP Pool]
中国[China]    cn.ntp.org.cn  [58.220.207.226][47.92.108.218]
[202.112.29.82] [202.108.6.95] [120.25.108.11]  [182.92.12.11] [115.28.122.198]
中国台湾[ChinaTaiwan]  tw.ntp.org.cn  [58.220.207.226]
美国[America]    us.ntp.org.cn  [24.56.178.140]
新加坡[Singapore]   sgp.ntp.org.cn  [103.11.143.248]
韩国[korea]    kr.ntp.org.cn  [211.233.40.78]
德国[Germany]   de.ntp.org.cn  [131.188.3.220] [131.188.3.223]
日本[Japan]    jp.ntp.org.cn  [133.100.11.8]

-注:多组IP则为多IP轮询[Group IP was using IP-list polling]。
但到底使用哪个NTP服务器,是自己在编写脚本时加上去的,可自行选择服务器,但是必须经过测试方可运用到产品上面。

连接地址:http://www.ntp.org.cn/

十、国内可用的NTP服务器
ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心NTP服务器地址)
s1a.time.edu.cn 北京邮电大学
s1b.time.edu.cn 清华大学
s1c.time.edu.cn 北京大学
s1d.time.edu.cn 东南大学
s1e.time.edu.cn 清华大学
s2a.time.edu.cn 清华大学
s2b.time.edu.cn 清华大学
s2c.time.edu.cn 北京邮电大学
s2d.time.edu.cn 西南地区网络中心
s2e.time.edu.cn 西北地区网络中心
s2f.time.edu.cn 东北地区网络中心
s2g.time.edu.cn 华东南地区网络中心
s2h.time.edu.cn 四川大学网络管理中心
s2j.time.edu.cn 大连理工大学网络中心
s2k.time.edu.cn CERNET桂林主节点
s2m.time.edu.cn 北京大学

更多NTP时间服务器相关教程见以下内容

相关推荐