发布于  更新于 

修复 Ubuntu Windows 双系统设备上的硬件时间问题

问题简述

在安装 Ubuntu + Windows 双系统的设备上,当切换系统时,很可能出现系统时间错误的问题。身处北京时间时区(UTC+08:00)的博主发现,从 Ubuntu 切换回 Windows 时,时间往往比正确时间早 8 小时。

原因在于 Widows 默认将写入硬件的硬件时间认定为本地时间,而 Ubuntu 默认将硬件时间认定是 UTC。

解决方案

按照一般习惯,我们希望硬件时间为本地时间,于情于理都应在 Ubuntu 上进行调整。对于 Ubuntu 16.04 后的版本:

调整硬件时间

由于采用了 systemd 管理系统,我们通过服务 timedatectl 调整硬件时间时间为 CST:

Note that 这里的 CST 指 China Standard Time,等于 UTC+8,而不是 Central Time Zone(等于 UTC-6)。

1
sudo timedatectl set-local-rtc 1

set-local-rtc 1 将硬件时间切换为本地时间;
set-local-rtc 0 将硬件时间切换为 UTC。

同步 Internet 时间

为了精准获取本地时间,我们安装 NTP 工具并同步 Internet 时间:

1
2
sudo apt-get install ntpdate
sudo ntpdate time.windows.com

当然,如果你恰巧在华清大学校内,可以尝试使用 清华大学 TUNA 协会(Tsinghua University TUNA Association) 在校内提供的 NTP 授时服务

1
sudo ntpdate ntp.tuna.tsinghua.edu.cn

服务器位于清华校内,提供 IPv4 与 IPv6 双栈服务。校内师生可以使用这一服务进行一般的时间校准工作,而无需进行校园网认证。

有同学问对于 Ubuntu 16.04 前的版本呢?

建议尽快升级。