Answers:
https://help.ubuntu.com/community/UbuntuTime#Multiple_Boot_Systems_Time_Conflicts
多个引导系统时间冲突
操作系统会在主板上的硬件时钟中存储和检索时间,以便即使系统没有电源也可以跟踪时间。默认情况下,大多数操作系统(Linux / Unix / Mac)将硬件时钟上的时间存储为UTC,尽管某些系统(尤其是Microsoft Windows)将硬件时钟上的时间存储为“本地”时间。如果两个系统对硬件时钟的看法不同,则这会在双引导系统中引起问题。
将硬件时钟设置为UTC的好处是,当您在时区之间移动或夏令时(DST)开始或结束时,您不需要更改硬件时钟,因为UTC没有DST或时区偏移。
与将Windows更改为使用UTC相比,将Linux更改为使用本地时间更容易,更可靠,因此,双引导Linux / Windows系统倾向于使用本地时间。
由于Intrepid(8.10),默认为UTC = yes。
使Windows使用UTC
注意: Windows Vista和Server 2008最初不支持此方法,但Vista SP2,Windows 7,Server 2008 R2和Windows 8 / 8.1再次支持此方法。
要使MS Windows从硬件时钟计算时间为UTC。
使用以下内容创建一个名为WindowsTimeFixUTC.reg的文件,然后双击该文件以将内容与注册表合并:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=dword:00000001
注意:无论关闭时上面的注册表设置如何,Windows Time服务仍将本地时间写入RTC,因此使用此命令禁用Windows Time服务非常方便(如果在Windows中使用任何第三方时间时仍需要时间同步同步解决方案):
sc config w32time start= disabled
撤消更改
您可以创建具有以下内容的文件,然后双击该文件以合并到原始更改中,如上所述:Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] "RealTimeIsUniversal"=-
如果禁用了Windows时间服务,请使用以下命令再次启用它:
sc config w32time start= demand
使Linux使用“本地”时间
告诉Ubuntu系统,硬件时钟设置为“本地”时间:
Ubuntu 15.04之前的系统(例如Ubuntu 14.04 LTS):
- 编辑
/etc/default/rcS
添加或更改以下部分
# Set UTC=yes if your hardware clock is set to UTC (GMT) UTC=no
Ubuntu 15.04及更高版本的系统(例如Ubuntu 16.04 LTS):
打开一个终端并执行以下命令
timedatectl set-local-rtc 1
New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -PropertyType DWord -Value 00000001
要将BIOS时钟设置为本地时间而不是基于Systemd的版本(15.04及更高版本)中的UTC,必须使用以下timedatectl
命令。根据Arch Wiki:
您可以通过命令行设置硬件时钟时间标准。您可以通过以下方式检查要使用的内容:
$ timedatectl | grep local
硬件时钟可以通过
timedatectl
命令查询和设置。要将硬件时钟时间标准更改为本地时间,请使用:# timedatectl set-local-rtc 1
如果要还原为UTC形式的硬件时钟,请执行以下操作:
# timedatectl set-local-rtc 0
您的时区为Eastern,当前为EDT(Eastn Daylight Time)。EDT是UTC减去四个小时,与您遇到的偏移量相同。
在双启动系统上发生这种情况时,通常是因为一个操作系统认为硬件时钟跟踪本地时间,而另一个操作系统认为硬件时钟跟踪UTC。
在您的情况下,您的硬件时钟可能设置为本地时间,并且:
如果您只是手动或自动重置Ubuntu系统中的时间,则在Windows中将是错误的,因此这不是一个好的解决方案。
相反,最好的解决方案可能是重新配置Ubuntu,以将硬件时钟时间视为本地时间(然后,您可以单独保留Windows配置和硬件时钟时间)。
为此,请/etc/default/rcS
以root用户身份进行编辑,并确保其具有UTC=no
:
按Alt+ F2。
输入gksu gedit /etc/default/rcS
并按Enter。
您可能会看到以下内容:
# assume that the BIOS clock is set to UTC time (recommended)
UTC=yes
UTC=yes
为UTC=no
。(或者,您也可以通过将注释更改为类似的方式来添加注释UTC=no # changed to accommodate Windows system
。#
字符后一行中的所有内容均为注释,只是为了使您的设置更易于阅读。)UTC=
行。如果没有注释(即#
开头没有),请相应地进行更改。如果有评论,请通过删除引号取消其注释,#
并确保其显示为UTC=no
。保存文件并退出文本编辑器。
重新启动以应用您的更改,并检查时间是否现在在两个操作系统上都能正常工作。
资料来源: https : //help.ubuntu.com/community/UbuntuTime#Make_Linux_use_.27Local.27_time
(但这很笼统;我写了这个答案专门针对您的情况,这是一个普遍的问题。)