ari*_*nmz 44 windows linux time-zone ntp
自从我开始在 Windows 的双启动中使用 Linux 后,我注意到当我重新启动机器时,另一个操作系统上的时间是错误的,例如在 Linux 上是 12:00,然后我重新启动,在 Windows 上它是 18:00,并且当我检查 BIOS 时,RTC 设置为 18:00。由于我的时区是 -06:00 CST,我假设 Linux 只是将 RTC 的时间设置为 UTC 并根据时区重新计算时间,而 Windows 只是将 RTC 设置为本地时间。两者都使用相同的 NTP 服务器来同步时间。
问题是,哪一个在做正确的事情?我应该在哪一个上将时区设置设置为 UTC 以便在两者上都有正确的时间?
Aya*_*yan 73
我最近遇到了同样的问题,这就是我解决它的方法。您需要在两个操作系统中进行一些更改。
我首先从 Linux 开始。以 root 身份运行以下命令。
ntpdate pool.ntp.org
Run Code Online (Sandbox Code Playgroud)
如果设置不正确,这将更新您的时间。
现在使用此命令将硬件时钟设置为 UTC。
hwclock --systohc --utc
Run Code Online (Sandbox Code Playgroud)
现在启动到 Windows 并添加以下注册表。只需在记事本中使用以下代码创建一个 .reg 文件即可。保存并运行它。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
"RealTimeIsUniversal"=dword:00000001
Run Code Online (Sandbox Code Playgroud)
从下次启动开始,两个操作系统都会显示正确的时间。
Ken*_*Ken 17
两者都没有错,但使用 UTC 更正确。RTC 没有时区;这只是一个愚蠢的挂钟。如果您当地的时区遵守 DST(其中有多种口味,并且规则随意更改),那么每年两次,您必须去更改它。操作系统会为你做这件事,但如果 RTC 是 UTC,操作系统无论如何都会做 UTC-> 本地转换——为什么要摆弄时钟?此外,在 DST“回退”过渡期间,RTC 无法告诉您现在几点了!现在是 CDT 还是 CST 凌晨 1:30?
显然,Windows 8 支持RTC 的UTC。Windows 7 也有,但有问题。
当人们手动设置他们的 BIOS 时钟时,有一个更好的论据反对这一点,但基于服务器的时间现在更为普遍。
正常情况是 Linux 系统将 RTC(实时时钟)设置为 UTC,并根据时区数据和TZ
环境变量在用户空间转换为本地时间。这“不那么糟糕”,因为它使系统 RTC 保持单调递增,并在以后应用任何时区魔法,例如确保将来没有文件通常会有时间戳(这很容易每年至少发生一次,如果系统 RTC 设置为本地时间)。正如 Ken 指出的那样,RTC 本身没有时区的概念,只有时间。
正如您所发现的,当与通常不会以这种方式运行的系统进行双重引导时,这会导致问题,例如通常希望 RTC 设置为本地时间的 Microsoft 系列操作系统。是的,Windows NT(我认为实际上可以追溯到 NT 4)可以在 RTC 设置为 UTC 的情况下工作,但至少最后我认为它并不是真正受支持的配置,并且有许多警告。
在您的情况下,简单的解决方案可能是将 RTC 设置为本地时间,告诉您的 Linux 系统将 RTC 设置为本地时间(执行此操作的确切机制因发行版和发行版本而异,但显然在 Ubuntu 中您设置UTC=no
了 / etc/default/rcS),然后将操作系统配置为只有其中一个(最好是您使用最多的一个,因为在所有其他系统中显示的时间每年将不正确两次,直到它启动并有机会纠正它)处理夏令时更改。并忍受缺点,这应该可以在单用户系统上进行管理。
您还可以将 Windows 端设置为使用 UTC 作为时区并关闭 Windows 中的自动夏令时更改,并将 Linux 设置为使用 UTC 的 RTC 并根据其惯例显示转换后的时间。但是,这将导致 Windows 以 UTC 显示日期和时间,这可能不是您真正想要的。对于我们欧洲人来说,这不是什么大问题,他们最多与 UTC 相差三小时,但在美国可能更重要。如果您只是偶尔使用 Windows,并且您的主要操作系统是 Linux 或其他一些支持 RTC-UTC 的操作系统,那么这可能是一个更现实的选择。
归档时间: |
|
查看次数: |
12892 次 |
最近记录: |