引用自https://wiki.archlinux.org/title/System_time:
大多数操作系统的标准行为是:
- 在启动时根据硬件时钟设置系统时钟。
- 保持系统时钟时间准确,参见#时间同步。
- 关机时根据系统时钟设置硬件时钟。
谁负责在关机时从系统时钟设置硬件时钟的最后一步?
答案1
责任是“操作系统”的。具体实施方式各不相同。
有两种情况需要考虑:
如果系统唯一的时间源是 RTC,则无需更新它,除非时间已设置。在 Linux 上,这通常由以下方法处理
hwclock
,或由timedatectl
。如果系统有外部时间源(通过网络),则应更新 RTC。在 Linux 上,这通常在关闭时处理(使用
hwclock
),但内核(自 3.7 起)可以每十分钟自动更新一次 RTC如果使用外部源维护系统时间并且 RTC 已正确配置。
在 Linux 上,内核期望时间同步服务报告时间是否同步;这是通过清除或设置来完成的STA_UNSYNC
使用adjtimex
系统调用的状态位。如果内核本身确定了该时间,则可以设置该位不是已同步,但它永远不会自行清除它。