我在内核中启用了选项CONFIG_RTC_SYSTOHC
:
Device Drivers --->
[*] Real Time Clock --->
[*] Set the RTC time based on NTP synchronization
帮助说:
CONFIG_RTC_SYSTOHC:
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.
但是,我的硬件时钟没有同步。我正确地设置了RTC_HCTOSYS_DEVICE
:
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
上面引用的帮助说明,如果“如果用户空间报告同步的NTP状态”,则同步工作。那是什么意思?我正在使用ntpdate
定期同步我的时间(每4小时)使用cron。
ntp
同步的,并且我希望我的硬件时钟被同步?发布于 2015-11-20 14:34:28
从cron作业运行ntpdate
将在每次运行时调整系统时间,但这并不意味着您的系统是"NTP同步“(时钟可以在周期性同步之间漂移),并且内核不会自动同步RTC。
您是否有什么特别的理由,您运行的ntpdate
是从一个cronjob而不是运行ntpd
?ntpd
将保持更准确的时间,有更多的错误检查(这样一个错误的时间服务器不会给您造成混乱),并纪律系统的时钟频率,以补偿振荡器漂移。
此外,它将向内核报告"NTP同步状态“,然后内核将定期设置hwclock。
来自ntpdate
手册页:
可以根据需要手动运行ntpdate以设置主机时钟,也可以从主机启动脚本运行ntpdate,以便在启动时设置时钟。在某些情况下,这对于在启动NTP守护进程ntpd之前设置时钟非常有用。还可以从cron脚本运行ntpdate。但是,需要注意的是,带有人为cron脚本的ntpdate不能替代NTP守护进程,它使用复杂的算法来最大化准确性和可靠性,同时最小化资源的使用。最后,由于ntpdate不像ntpd那样约束主机时钟频率,所以使用ntpdate的准确性是有限的。
通常,最好使用ntpd
来保持时钟同步,除非您有特殊的理由不这样做(例如,传输数据非常昂贵的远程或隔离系统)。
发布于 2016-11-16 10:46:17
ntpdate
在调整系统时间时不清除STA_UNSYNC
标志。因此内核认为系统时间无效,不更新RTC。它没有清除STA_UNSYNC
,因为它使用adjtime()
来设置系统时间,而不是adjtimex()
。
为了使用CONFIG_RTC_SYSTOHC
特性,您必须使用清除STA_UNSYNC
标志的工具,即ntpd
。
可能问题应该向ntpdate
开发人员报告。
https://unix.stackexchange.com/questions/186394
复制相似问题