我正在尝试在运行 Ubuntu 20.04(无头)的 SBC 上设置 GPS NTP 服务器,但我遇到了配置问题。当我重新启动时,我得到了这个:
$ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*_gateway 163.237.218.18 2 u 22 64 1 2.727 0.011 0.159
/etc/ntp.conf 说:
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst
# Use Ubuntu's ntp server as a fallback.
#pool ntp.ubuntu.com
# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details. The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
# Needed for adding pool entries
restrict source notrap nomodify noquery
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust
# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255
# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines. Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient
# GPS Serial data reference
server 127.127.28.0 minpoll 4 maxpoll 4
fudge 127.127.28.0 time1 0.0 refid GPS
# GPS PPS reference
server 127.127.28.1 minpoll 4 maxpoll 4 prefer
fudge 127.127.28.1 refid PPS
/etc/ntp/step-tickers
为空白
我在互联网上找到了一个配置,用于制作一个将作为 GPS 时间服务器运行的“设备”,它说要这样做:
$ su -
# killall -9 gpsd ntpd
# gpsd -n /dev/ttyXX
# sleep 2
# ntpd -gN
# sleep 2
# cgps
那行得通
root@ubuntu:/home/zach# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
*SHM(0) .GPS. 0 l 8 16 1 0.000 -40.232 0.000
SHM(1) .PPS. 0 l - 16 0 0.000 0.000 0.000
知道为什么我不能让 ntp 在启动时读取 /etc/ntp.conf 吗?
编辑:我不确定 gpsd 是否在启动时运行。
我做了一个dmesg | grep gps,什么都没出现。
然后,我编写了一个 bash 脚本,其中包含 killall 行。我认为它不会运行(crontab 中的@startup sh),因为它必须被提升。我尝试了 init.d (我真的不知道我在那里做什么)并且我收到一条错误消息 audit: type=1400 audit(1636322022.316:45): apparmor="DENIED" operation="ptrace" profile="/usr/sbin/gpsd" pid=2794 comm="gpsd" requested_mask="read" denied_mask="read" peer="/usr/sbin/ntpd"
好的,感谢@ChristianEhrhardt,由于某种我不知道的原因,Chrony 的使用似乎效果很好。
我已经运行了 gpsd,所以我不必搞砸它,但在这里指出这一点很重要。我使用的是通过 USB 而不是PPS 插入的 GPS。设备是 ttyACM0
我在互联网上使用了几个指南,我不确定我采取的确切步骤,但它是这样的:
sudo apt install chrony
然后我必须配置 .conf 文件
sudo nano /etc/chrony/chrony.conf
我发现为了让 GPS 时间服务器真正为其他计算机提供时间,我必须取消注释,如下所示。我有几个子网,所以我把它打开了
我需要添加我的 GPS 源,所以我添加了:
我知道重启服务是一回事,但我更喜欢重启。
sudo reboot now
然后我将其作为服务启用
systemctl enable chrony
然后我检查以确保它有效
chronyc sources
最后,我确认它正在为其他计算机服务。我去了另一台机器并检查了
ntpq -p
和TA-DA
如果您的服务器通过 DHCP 获取 IP,也可以通过 /var/lib/ntp/ntp.conf.dhcp 设置 ntp 选项。有时我什至有一个来自安装的挥之不去的文件,即使在更改为静态配置后也能保持这种行为。如果是这样,只需将其删除。
也许这样的服务可以工作/未经测试