我如何强制 Ubuntu 使用 BIOS 内部时钟而不是 NTP 或任何正在使用的时钟?

我如何强制 Ubuntu 使用 BIOS 内部时钟而不是 NTP 或任何正在使用的时钟?

我的时钟在 Ubuntu 中开始不同步,这在 Windows 中不会发生。问题是它在与 NTP 服务器同步片刻后就开始失去时间,这意味着时钟坏了。

那么我怎样才能让系统使用硬件时钟呢(我试过 adjtimex)。

顺便说一句:请不要建议使用 CMOS 电池,这不是正确答案。

答案1

默认情况下,Ubuntu 仅在网络接口启动时设置时间。它使用“ntp”系统的一小部分:ntpdate 来实现这一点。如果您的机器保持连接并持续运行数天或数周,即使是最好的内部时钟最终也会不同步。
默认情况下,Ubuntu 也不会尝试调整您的内部时钟,听起来您的时钟调整得很糟糕。大多数系统中的实时时钟(硬件时钟)从长远来看也不是很好。

因此,如果您想要更好的时间,我可以推荐两个选择:

  • 安装完整的“ntp”包以获取网络时间协议,该协议会定期查看互联网时间服务器,并使您的时钟与正确时间的误差保持在几毫秒内。请参阅此处的一些说明:安装 NTP.... 您也可以从 Ubuntu 软件中心安装它。如果您的机器经常上网,而且没有阻断 ntp 的防火墙,那么这种方法就很简单,而且通常非常安全。

  • 使用 adjtimex 包手动调整内部时钟的频率。实际上,当您安装 adjtimex 时,它会运行 adjtimexconfig,它会设置 /etc/default/adjtimex 中的值。但它使用硬件时钟会很快完成,根据我的经验,结果通常介于糟糕和极差之间。有些机器很难调好,但我通过手动计算找出正确的 FREQ 和 TICK 值放入 /etc/default/adjtimex,我的大多数机器都表现不错。要走这条路,首先通过应用程序/Ubuntu 软件中心安装 adjtimex。要找出 FREQ 和 TICK 的手动设置,请参阅以下不错的计算器使用 adjtimex 进行调优,作为运行 ntpd 的替代方案。该页面还指出,您选择的“时钟源”会影响时钟的准确性。hpet(高精度事件计时器)似乎比 tsc(时间戳计数器)更准确。

处理其他故障的技巧如下:Ubuntu 时间 - Help.ubuntu.com

答案2

我不确定事情是否按照您描述的方式运作。也就是说,没有使用 BIOS 时钟或 ntp 服务器的“软件”时钟进程/应用程序,它们在 Ubuntu 中可能“损坏”,但在 Windows 中却可以正常工作。无论如何,您在屏幕上看到的信息都来自 BIOS 时钟。

如果启用了 NTP 服务器,则来自它的数据将用于调整 BIOS/硬件时钟,并且当硬件时钟被认为“不正确”时,NTP 守护进程会逐渐以小增量调整时间,而不是立即设置时间。这样做是为了避免系统时间突然“跳跃”,这可能会导致各种麻烦(即发生的事件一些其他活动,但在较早的时候)。

这完美地解释了您所看到的行为 - 一旦“正确”的数据来自 NTP 服务器,守护进程就会开始逐渐调整您的系统时间。

我认为您的时区/夏令时可能设置不正确。另一种可能是 Ubuntu 期望 BIOS 时钟设置为 UTC 时间,而 Windows 则将时钟设置为您的本地时区,这导致 Ubuntu 认为您的系统时钟比您的 GMT 偏移量晚/早

本文档可能会有帮助:https://help.ubuntu.com/community/UbuntuTime#Multiple%20Boot%20Systems%20Time%20Conflicts

答案3

转到系统/首选项/时间和日期,然后单击小挂锁解锁设置。

时间和日期设置

将您的配置更改为“手动”(这是默认设置,除非您已安装 NTP),然后手动将您的系统时间更新为您需要的时间。

相关内容