多启动系统时间冲突

多启动系统时间冲突

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

我已将 bios 设置为正确时间,并将 Ubuntu 设置为美国东部时间。Ubuntu 将启动,时间将偏离 -4 小时。如果我在 Ubuntu 中更正时间,那么当我在 Windows XP 中启动时,时间将偏离 +4 小时。

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

答案1

https://help.ubuntu.com/community/UbuntuTime#Multiple_Boot_Systems_Time_Conflicts

多启动系统时间冲突

操作系统将时间存储并检索到主板上的硬件时钟中,这样即使系统没有电源,它也可以跟踪时间。大多数操作系统(Linux/Unix/Mac)将时间存储在硬件时钟中,如下所示世界标准时间默认情况下,尽管有些系统(尤其是 Microsoft Windows)将硬件时钟上的时间存储为“本地”时间。如果两个系统对硬件时钟的看法不同,这会导致双启动系统出现问题。

将硬件时钟设置为 UTC 的优点是,您在时区之间移动时或夏令时 (DST) 开始或结束时不需要更改硬件时钟,因为 UTC 没有 DST 或时区偏移。

将 Linux 更改为使用本地时间比将 Windows 更改为使用 UTC 更容易、更可靠,因此双启动 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 时间服务仍会将本地时间写入 RTC,因此使用此命令禁用 Windows 时间服务非常方便(如果在 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
    

答案2

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

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

$ timedatectl | grep local

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

# timedatectl set-local-rtc 1

如果您想恢复硬件时钟的 UTC,请执行以下操作:

# timedatectl set-local-rtc 0

答案3

您所在的时区是,目前为 EDT(东部夏令时间)。EDT 是世界标准时间减去四个小时,与您遇到的偏移量相同。

当这种情况发生在双启动系统上时,通常是因为一个操作系统认为硬件时钟跟踪本地时间,而另一个操作系统认为硬件时钟跟踪 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

(但这非常笼统;我写这个答案是为了专门针对你的处境,这是一个相当常见的问题。)

答案4

每次启动 Linux 或 Windows 时,我都会有 1 小时的差异。这是因为一个是 UTC,另一个是 RTC

修复我的ubuntu 20.04我用的是这个:

timedatectl set-local-rtc 1 --adjust-system-clock

就我而言回去到 UTC 你可以

timedatectl set-local-rtc 0 --adjust-system-clock

如果你想要去检查您正在使用的是,您可以输入: timedatectl

相关内容