Skip to content

双系统时区问题

字数
569 字
阅读时间
3 分钟

在双系统(Arch Linux 和 Windows)中,时间不一致的问题通常是由于两者对硬件时钟(RTC)的处理方式不同导致的。以下是解决方案

1 问题原因

  • Linux 默认将硬件时钟视为 UTC 时间,并根据时区转换显示本地时间。
  • Windows 默认将硬件时钟视为 本地时间,直接读取 RTC 不进行时区转换。

当你在 Arch 中配置为使用 UTC,而 Windows 使用本地时间时,重启进入 Windows 后,时间会相差时区偏移量(如东八区差 8 小时)。

2 解决方案

2.1 方法一:让 Arch 使用本地时间(推荐)

  1. 在 Arch 中设置硬件时钟为本地时间

    bash
    timedatectl set-local-rtc 1 --adjust-system-clock
    • 此命令将修改 /etc/adjtime,将 RTC 配置为本地时间。

    • 检查配置是否生效:

      bash
      cat /etc/adjtime

      确保第三行为 LOCAL

  2. 重启验证

    • 进入 Arch 和 Windows,检查时间是否一致。

2.2 方法二:让 Windows 使用 UTC 时间(需修改注册表)

  1. 在 Windows 中修改注册表

    • 按下 Win + R,输入 regedit 打开注册表编辑器。

    • 定位到:

      HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation
    • 右键新建一个 DWORD (32 位),名为 RealTimeIsUniversal,值设为 1

  2. 重启验证

    • 进入 Windows,时间应正常显示为 UTC 转换后的本地时间。

3 注意事项

  • 推荐使用方法一(Arch 改用本地时间),兼容性更好且操作简单。
  • 如果使用 NTP 同步:
    • Arch 的 systemd-timesyncdntpd 会定期同步时间,覆盖硬件时钟的潜在偏差。
    • Windows 的时间服务也会自动纠正,但可能需要手动触发一次同步。

4 最终效果

  • ArchWindows 均将硬件时钟视为本地时间,双系统切换时无需时间修正。
  • NTP 服务会确保长期准确性,硬件时钟的偏差可忽略。

如有问题,可检查 /etc/adjtime 和 Windows 注册表配置是否生效。