重建 ntp 并支持 PPS

重建 ntp 并支持 PPS

我已经读过编译 NTP时间pps.h提供以获得 PPS 支持。有没有一种简单的方法来检查存储库的已预编译或已安装的版本(Ubuntu 14.04.1,内核 3.13.0-37) 以获得 PPS 支持?

编辑稍后谷歌一下……

我将其插入我的/etc/ntp.conf并重新启动 ntpd。这个配置似乎正确吗?我正在使用这个GPS 分线板/dev/ttyS0。根据文档这应该可以满足带 PPS 的 GPS 要求。波特率为9600

server 127.127.20.0 mode 18 minpoll 4 iburst prefer true
fudge 127.127.20.0 flag1 1 flag2 0 flag3 1 flag4 1

我花了一些时间才让它工作,因为 apparmor 阻止了 ntpd 打开串行端口。我从 syslos 中找到了答案。因此我将这一行添加到/etc/apparmor.d/tunables/ntpd。然后它就工作了。

@{NTPD_DEVICE}="/dev/ttyS0"

设备上的权限是

$ ll /dev/ttyS0 /dev/pps* /dev/gps*
lrwxrwxrwx 1 root root          5 Okt 18 23:00 /dev/gps0 -> ttyS0
lrwxrwxrwx 1 root root          4 Okt 18 23:00 /dev/gpspps0 -> pps0
crw-rw-rw- 1 root dialout 251,  0 Okt 18 23:00 /dev/pps0
crw-rw-rw- 1 root dialout   4, 64 Okt 18 23:09 /dev/ttyS0
$ id ntp
uid=106(ntp) gid=113(ntp) Gruppen=113(ntp),20(dialout)

为了永久实现这一点,我创建了一些udevsetserial -a /dev/ttyS0规则。而如果我在系统启动后使用 setserial 命令检查端口,则该命令似乎不起作用。

$ cat /etc/udev/rules.d/09-pps.rules
# Provide a symlink to /dev/ttyS0 and set low_latency for latency improvement
KERNEL=="ttyS0", SYMLINK+="gps0", MODE="0666"
KERNEL=="ttyS0", RUN+="/bin/setserial /dev/%k low_latency"
KERNEL=="ttyS0", RUN+="/usr/sbin/ldattach pps /dev/%k"

# Symlink /dev/pps0 to /dev/gpspps0
KERNEL=="pps0", SUBSYSTEM=="pps", DRIVER=="", SYMLINK+="gpspps0"
KERNEL=="pps0", GROUP="dialout"
KERNEL=="pps0", MODE="0666"

之后我不得不删除/var/lib/ntp/ntp.conf.dhcp一次。因为它是/etc/ntp.conf在任何 DHCP 事件或重新启动时派生的。因此它将在启动时生成一个新的。

我还需要 127.127.22.* 条目(ATOM PPS 驱动程序)吗?因为如文档如果我使用flag1=1PPS,它会被隐式使用吗?不,它只适用于 GPS NMEA (127.127.20.u)。

ntpq -p现在的输出是

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
-fritz.box       185.31.136.34    3 u   36   64  177    0.298    4.496   0.076
*arcticfox.dorid 192.53.103.104   2 u   43   64  177   14.125    2.041   1.307
+monitman.com    158.43.128.33    2 u   44   64  177   25.325    4.703   0.314
+spacys.de       212.82.32.15     2 u   43   64  177   24.156   -1.503   2.094
-cse-server.com  122.227.206.195  3 u   38   64  177   24.372   -3.421   0.618
oGPS_NMEA(0)     .GPS.            0 l    1   16  377    0.000   -0.270   0.024

为了支持 ATOM 时钟,我必须编译启用了 ATOM 时钟支持的 ntp。

答案1

为什么不让自己轻松一点,尝试使用 PPS 功能呢?编辑您的配置文件并包含相关的 PPS 标志并启动 ntpd。这似乎很明显,我不确定我是否错过了一个约束。

我不清楚您所说的“存储库的已安装版本”是什么意思?您是指 Linux 发行版吗?如果是,答案是肯定的,但这取决于您使用的发行版。但尝试使用 PPS 似乎是最好的测试。

重建 ntp 并支持 PPS

一旦您确认已正确配置 gps 设备,您可以通过以下方式重建支持 pps 的 ntp:

 # apt-get build-dep ntp
 # apt-get install pps-tools ubuntu-dev-tools
 # apt-get source ntp
 # cd <The ntp version directory something like ntp-4.2.6.p5+dfsg >
 # dpkg-buildpackage -uc -us -nc 
 # dpkg -i ../ntp*.deb 

为了避免 apt 无法安装新版本,并且不支持 ATOM 时钟,请使用

 # echo ntp hold  | dpkg --set-selections

相关内容