适用系统
Windows 10/11 + Ubuntu 20.04/22.04
问题背景
在 Windows 和 Ubuntu 双系统环境下,切换系统时经常会发现时间相差数小时。这主要是因为 Windows 和 Ubuntu 对硬件时钟(RTC)的处理方式不同。
Windows 默认将硬件时钟(RTC)视为本地时间(Local Time),而 Ubuntu 默认将硬件时钟视为协调世界时(UTC),并根据时区转换为本地时间。这种差异就导致两个系统读取同一硬件时钟时显示的时间不同。本文将提供一种快速解决方案,通过同步时间服务器并修正硬件时钟模式,彻底解决此问题。
解决方案步骤
步骤 1:安装必要工具
首先,要确保系统中包含时间同步和硬件时钟操作所需的工具。在终端中输入以下命令:
sudo apt update
sudo apt install util-linux-extra ntpdate
这里解释一下这两个工具:
util-linux-extra
:它提供了hwclock
命令的完整功能,部分系统可能默认未安装。ntpdate
:用于手动同步网络时间,因为 Ubuntu 默认的时间同步服务systemd-timesyncd
可能无法直接覆盖硬件时钟。
步骤 2:手动同步网络时间
接着,我们使用 Windows 官方时间服务器来校准 Ubuntu 系统时间。在终端输入:
sudo ntpdate time.windows.com
其原理是直接向 time.windows.com
同步时间,确保 Ubuntu 与 Windows 的时间源一致。需要注意的是,如果提示 no server suitable for synchronization found
,可以尝试更换其他时间服务器,比如 ntp.aliyun.com
。
步骤 3:将系统时间写入硬件时钟(RTC)
然后,强制将 Ubuntu 的当前系统时间(已校准为本地时间)写入硬件时钟。输入以下命令:
sudo hwclock --localtime --systohc
其中,--localtime
表示指定硬件时钟使用本地时间模式,会覆盖默认的 UTC 模式;--systohc
则是将系统时间同步到硬件时钟。
步骤 4:验证硬件时钟模式
之后,我们要检查硬件时钟是否已切换为本地时间模式。在终端输入:
sudo hwclock --show
输出时间应与 date
命令显示的本地时间一致。例如:
2023-10-01 15:30:00+08:00 # Ubuntu 系统时间(date 命令)
2023-10-01 15:30:00 # 硬件时钟时间(hwclock 命令)
步骤 5:修复 Windows 注册表(可选)
如果 Windows 时间仍异常,可能是其强制使用了 UTC 兼容模式。这时需要删除相关注册表项,具体操作如下:
在 Windows 中以管理员身份打开命令提示符。
运行以下命令:
reg delete "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /f
验证一致性
Ubuntu 中验证
在 Ubuntu 终端输入:
timedatectl && sudo hwclock --show
确保输出中 RTC in local TZ: yes
。
Windows 中验证
按
Win + R
,输入cmd
打开命令提示符。运行
time /t
和date /t
,检查时间是否与 Ubuntu 一致。
注意事项
时区设置
要确保 Ubuntu 的时区与 Windows 一致。可以在终端输入以下命令:
sudo timedatectl set-timezone Asia/Shanghai # 替换为实际时区
时间同步服务
若需长期保持时间精准,重新启用 Ubuntu 自动同步:
sudo timedatectl set-ntp true
推荐在 BIOS 中启用网络时间同步(如果支持的话)。
硬件时钟权限
若 hwclock
命令报错,尝试更新工具:
sudo apt install --reinstall util-linux
原理解析
硬件时钟(RTC):主板上的物理时钟,依赖电池供电,记录时间数据。
Windows 行为:直接读取 RTC 作为本地时间,无时区转换。
Ubuntu 默认行为:读取 RTC 为 UTC,再根据系统时区转换为本地时间。
通过 hwclock --localtime
强制 Ubuntu 以本地时间模式读写 RTC,使双系统时间基准一致,从根本上解决问题。
结语
以上方法通过校准时间源、修正硬件时钟模式,彻底解决双系统时间差异问题。操作简单且无需复杂配置,适用于大多数场景。如有疑问,欢迎在评论区留言交流!