同步 Windows 和 Linux 的时间
Windows 默认认为硬件时间是本地时间,而 Linux 默认认为硬件时间是 UTC 时间。因此,如果没有设置自动时间同步的话,对于在东八区的双系统用户来说,经常会有 Linux 时间正常而 Windows 慢了八小时,或者 Windows 时间正常而 Linux 快了八小时的情况出现。
让 Linux 与网络同步时间
请先安装 ntp
。
运行 sudo ntpdate cn.ntp.org.cn
(或其它 NTP 服务器)以同步时间。
如果想开机自动进行网络时间同步的话,运行 sudo systemctl enable ntpdate.service
以启用开机同步时间。
修改 ntp 所用的上游 NTP 服务器
如果时间同步太慢(几秒钟左右是正常现象),可以选择更换上游 NTP(网络授时协议)服务器。在 /etc/ntp.conf
中比较靠前的位置,写入:
server cn.ntp.org.cn
让 Windows 与网络同步时间
进入控制面板(找不到的,在 Win+R
弹出的「运行」对话框中输入 control
,点击确定,以打开控制面板)。打开「日期与时间」,选择「Internet 时间」标签,点击「更改设置」按钮。
在弹出窗口中可以立即进行时间同步或配置自动时间同步。服务器仍然可以选择 cn.ntp.org.cn
。
同步出错的,可以到 services.msc
「服务」中查看是否 "Windows Time" 服务被关闭了。如果是,请启动服务后再试。
真正的解决方案
妥协 Windows
注意:在 Windows 7 之前的系统中不建议这么做。
让 Windows 把硬件时间当作 UTC 即可。操作方法:
在注册表编辑器(regedit.exe)中,找到注册表项
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
在右侧新建名为 "RealTimeIsUniversal" 的 DWORD 值,并将其设置为1。
亦可将以下内容保存为 .reg 文件后双击直接导入。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
“RealTimeIsUniversal”=dword:00000001
之后重启计算机。
妥协 Linux
作为一名更常用 Linux 作为工作环境的用户,Outvi 并没有测试这一部分,故无法确定此部分内容的有效性。
运行
sudo timedatectl set-local-rtc 1
将硬件时间设置为本地时间即可。
如何给硬件时间对时?
对于 Windows,设置系统时间后,硬件时间会被自动设置。
对于 Linux,在调好系统时间和时区后,运行:
sudo hwclock --systohc --utc
即可。