Linux phc2sys 命令 - 同步 PTP 时钟与系统时钟
介绍
phc2sys(英文全拼:PTP hardware clock to system)命令用于同步两个或多个时钟。最常见的用法是,将系统时钟同步到网卡上的 PTP 硬件时钟(PHC)。PHC 本身可以使用 ptp4l 同步,系统时钟被视为从属时钟,而网卡上的时钟则为主时钟。
关于 PTP 详细介绍,请参考《PTP 精确时间协议》。
安装:
phc2sys 命令由 LinuxPTP 软件包提供,在 Debian/Ubuntu 系统上可以使用如下命令进行安装。
sudo apt install linuxptp
语法:
phc2sys -a [ -r ] [ -r ] [ options ]
phc2sys [ -d pps-device ] [ -s device ] [ -c device ] [ -O offset ] [ -w ] [ options ]
选项:
自动配置:
- -a:开启自动配置。
- -r:同步系统(实时)时钟,重复- -r将其也视为时间源。
手动配置:
- -c [dev|name]:从时钟(CLOCK_REALTIME)。
- -d [dev]:主 PPS 设备。
- -s [dev|name]:主时钟。
- -O [offset]:从主时间偏移量,默认为 0。
- -w:等待 ptp4l。
通用选项:
- -E [pi|linreg]:时钟伺服,默认为 pi。
- -P [kp]:比例常数,默认为 0.7。
- -I [ki]:积分常数,默认为 0.3。
- -S [step]:设置步阈值,默认不开启。
- -F [step]:仅在开始时设置步阈值,默认为 0.00002。
- -R [rate]:以 HZ 为单位的从属时钟更新率,默认为 1 HZ。
- -N [num]:每次更新的主时钟读数数量,默认为 5。
- -L [limit]:以 ppb 为单 位的健全频率限制,默认为 200000000。
- -M [num]:NTP SHM 段号,默认为 0。
- -u [num]:摘要统计中的时钟更新次数,默认为 0。
- -n [num]:域编号(domain number),默认为 0。
- -x:通过伺服而不是内核应用闰秒。
- -z [path]:UDS 的服务器地址(/var/run/ptp4l)。
- -l [num]:将日志记录级别设置为 num,默认为 6。
- -t [tag]:为日志消息添加标记(tag)。
- -m:将消息打印到标准输出(stdout)。
- -q:不要将消息打印到系统日志(syslog)。
- -v:显示版本信息并退出。
- -h:显示帮助信息并退出。
示例
将系统时钟同步到网卡上的 PTP 硬件时钟(PHC),使用 -s 可按设备或网络接口指定主时钟,使用 -w 可等待直到 ptp4l 进入已同步状态:
sudo phc2sys -s eth0 -w
PTP 按国际原子时(TAI)运行,而系统时钟使用的是协调世界时(UTC)。如果不指定 -w 来等待 ptp4l 同步,可以使用 -O 来指定 TAI 与 UTC 之间的偏差(以秒为单位):
sudo phc2sys -s eth0 -O -35
将 phc2sys 作为服务运行:
sudo systemctl start phc2sys
