当我启动 Windows 磁盘时,CentOS 7 将我的电脑时间更改为 +4 小时

当我启动 Windows 磁盘时,CentOS 7 将我的电脑时间更改为 +4 小时

在我的家用电脑上,我有两个磁盘,一个磁盘安装了windows10,另一个磁盘安装了CentOS 7.9。

它是 Asrock 主板,有一个引导 GUI,可以让我选择要引导的磁盘,并且我可以根据需要在 Windows 和 Linux 之间来回切换。

当我运行 CentOS 并且时间正确时,我重新启动并进入 Windows,我的时间提前了 +4 小时......这样就是 UTC 时间。 { 我位于美国东北部,夏令时为 UTC - 4 } 在 Windows 中,我单击同步时间,它会更正,但每次使用 CentOS linux 磁盘后,我都必须手动执行此操作。

我该如何纠正这个问题?纠正此问题以使 Windows 和 Linux 中显示的本地时间正确的最佳方法是什么? 我怀疑 CentOS 将我的 BIOS 时钟设置为 UTC 时间?

答案1

Windows 喜欢默认将硬件时钟保留为本地时间,而 Linux 系统更喜欢将其保留为 UTC。将时钟保持为 UTC 更好,因为它可以更轻松地进行夏令时转换,而无需跟踪哪个硬件时钟现在是当地时间。

幸运的是,Windows 似乎也可以配置为 UTC。控制它的注册表项似乎HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal应该设置为1。 (如果不存在,请先创建。在64位系统上它应该是QWORD,在32位系统上它应该是DWORD。)

我没有对此进行测试,但在几个地方建议这样做:


当然,另一个选项是将 Linux 配置为假设硬件时钟为本地时间。对于 systemd,使用的命令似乎是timedatectl set-local-rtc 1。但请注意,systemd 并不真正喜欢它,timedatectl警告:

警告:系统配置为读取本地时区的 RTC 时间。无法完全支持该模式。时区更改和夏令时调整会产生各种问题。 RTC 时间永远不会更新,它依靠外部设施来维护。如果可能,请通过调用“timedatectl set-local-rtc 0”来使用 UTC 格式的 RTC。

如果/etc/adjtime存在,则设置存储在那里(第三行)以供使用hwclock公用事业。如果文件存在,Systemd 会更新该文件,但如果文件不存在,我不确定它将设置存储在哪里。

我也没有对此进行测试,对于夏令时的问题,我可能会尝试避免它。

相关内容