有没有办法在 Linux 上获得正确的 CLOCK_TAI?

Ash*_*ley 8 linux time clock

我的 Linux 机器支持CLOCK_TAI,但它的偏移量CLOCK_REALTIME错误地为零(这是默认值)。是否有软件或其他解决方案可以保持CLOCK_TAI为 TAI?

这里这里的答案来看,似乎既不这样做ntpd也不chronyd这样做。

我很乐意把我的硬件时钟TAI实现这一目标,提供CLOCK_REALTIMEgettimeofday等回报POSIX时间(UTC本质)。

小智 4

我认为您希望clock_gettime能够CLOCK_TAI正常工作。我也是。

引用答案中的关键句子是:“请注意,CLOCK_REALTIME 的偏移量在启动时初始化为零,并且 ntpd 和 chronyd 都没有将其默认设置为正确的值(当前为 35)。”

除了现在的偏移量为 37 之外,这可能仍然是正确的,但最近的 ntpd 至少可以配置为设置偏移量。我在 openSUSE 机器上执行了以下操作:

vi /etc/ntp.conf # Add the line: leapfile /var/lib/ntp/etc/ntp.leapseconds
update-leap
service ntpd restart
less /var/log/ntp # Check for errors
Run Code Online (Sandbox Code Playgroud)

然后clock_gettime(CLOCK_TAI, &res)似乎工作正常。

我认为 ntp 使用ntp_adjtimewith设置偏移量MOD_TAI。搜索 chrony 源grep -P '(ADJ|MOD)_TAI'没有找到匹配项,看来 chrony 还没有这个能力。