betaLab Op. 2
同步Win10与Ubuntu的本地时间
问题原理
首先介绍一下与时间相关的几个量:
- 本地时间:即所在地的实时时间。
- UTC(Universal Time Coordinated):协调世界时,在时刻上尽量接近于格林尼治标准时间。
- RTC(Real Time Clock):主板上硬件时钟记录的时间,又称CMOS时钟。
我们处于东8区,故正确的本地时间计算方式为UTC时间+8小时。然而Windows与Linux看待系统硬件时间的方式不同,Windows系统认为硬件时间(RTC)是本地时间。Ubuntu认为硬件时间(RTC)是UTC时间。
举个例子,某日正午12点时,实际上UTC时间为4时:
- 从Win切换到Linux:Win知道本地时间为12时,将RTC时间也设为12时,切换到Linux中,Linux认为UTC时间=RTC时间=12时,故将UTC时间加上8时算得本地时间20时,然而在开机的网络同步时钟进程中又获得真正的本地时间12时,所以将RTC时间调整为12时-8时=4时。
- 从Linux切换到Win:Linux中此时RTC时间=UTC时间=4时,切换到Win中,Win认为本地时间=RTC时间=4时,慢了8时,需要手动同步时钟获得真正的本地时间。
解决方案
需要统一两个系统看待RTC时间的方式,故有两种修改方式,小编倾向于修改Win的设置,避免Linux每次发行版更新都要重新设置的问题。
Ubuntu侧
终端中键入命令,让系统将RTC时间看作本地时间,与Windows同步。
1 | timedatectl set-local-rtc 1 --adjust-system-clock |
Windows侧
CMD中键入命令修改注册表,让系统将RTC时间看作UTC时间,与Ubuntu同步。
悲报,这种方法在最近某次系统更新中会导致资源管理器开摆,失效。
betaLab Op. 2