当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 修复:计算机(服务器)重新启动后时钟恢复为错误时间

作者:精品下载站 日期:2024-12-14 22:53:21 浏览:13 分类:玩电脑

修复:计算机(服务器)重新启动后时钟恢复为错误时间


在本文中,我们将考虑为什么笔记本电脑/计算机/服务器关闭、重新启动或从休眠状态恢复后系统时钟显示不正确的时间和日期。每次时间都会重置,您必须手动设置。我们将详细讨论最典型的案例:BIOS 电池耗尽,以及涉及一台计算机上的 Windows/Linux 双启动的更有趣的案例,以及采用 Windows Server 操作系统的 HPE ProLiant G9 /G8 服务器上的固件错误。

由于 BIOS/CMOS 电池电量不足,系统无法保存数据/时间

“为什么我的计算机在重新启动后会重置时间和日期?”这个问题的典型答案” 是 BIOS (CMOS) 电池电量消耗。该电池负责在计算机或笔记本电脑拔掉插头时保持 BIOS/UEFI 设置,并提供内置硬件时钟的自主操作。

如果电池电量耗尽,当主板未通电时,BIOS 将无法保留其设置,所有设置都会被重置,包括当前日期和时间。如果您的计算机很旧,则电池很可能没电了。我们强烈建议更换它。这并不难,而且这个过程不需要任何特殊的工程技能。在大多数家庭甚至企业设备中,BIOS 使用标准 3V CR2032 电池。

[玩转系统] 修复:计算机(服务器)重新启动后时钟恢复为错误时间

如果更换电池没有帮助,请检查用于重置 BIOS 设置的跳线的状态(跳线位于电池槽附近,并标记为 CMOS/CLEAR/RESET)。有人可能将其留在重置位置。因此,每次主板通电时,BIOS 设置都会重置。将跳线移至正常位置。

下一个选项是更新主板的 BIOS 固件。在硬件供应商的网站上了解如何操作。较新的固件通常修复了不同的错误。

Windows:与 time.windows.com 设置时钟同步

如果您在Windows中的日期/时间设置不断变化,首先您应该检查当前时区设置以及与外部时间服务器的时间同步参数。在 Windows 10 中,您可以在控制面板 -> 时钟和区域 -> 日期和时间中查看当前时间设置。在此示例中,您可以看到指定了时区 UTC + 01,并且启用了夏令时。

[玩转系统] 修复:计算机(服务器)重新启动后时钟恢复为错误时间

提示。您可以使用 tzutil 工具或 PowerShell 从命令提示符在 Windows 中设置时区。

如果您的计算机未加入AD域,请检查其与外部时间源(NTP时间服务器)的时间同步设置。为此,请单击Internet时间选项卡,并确保设置与time.windows.com服务器自动同步。

[玩转系统] 修复:计算机(服务器)重新启动后时钟恢复为错误时间

对加入 AD 域的计算机的时间同步进行故障排除

如果您的计算机属于Active Directory域,您需要了解AD域中时间同步的架构。

Active Directory 域中使用以下时间同步方案:

  • PDC模拟器的FSMO角色所属的AD林中的根域控制器是该域中所有其他DC的时间源;

  • 其他DC与PDC同步时间;

  • 普通域成员(服务器和工作站)根据AD拓扑与最近的可用域控制器同步时间。

根 PDC 可以与外部源和自身同步其时间(默认情况下)。

您可以使用以下命令查找具有 PDC 角色的域控制器:

netdom /query fsmo

要在 PDC 上配置与外部 NTP 服务器的时间同步,请使用以下命令。

配置外部时间源:

w32tm /config /manualpeerlist:"0.nl.pool.ntp.org,0x1 1.nl.pool.ntp.org,0x1 2.nl.pool.ntp.org,0x1 3.nl.pool.ntp.org,0x1"

使该 DC 成为客户可靠的时间源:

w32tm /config /reliable:yes

重新启动 w32 时间服务器以将 DC 时间与 nl.pool.ntp.org 时间服务器同步:

net stop w32time && net start w32time

您可以查看同步源和状态:

w32tm /query /peers

以手动模式启动同步:

w32tm /resync /rediscover

Windows 和 Linux 在双启动时显示不同的时间

我们应该分别考虑在双启动配置的计算机上安装两个操作系统(Windows 和 Linux)的情况。您可能会遇到这样的问题:启动到另一个系统后(在Windows之后启动到Linux)时间比实际时间提前或晚了几个小时。

Windows 和 Linux 对 BIOS 时间的处理方式不同。他们使用两种不同的时间格式:UTC本地时间

GNU/Linux 操作系统(包括 Mac OS X)假定 BIOS 中的时间采用 UTC 格式 (GMT)。因此,在启动时,Linux 通过添加(或分散)用户选择的当前时区的偏移量来转换 UTC 时间。这意味着为了获得雅典时区UTC+2的当地时间,Linux将增加2个小时。

Windows认为BIOS中的时间以本地时间格式保存,如果您指定了新的时区或与外部源同步时间,系统将对BIOS中的本地时间做出相应的更改。 Linux(在我的例子中是 Ubuntu)认为 BIOS 中的时间以 UTC 格式指定,并添加了额外的时区偏移。这就是从 Linux 切换到 Windows 时时间出错的原因,反之亦然。

要修复此问题,您应该让 Windows 在 RealTimeIsUniversal 注册表参数中使用 UTC 时间格式。

reg add "HKLMACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 1 /f

[玩转系统] 修复:计算机(服务器)重新启动后时钟恢复为错误时间

提示。在64位Windows版本中,您需要创建QWORD类型的参数而不是DWORD类型的参数:

reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1

另外,请在 Windows 中禁用与 Internet 的时间同步,因为每次更新 Windows 都会将 UTC 时间重置为本地时间。

sc config w32time start= disabled

重新启动 Windows。

或者你可以让 Linux 使用本地时间。在 Ubuntu 15.04 或更高版本中,您可以使用 timedatectl 工具:

timedatectl set-local-rtc 1

[玩转系统] 修复:计算机(服务器)重新启动后时钟恢复为错误时间

配备 Windows Server 的 HPE 服务器:重新启动后系统时间偏移

我的一位远程客户在运行 Windows Server 2008 R2/2012 R2 的 HPE DL/ML Gen9 服务器上更改时区后遇到了一个有趣的问题。事实证明,在 HP ProLiant Gen9 服务器(以及其中一台 HP ProLiant DL580 Gen8 服务器)上更改系统时间或时区时,系统时间未保存,并在重新启动后重置为之前的时间。问题发生在服务器上,Windows Server 在传统模式下启动(使用本机 UEFI 启动,不存在任何时间更改问题)。

系统日志中出现以下事件:

The system time has changed to ‎2019‎-‎01‎-‎29T12:12:28.500000000Z from ‎2019-‎01‎-‎29T13:12:27.923115700Z.
Change Reason: System time synchronized with the hardware clock.

作为此问题的解决方案,HP 建议将 ROM 版本更新到至少 1.5。这是基于 ROM 的设置实用程序 (RBSU) 的版本,没有时间重置错误。

或者作为解决方案,您可以设置 BIOS 为 Windows 提供 UTC 系统时间(而不是本地时间)。为此,正如我们上面已经提到的,您必须在注册表项 HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation 中创建一个名为 RealTimeIsUniversal 和值 1 的参数。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯