在我的家用电脑上,我有两个磁盘,一个磁盘安装了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。)
我没有对此进行测试,但在几个地方建议这样做:
- Windows 10 是否支持 UTC 作为 BIOS 时间?在 superuser.com 上
- Gentoo Wiki:系统时间/与 Windows 双重启动
- Arch Linux wiki:Microsoft Windows 中的系统时间/UTC
当然,另一个选项是将 Linux 配置为假设硬件时钟为本地时间。对于 systemd,使用的命令似乎是timedatectl set-local-rtc 1
。但请注意,systemd 并不真正喜欢它,timedatectl
警告:
警告:系统配置为读取本地时区的 RTC 时间。无法完全支持该模式。时区更改和夏令时调整会产生各种问题。 RTC 时间永远不会更新,它依靠外部设施来维护。如果可能,请通过调用“timedatectl set-local-rtc 0”来使用 UTC 格式的 RTC。
如果/etc/adjtime
存在,则设置存储在那里(第三行)以供使用hwclock
公用事业。如果文件存在,Systemd 会更新该文件,但如果文件不存在,我不确定它将设置存储在哪里。
我也没有对此进行测试,对于夏令时的问题,我可能会尝试避免它。