当前,很多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版本):
一、从官方网上下载最新安装包
二、在linux中建立一个net文件夹,并将ntp-4.2.8p6.tar.gz复制进去,并解压
三、建立一个准备存放安装文件的文件夹(如存放arm版本的)
四、编译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
注意:如何不添加--with-yielding-select=yes,将出现以下错误。
五、修改ntpd/ntp_loopfilter.c文件,添加以下代码
147 #ifndef MOD_NANO
148 #define MOD_NANO 0x2000
149 #endif
目的:防止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
七、执行make install安装
[root@localhost ntp-4.2.8p6]# make install
八、查看ntp-4.2.8p6_arm文件夹下是否生成库文件
/*****************************************************************************/
运行ntpd /etc/ntp.conf,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]