chronyd 同步后重启时间偏移是因 RTC 未同步所致;需启用 rtcsync 并用 hwclock 首次校准,硬件老化、虚拟机配置或容器环境限制亦会导致该问题。
chronyd 同步后系统时间正确,但重启后时间严重偏移
这是典型的 RTC(Real-Time Clock)未与系统时钟同步导致的问题。chronyd 默认只维护系统时钟(software clock),不会自动写回硬件时钟(CMOS/RTC),所以断电重启后 BIOS 仍按旧的硬件时间启动,造成“时间倒退”或“快进”。
关键判断点:timedatectl status 中若显示 RTC time: … 与 Local time: … 相差很大(尤其跨天),且 RTC in local TZ: no,基本可锁定为 RTC 同步缺失。
- chronyd 不会默认启用硬件时钟写入,需显式配置
rtcsync或手动触发 - 部分主板 RTC 晶振老化或电池电压不足,会导致写入后仍持续漂移(每天 ±1~5 秒以上)
-
虚拟机环境下,
/dev/rtc可能不可用或被宿主机接管,rtcsync无效
启用 chronyd 的 rtcsync 并验证是否生效
rtcsync 是 chronyd 内置机制,它让内核周期性(约每秒一次)将系统时钟同步到 RTC,比传统 hwclock --systohc 更平滑、更及时。但必须确认 chronyd 配置已启用且服务重载成功。
- 编辑
/etc/chrony.conf,确保存在且未被注释:rtcsync - 重启服务:
systemctl restart chronyd - 检查是否加载成功:
chronyc tracking | grep 'RTC'—— 若输出含RTC is synced表示已启用 - 注意:仅启用
rtcsync不代表 RTC 当前就准确,它只负责“持续同步”,初始偏差仍需人工校准
首次校准 RTC:用 hwclock 手动写入当前系统时间
即使启用了 rtcsync,若 RTC 初始偏差过大(如几分钟),chronyd 不会主动修正——它只做微调。必须先用 hwclock 强制写入一次。