arm linux 添加ntp服务,嵌入式linux添加NTP服务

版本信息:

Linux version 4.1.15

需求: RTC时间不够精确,过一段时间就可以看出和实际时间有明显出入,有必要添加NTP服务,使系统可以与网络同步时间。

首先把NTP服务build进rootfs,修改/etc/ntp.conf,网上参考很多,内容如下:

driftfile /var/lib/ntp/drift

restrict default kod nomodify notrap nopeer noquery

restrict -6 default kod nomodify notrap nopeer noquery

restrict 127.0.0.1

restrict -6 ::1

restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap

restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap

restrict 172.16.0.0 mask 255.15.0.0 nomodify notrap

# Use public servers from the pool.ntp.org project.

server 210.72.145.44 perfer

server 0.cn.pool.ntp.org

server 1.cn.pool.ntp.org

server 2.cn.pool.ntp.org

server 0.asia.pool.ntp.org

server 1.asia.pool.ntp.org

server 2.asia.pool.ntp.org

server 0.CentOS.pool.ntp.org

server 1.centos.pool.ntp.org

server 2.centos.pool.ntp.org

server 127.127.1.0 # local clock

fudge 127.127.1.0 stratum 10

更新rootfs,重启系统(确保可以上网),发现时间确实和网上同步了。

查看date,

~# date

Wed Mar 28 01:12:39 UTC 2018

系统时间是UTC时间,我们希望是中国时间,需要在rootfs添加时区配置,默认rootfs没有localtime,使用UTC时间,NTP在同步时间时,会把系统时间改为真正的UTC时间。添加中国时区(Shanghai)方法如下:

从ubuntu 拷贝/usr/share/zoneinfo/Asia/Shanghai 到目标机,再执行

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

重启系统,这样date 就是上海时区的时间了。

~# date;hwclock -r

Wed Mar 28 09:22:39 CST 2018

Wed Mar 28 01:22:39 2018 0.000000 seconds

不过RTC时间总是UTC时间, 可执行hwclock -r -u

~# date;hwclock -r -u

Wed Mar 28 10:00:51 CST 2018

Wed Mar 28 10:00:51 2018 0.000000 seconds

系统开机时,系统会读rtc时间设定系统时间,关机时会把系统时间写入rtc.具体执行脚本在

/etc/rc2.d/S20hwclock.sh —>/etc/init.d/hwclock.sh

从中可以看出,hwclock.sh从/etc/default/rcS 读出UTC 变量值,决定tz (时区) 是–UTC,或者 –localtime. 决定hwclock –hctosys ,hwclock -systohc 用–UTC 还是–localtime. 可以修改/etc/default/rcS VERBOSE=yes,这样系统开关机时可以从串口看到hwclock.sh的执行过程。

ntpd启动脚本在 /etc/rc2.d/S20ntpd.sh —>/etc/init.d/ntpd

执行  /etc/init.d/ntpd restart

date时间即可以立即同步。

ntpd启动后,执行ntpdate会报端口占用错误,如果想用ntpdate同步时间,可把/etc/init.d/ntpd执行属性去掉,重启系统,

执行 ntpdate 0.cn.pool.ntp.org

date时间即可以和网上同步。

修改ntpd的授时间隔(Polling interval):

默认ntpd的Polling interval是6~10, 即

minpoll 6

maxpoll 10

意思是Polling interval 64s~1024s.

minpoll最小可取3,maxpoll最大可取17, 把

minpoll 6

maxpoll 8

添加到/etc/ntp.conf, 重启系统测试:

这是时间不准时的时间,

~# hwclock -r;date

Wed Mar 28 11:00:38 2018 0.000000 seconds

Wed Mar 28 11:00:38 CST 2018

这是时间被ntp校准后的时间,经过4、5分钟,date时间确实被校准了。

:~# hwclock -r;date

Wed Mar 28 11:06:04 2018 0.000000 seconds

Thu Mar 29 11:13:36 CST 2018

但rtc没有被同时校准,网上有提示在 /etc/sysconfig/ntpd 添加

SYNC_HWCLOCK=yes

经过实际测试,date和rtc没有被同时校准,不过,过一段时间rtc也被校准了。

~# hwclock -r;date

Thu Mar 29 03:50:41 2018 0.000000 seconds

Thu Mar 29 11:50:40 CST 2018

目前还有一个小毛病是date使用localtime, hwclock -r却是UTC时间,尝试修改/etc/default/rcS UTC=no,依然如此,也许是ntpd把RTC时间改为UTC时间了吧,好在可以通过hwclock -r -u 获取和date一致的时间。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值