NTPD配置指南
本配置指南适用于使用NMEA格式gps,本文假定该gps使用$GPRMC格式数据,波特率为9600bps。测试环境:操作系统,ubuntu11.10。内核linux-3.1.6.tar.bz2。ntp版本ntp-4.2.,PPS测试工具,头文件ppsclock.h。假定本机IP地址为192.168.1.1。
1.编译内核:
$tar -xjvf linux-3.1.6.tar.bz2
$cd linux-3.1.6
$cp /boot/config-3.0.0-12-generic .config
$make menuconfig
选择以下驱动
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ <*> PPS support │ │
│ │ [ ] PPS debugging messages │ │
│ │ *** PPS clients support *** │ │
│ │ <*> Kernel timer client (Testing client, use for debug) │ │
│ │ <*> PPS line discipline │ │
│ │ < > Parallel port PPS client │ │
│ │ *** PPS generators support ***
{*} 8250/16550 and compatible serial support │ │
│ │ [*] Console on 8250/16550 and compatible serial port │ │
│ │ <*> 8250/16550 PCI device support
$make
$make modules
$make modules_install
$make install
$reboot
选择新内核启动系统
$ cd /usr/include
$ mv linux linux.old
$ mv asm asm.old
$ mv asm-generic asm-generic.old
$ ln -s /lib/modules/$(uname -r)/build/include/linux linux
$ ln -s /lib/modules/$(uname -r)/build/arch/x86/include/asm asm
$ ln -s /lib/modules/$(uname -r)/build/include/asm-generic asm-generic
$ cd /usr/include
$ cp /usr/src/pps-tools/timepps.h timepps.h
$ cp /usr/src/pps-tools/ppsclock.h ppsclock.h
2.编译ntp
$ sudo apt-get install ntp 获取相应的配置文件
进入ntp-4.2.6p5目录
$./configure --disable-all-clocks --enable-NMEA --enable-SHM --enable-ATOM --enable-LOCAL-CLOCK --disable-parse-clock
$make;make install
3.配置启动环境
修改/etc/init.d/ntp文件
第50行删除内容NTPD_OPTS="$NTPD_OPTS -u $UGID" 中的文字-u $UGID
将16行的DAEMON=/usr/sbin/ntpd改为DAEMON=/usr/local/bin/ntpd
15行下增加几行,这里假定使用串口4,此时的串口设备为/dev/ttyS4,如果使用其他串口,将下面的串口设备名做相应的修改:
if [ ! -e /dev/pps1 ] ;then
ldattach PPS /dev/ttyS4
fi
if [ -e /dev/gps0 ] ;then
rm -f /dev/gps0
fi
if [ -e /dev/gpspps0 ] ;then
rm -f /dev/gpspps0
fi
ln -s /dev/ttyS4 /dev/gps0
ln -s /dev/pps1 /dev/gpspps0
setserial /dev/ttyS4 low_latency
4.配置ntpd启动文件
更改配置文件/f
去掉其他以server 开头的行,取消从网络获取时间
编辑f 方法:vim /f 回车进入界面,按i插入,编辑完成后,按ESC,
按shift+Z 两次之后 /etc/init.d/ntp restart 回车启动ntp
配置方法一:vim最全使用指南(推荐使用,同步更快,误差更小):
增加一下两行:
server 127.127.20.0 mode 17 minpoll 4 maxpoll 4 prefer
fudge 127.127.20.0 flag1 1 flag3 1 time2 0.085 (0.182)
上面的time2 0.085 需要准确测量,它为秒脉冲前沿到串行数据结束之间的时间差,单位为秒。如果该时间不准确,将可能会造成ntpd的同步困难,同步误差较大,甚至造成同步不上的错误。
mode 17表示使用$GPRMC格式数据,波特率为9600,如果选用其他格式数据和波特率,需要做相应的修改,具体查看ntpd的参考时钟文档。
配置方法二:(不建议使用)
增加一下四行:
server 127.127.20.0 mode 17 minpoll 4 maxpoll 4 prefer
fudge 127.127.20.0 flag1 0 flag3 1 time2 0.182
server 127.127.22.1 minpoll 4 maxpoll 4 prefer
fudge 127.127.22.1 flag3 1 flag4 1
配置为局域网提供时间服务:
增加下面行将本机配置成服务器,为局域网192.168.1.X内所有计算机提供服务
restrict 192.168.1.0 mask 255.255.255.0 nomodify
局域网内其它计算机配置增加下面几行:
server 192.168.1.1 minpoll 4 maxpoll 4 prefer
fudge 192.168.1.1
5.查看ntpd状态常用的命令
查看同步状态命令,ntpd刚启动时,同步状态还不稳定,当其运行一段时间以后,ntpd的状态会达到稳定状态,此时的ofset和jitter都会降低到一个很小的值,(实际测量表明,在使用gps作为基准源时,要使offset小于10微秒,通常需要一个小时以上,这也是使用gps作为源所能达到的最高精度,精度优于10微秒):
(1)ntptime :命令输出结果,显示UNSYNC表示没有同步上,显示PPSFREQ,PPSTIME表示内核和PPS之间已经锁定
ntp_gettime() returns code 0 (OK)
time d2e9aa93.d177c840 Sat, Feb 18 2012 12:41:55.818, (.818234420),
maximum error 212373 us, estimated error 993 us, TAI offset 0
ntp_adjtime() returns code 0 (OK)
modes 0x0 (),
offset -9802.561 us, frequency -22.252 ppm, interval 1 s,
maximum error 212373 us, estimated error 993 us,
status 0x2007 (PLL,PPSFREQ,PPSTIME,NANO),
time constant 4, precision 0.001 us, tolerance 500 ppm,
(2)ntpq -p命令输出:
remote refid st t when poll reach delay offset jitter
==============================================================================
oGPS_NMEA(0) .GPS. 0 l 11 16 377 0.000 -1.671 3.260
reach 为零表示没有收到相关同步的数据,此时应该检查设置,jitter表示的是时间的抖动,它能够反映出同步的质量。
(3)ntpdc -c kerninfo 命令输出:
pll offset: -0.000402318 s
pll frequency: -32.246 ppm
maximum error: 0.001285 s
estimated error: 6e-06 s
status: 2007 pll ppsfreq ppstime nano
pll time constant: 4
precision: 1e-09 s
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论