我注意到在内核 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
.
现在,如果您的系统死机、异常重新启动等,会发生什么情况?时钟未与硬件同步。下次启动时,您可能会出现很大的时钟偏差,因为硬件时钟不是那么准确......下次您会说“我需要我的系统以ntpdate
before启动ntpd
,因为否则,ntpd
可能根本无法同步时间,因为当前时钟和实际时间的增量太大”。这种方法的问题是......如果您碰巧同步到一台本身不同步的机器,然后您ntp
将永远不会有正确的时间,会发生什么?
因此,为了避免这一切,最好保留正确的时间始终与硬件同步。您所询问的内核选项似乎要做的是注意您的时间是否实际上与 NTP 同步(有一种方法可以知道...) - 如果是 - 定期从 Linux 时间同步该时间(又名系统时间),到硬件时钟,所以它在任何时候都非常准确,包括突然的系统崩溃。