说起使用ntp协议更新时间,很多人肯定会想起开源的ntp协议实现ntp-4.2.8p,但是最新的ntp实现已经不完全能支持跨平台的编译了,尤其是在arm linux平台上,很多时候要么是编译不过去,要么是运行有问题
其实最新的busybox就自带了ntp的实现,具体源码在networking/ntpd.c源文件,里面的整个结构比开源的ntp简单的多,虽然也是根据ntp4.6版本衍生出来的,但是精简了很多冗余的东西,只是给ntp服务器发送数据包,然后接收返回的数据包,再设置本地时间
在busybox的make menuconfig配置菜单里面勾选上ntp,然后make & make install就可以使用了。
ntpd.c里面实现了获取ntp服务器时间,然后设置本地时间,经过笔者对ntpd.c的修改,增加了获取成功以后自动修改rtc的时间,然后延长下次自动获取ntp时间的间隔,这样在移动平台上减少不必要的流量消耗。
!/bin/sh
# 只是-p参数会自动设置为守护进程在后台自动获取ntp时间
/usr/sbin/ntpd -p cn.ntp.org.cn