解决 Arch Linux 与 Windows 双系统时间同步问题

awkker 发布于 2025-08-30 41 次阅读


本文档旨在总结在 Arch Linux 与 Windows 双系统环境下,由于时间标准不一致导致的时间显示错误问题的解决方案。

问题的根源

问题的核心在于两个操作系统对硬件时钟 (RTC, Real Time Clock) 的解释不同:

操作系统 默认 RTC 标准 描述
Windows 本地时间 (Local Time) 将 BIOS/UEFI 时间直接作为当前地区的本地时间。
Linux (Arch) 世界协调时间 (UTC) 将 BIOS/UEFI 时间视为 UTC,再根据时区计算本地时间。

这种不一致导致每次切换系统时,后一个系统都会错误地解读硬件时钟,造成时间偏差(通常是 8 小时,在中国时区)。

解决方案

有两种主要解决方案,目标都是统一两个系统对 RTC 的解释标准。

方案一(推荐):统一使用 UTC 标准

这是社区普遍推荐的、最稳健的解决方案。它将 Windows 的时间标准调整为与 Linux 一致。

步骤 1:在 Arch Linux 中确认使用 UTC

这是 Arch Linux 的默认设置。如果您的系统发出了警告或被修改过,请运行以下命令恢复:

sudo timedatectl set-local-rtc 0

运行后,使用 timedatectl status 检查,应显示 RTC in local TZ: no 且无警告。

步骤 2:在 Windows 中启用 UTC

  1. 启动到 Windows 系统。

  2. 管理员身份 打开 命令提示符 (CMD)PowerShell

  3. 执行以下命令,修改注册表:

    reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 1 /f
  4. 重启电脑即可。

优点

  • 符合 Linux 标准,是最“正确”的配置。
  • 避免了因夏令时或时区变更可能引发的潜在问题。

方案二(备用):统一使用本地时间标准

此方案让 Arch Linux 迁就 Windows,虽然设置简单,但并非 Linux 的标准做法。

步骤 1:在 Arch Linux 中设置为使用本地时间

运行以下命令:

sudo timedatectl set-local-rtc 1 --adjust-system-clock

运行后,使用 timedatectl status 检查,会显示 RTC in local TZ: yes 并附带一条系统警告。

警告信息:系统会提示您,这种模式无法被完全支持,并可能在时区变更和夏令时调整中产生问题。这就是您之前遇到的情况。

步骤 2:在 Windows 中无需操作

Windows 默认使用本地时间,因此无需任何改动。

缺点

  • 非 Linux 标准配置,可能导致未知问题。
  • 在处理夏令时或跨时区时不够稳定。

总结

为了长期的稳定性和兼容性,强烈建议采用 方案一。通过一个简单的注册表修改,让 Windows 适应更为通用的 UTC 标准,一劳永逸地解决双系统的时间同步问题。

计算机小白一枚
最后更新于 2025-08-30