本文档旨在总结在 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
-
启动到 Windows 系统。
-
以 管理员身份 打开 命令提示符 (CMD) 或 PowerShell。
-
执行以下命令,修改注册表:
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 1 /f -
重启电脑即可。
优点:
- 符合 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 标准,一劳永逸地解决双系统的时间同步问题。
Comments NOTHING