CONFIG_RTC_SYSTOHC:如何使用内核中的NTP同步选项

CONFIG_RTC_SYSTOHC:如何使用内核中的NTP同步选项

我注意到在内核 3.10 中,有一个选项CONFIG_RTC_SYSTOHC

Device Drivers -> RTC -> Set the RTC time based on NTP synchronization

帮助说:

If you say yes here, the system time (wall clock) will be stored
in the RTC specified by RTC_HCTOSYS_DEVICE approximately every 11
minutes if userspace reports synchronized NTP status.

我不明白如何使用这个功能。这是否意味着我不再需要任何用户空间工具(ntpdate)来同步时间?这与使用有何不同ntpdate?在哪里指定要使用的 ntp 服务器?

有人可以澄清一下吗?

答案1

Linux 在内部存储时间,无论您的硬件时钟(又名 RTC)如何。这意味着您的系统可以在您运行时显示一个时间date(Linux 时钟),在您运行时显示另一个时间hwclock(硬件时钟)。

通常,当机器启动时(使用 ),您希望将时间从硬件加载到 Linux hwclock -hctosys,当机器停机时,您希望存储相当准确的时间(您确实使用ntpd,不是吗?;)) - 回到硬件时钟,使用hwclock -systohc.

现在,如果您的系统死机、异常重新启动等,会发生什么情况?时钟未与硬件同步。下次启动时,您可能会出现很大的时钟偏差,因为硬件时钟不是那么准确......下次您会说“我需要我的系统以ntpdatebefore启动ntpd,因为否则,ntpd可能根本无法同步时间,因为当前时钟和实际时间的增量太大”。这种方法的问题是......如果您碰巧同步到一台本身不同步的机器,然后您ntp将永远不会有正确的时间,会发生什么?

因此,为了避免这一切,最好保留正确的时间始终与硬件同步。您所询问的内核选项似乎要做的是注意您的时间是否实际上与 NTP 同步(有一种方法可以知道...) - 如果是 - 定期从 Linux 时间同步该时间(又名系统时间),到硬件时钟,所以它在任何时候都非常准确,包括突然的系统崩溃。

相关内容