arm linux 添加ntp服务,嵌入式linux添加NTP服务
版本信息:
Linux version 4.1.15
需求: RTC時(shí)間不夠精確,過(guò)一段時(shí)間就可以看出和實(shí)際時(shí)間有明顯出入,有必要添加NTP服務(wù),使系統(tǒng)可以與網(wǎng)絡(luò)同步時(shí)間。
首先把NTP服務(wù)build進(jìn)rootfs,修改/etc/ntp.conf,網(wǎng)上參考很多,內(nèi)容如下:
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,重啟系統(tǒng)(確保可以上網(wǎng)),發(fā)現(xiàn)時(shí)間確實(shí)和網(wǎng)上同步了。
查看date,
~# date
Wed Mar 28 01:12:39 UTC 2018
系統(tǒng)時(shí)間是UTC時(shí)間,我們希望是中國(guó)時(shí)間,需要在rootfs添加時(shí)區(qū)配置,默認(rèn)rootfs沒(méi)有l(wèi)ocaltime,使用UTC時(shí)間,NTP在同步時(shí)間時(shí),會(huì)把系統(tǒng)時(shí)間改為真正的UTC時(shí)間。添加中國(guó)時(shí)區(qū)(Shanghai)方法如下:
從ubuntu 拷貝/usr/share/zoneinfo/Asia/Shanghai 到目標(biāo)機(jī),再執(zhí)行
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
重啟系統(tǒng),這樣date 就是上海時(shí)區(qū)的時(shí)間了。
~# date;hwclock -r
Wed Mar 28 09:22:39 CST 2018
Wed Mar 28 01:22:39 2018 0.000000 seconds
不過(guò)RTC時(shí)間總是UTC時(shí)間, 可執(zhí)行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
系統(tǒng)開機(jī)時(shí),系統(tǒng)會(huì)讀rtc時(shí)間設(shè)定系統(tǒng)時(shí)間,關(guān)機(jī)時(shí)會(huì)把系統(tǒng)時(shí)間寫入rtc.具體執(zhí)行腳本在
/etc/rc2.d/S20hwclock.sh —>/etc/init.d/hwclock.sh
從中可以看出,hwclock.sh從/etc/default/rcS 讀出UTC 變量值,決定tz (時(shí)區(qū)) 是–UTC,或者 –localtime. 決定hwclock –hctosys ,hwclock -systohc 用–UTC 還是–localtime. 可以修改/etc/default/rcS VERBOSE=yes,這樣系統(tǒng)開關(guān)機(jī)時(shí)可以從串口看到hwclock.sh的執(zhí)行過(guò)程。
ntpd啟動(dòng)腳本在 /etc/rc2.d/S20ntpd.sh —>/etc/init.d/ntpd
執(zhí)行 /etc/init.d/ntpd restart
date時(shí)間即可以立即同步。
ntpd啟動(dòng)后,執(zhí)行ntpdate會(huì)報(bào)端口占用錯(cuò)誤,如果想用ntpdate同步時(shí)間,可把/etc/init.d/ntpd執(zhí)行屬性去掉,重啟系統(tǒng),
執(zhí)行 ntpdate 0.cn.pool.ntp.org
date時(shí)間即可以和網(wǎng)上同步。
修改ntpd的授時(shí)間隔(Polling interval):
默認(rèn)ntpd的Polling interval是6~10, 即
minpoll 6
maxpoll 10
意思是Polling interval 64s~1024s.
minpoll最小可取3,maxpoll最大可取17, 把
minpoll 6
maxpoll 8
添加到/etc/ntp.conf, 重啟系統(tǒng)測(cè)試:
這是時(shí)間不準(zhǔn)時(shí)的時(shí)間,
~# hwclock -r;date
Wed Mar 28 11:00:38 2018 0.000000 seconds
Wed Mar 28 11:00:38 CST 2018
這是時(shí)間被ntp校準(zhǔn)后的時(shí)間,經(jīng)過(guò)4、5分鐘,date時(shí)間確實(shí)被校準(zhǔn)了。
:~# hwclock -r;date
Wed Mar 28 11:06:04 2018 0.000000 seconds
Thu Mar 29 11:13:36 CST 2018
但rtc沒(méi)有被同時(shí)校準(zhǔn),網(wǎng)上有提示在 /etc/sysconfig/ntpd 添加
SYNC_HWCLOCK=yes
經(jīng)過(guò)實(shí)際測(cè)試,date和rtc沒(méi)有被同時(shí)校準(zhǔn),不過(guò),過(guò)一段時(shí)間rtc也被校準(zhǔn)了。
~# hwclock -r;date
Thu Mar 29 03:50:41 2018 0.000000 seconds
Thu Mar 29 11:50:40 CST 2018
目前還有一個(gè)小毛病是date使用localtime, hwclock -r卻是UTC時(shí)間,嘗試修改/etc/default/rcS UTC=no,依然如此,也許是ntpd把RTC時(shí)間改為UTC時(shí)間了吧,好在可以通過(guò)hwclock -r -u 獲取和date一致的時(shí)間。
總結(jié)
以上是生活随笔為你收集整理的arm linux 添加ntp服务,嵌入式linux添加NTP服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux网卡改为动态过去IP,Linu
- 下一篇: linux文件系统添加pcm,linux