选择ntp功能
进入内核编译文件夹
$cd ~/NUC970_Buildroot-master
选择ntp功能
$make menuconfig
选择Target packages > Networking applications > ntp
选项中我根据项目要求和调试测试需要选择了ntpd、ntpdate、ntpdc、ntpq。
功能说明
ntpd是平滑同步(微调同步),ntpdate则是直接同步(跳跃同步)。
我个人的理解就是ntpdate会立即,直接的与ntp服务器时间同步,立竿见影,使用date命令可以直接看到时间已被更改,但这样跳跃式的更改可能会对运行中的程序或者服务进程造成影响。
ntpd则是慢慢的进行同步,虽然可能会花费5到10分钟时间完全同步,但对于程序、进程等影响较小,且在NUC980内核编译中已设置为开机启动的守护进程。
因为项目中电路板出厂时需进行时间校对,同时客户日常使用也需使用ntp功能,且若时间相差过大,ntpd功能可以启动但不能正常运行,所以此处选择ntpdate用于出厂时间校对,ntpd作为守护进程保证日常校对。
ntpdc可以查看ntp守护进程状况,更改相关参数。ntpq则是用来查看与ntp服务器连接情况。两功能均用于调试。
配置文件
选择功能完成后,保存后make,编译完成后可在output/build文件夹下发现ntp文件夹,在usr/sbin下可以找到相关命令
不过有可能该文件夹下只有ntpd,可以前往ntp文件夹下将相应命令复制过来即可,如:
output/target/etc文件夹下找到ntp的配置文件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
# Allow only time queries, at a limited rate, sending KoD when in excess.
# Allow all local queries (IPv4, IPv6)
restrict default nomodify nopeer noquery limited kod
restrict 127.0.0.1
restrict [::1]
项目要求暂时为只需此电路板可以同步时间,故仅设置为客户端,直接同网络上的ntp服务器进行同步,不需设置为服务端供其他节点同步时间。修改后如下:
#server 0.pool.ntp.org iburst
#server 1.pool.ntp.org iburst
#server 2.pool.ntp.org iburst
#server 3.pool.ntp.org iburst
server ntp.ntsc.ac.cn prefer
server time1.cloud.tencent.com
# Allow only time queries, at a limited rate, sending KoD when in excess.
# Allow all local queries (IPv4, IPv6)
restrict default nomodify nopeer noquery limited kod
restrict 127.0.0.1
restrict [::1]
ntp.ntsc.ac.cn(114.118.7.161)为中国科学院ntp授时服务器
time1.cloud.tencent.com(139.199.215.251)腾讯云ntp授时服务器
此外,在outout/target/etc/init.d文件夹下可以找到ntp的开机启动文件S49ntp,其中需根据实际情况修改的内容如下:
NAME=ntpd
DAEMON=/usr/sbin/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
# Read config file if it is present.
if [ -r /etc/default/$NAME ]
then
. /etc/default/$NAME
fi
可以看到先赋值了NAME和DAEMON用于使用配置文件和开启守护进程。
test -x $DAEMON || exit 0查询在板子环境下/usr/sbin/文件夹下是否存在ntpd命令,可以查看output/target/usr/sbin文件夹进行确认,若无,可根据实际位置修改DAEMON变量。
if [ -r /etc/default/$NAME ]
then
. /etc/default/$NAME
fi
判断是否存在配置文件,并使用。但此处与我目前实际情况不符:1、配置文件名称为ntp.conf,此处变量NAME为ntpd,我采取修改变量名称的方式处理,也可修改配置文件名。2、配置文件所在文件夹为output/target/etc,即板子环境下的/etc,并无中间文件夹default,我此处选择修改语句,也可增加该中间文件夹。修改后如下:
NAME=ntpd
DAEMON=/usr/sbin/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
NAME=ntp
# Read config file if it is present.
if [ -r /etc/$NAME ]
then
. /etc/$NAME
fi
NAME=ntpd
修改保存后再次make,烧录uimage。
测试
首先测试网络
#ping ntp.ntsc.ac.cn
或者
#ping 114.118.7.161
查看当前时间
使用ntpdate前需要先将ntpd服务停止
重新开启ntpd,并查看连接状态
|