双启动时时钟时间关闭


303

双启动系统Windows XP Pro和Ubuntu 12.04。

我将BIOS设置为正确的时间,将Ubuntu设置为美国东部时间。Ubuntu将启动,时间将减少-4小时。如果我在Ubuntu中更正了时间,那么在Windows XP中启动时,时间将减少+ 4小时。

这是12.04的全新安装。在重新安装Ubuntu之前,我没有这个问题。

Answers:


265

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):

  1. 编辑 /etc/default/rcS
  2. 添加或更改以下部分

    # Set UTC=yes if your hardware clock is set to UTC (GMT)
    UTC=no
    

Ubuntu 15.04及更高版本的系统(例如Ubuntu 16.04 LTS):

  1. 打开一个终端并执行以下命令

    timedatectl set-local-rtc 1
    

53
我的天。我不敢相信它们足够笨,无法在硬件时钟上使用本地时间。为什么你会这样做?
iono 2013年

20
@twome,因为既然在MS-DOS的早期没有太多的网络连接方式,并且将PC移到可以移动时区的地方并不常见。(是的,即使考虑到这段历史,这仍然不是最好的举动)。
乔恩·汉娜

9
@twome虽然我同意您的看法,但硬件时钟仍保持通用,因为它不保留时区信息,所以几乎没有问题:A)BIOS / UEFI具有各种功能,例如自动唤醒/睡眠计时器,您可以在其中设置这些触发器的时间。在UTC中设置这些时间很奇怪-至少对于普通用户而言。B)正如Jon所说,是向后兼容的原因。
Shahriyar Imanov 2014年

5
在Windows PowerShell中,运行以下命令以更新上述注册表属性: New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -PropertyType DWord -Value 00000001
Anatoly Mironov

6
对于那些浏览文本的人,您只需要更改其中一个操作系统的设置,而不必同时更改两个。
亚历山大·雷沃

66

要将BIOS时钟设置为本地时间而不是基于Systemd的版本(15.04及更高版本)中的UTC,必须使用以下timedatectl命令。根据Arch Wiki

您可以通过命令行设置硬件时钟时间标准。您可以通过以下方式检查要使用的内容:

$ timedatectl | grep local

硬件时钟可以通过timedatectl 命令查询和设置。要将硬件时钟时间标准更改为本地时间,请使用:

# timedatectl set-local-rtc 1

如果要还原为UTC形式的硬件时钟,请执行以下操作:

# timedatectl set-local-rtc 0

4
在Ubuntu 16.10上,它有助于执行“ hwclock --systohc --localtime”。这会将“本地部分”写入/ etc / adjtime,从而使其成为永久性的。
user1050755 '16

1
@ user1050755是在timedatectl命令之前,之后还是代替的?
nasch

36

您的时区为Eastern,当前为EDT(Eastn Daylight Time)。EDT是UTC减去四个小时,与您遇到的偏移量相同。

在双启动系统上发生这种情况时,通常是因为一个操作系统认为硬件时钟跟踪本地时间,而另一个操作系统认为硬件时钟跟踪UTC。

在您的情况下,您的硬件时钟可能设置为本地时间,并且:

  • Windows设置为使用本地时间(根据您的时间设置)是正确的
  • Ubuntu设置为使用UTC,这(根据您的时间设置)不正确

如果您只是手动或自动重置Ubuntu系统中的时间,则在Windows中将是错误的,因此这不是一个好的解决方案。

相反,最好的解决方案可能是重新配置Ubuntu,以将硬件时钟时间视为本地时间(然后,您可以单独保留Windows配置和硬件时钟时间)。

为此,请/etc/default/rcS以root用户身份进行编辑,并确保其具有UTC=no

  1. Alt+ F2

  2. 输入gksu gedit /etc/default/rcS并按Enter

  3. 您可能会看到以下内容:

    # assume that the BIOS clock is set to UTC time (recommended)
    UTC=yes
    
    • 如果这样做,请更改UTC=yesUTC=no。(或者,您也可以通过将注释更改为类似的方式来添加注释UTC=no # changed to accommodate Windows system#字符后一行中的所有内容均为注释,只是为了使您的设置更易于阅读。)
    • 如果不这样做,请查找任何UTC=行。如果没有注释(即#开头没有),请相应地进行更改。如果有评论,请通过删除引号取消其注释,#并确保其显示为UTC=no
  4. 保存文件并退出文本编辑器。

  5. 重新启动以应用您的更改,并检查时间是否现在在两个操作系统上都能正常工作。

资料来源: https : //help.ubuntu.com/community/UbuntuTime#Make_Linux_use_.27Local.27_time

(但这很笼统;我写了这个答案专门针对您的情况,这是一个普遍的问题。)


请注意,当您从一个Ubuntu版本升级到另一个Ubuntu版本时,也会发生这种情况,就像对我一样。我可以建议执行上述修复,然后按照此答案手动进行时钟同步(将其调整为与systemd配合使用):askubuntu.com/a/254846/139735
starbeamrainbowlabs 2016年

这应该是恕我直言的答案。我已经安装了Windows并运行良好,然后又安装了Ubuntu,时钟变得一团糟-如果显然是添加的linux破坏了我的配置,我看不出修改Windows设置的原因。
Przemek D

13

/ etc / rcS修复不适用于我的Win7 / Ubuntu 14.04x64安装,也无法通过时钟GUI进行任何修复。因为问题的根源是BIOS时间与UTC时间,而Windows在使用UTC方面是一个难题,所以我只是在地图上选择了一个使用UTC + 0的点(BIOS和UTC时间之间没有变化) 。

尝试将您的位置更改为雷克雅未克(冰岛首都)。瞧!您的Ubuntu时间将更改为与BIOS时间匹配。


哈哈!太棒了 :DI真的不在乎我的位置。这是两秒钟的修复。非常感谢。
浅蓝点2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.