Many Linux users still have Windows installed on their machines for some reason (playing games, using specialized Windows-only applications and so on). The coexistence of Windows and Linux on the same physical machine is called dual-boot.
One of the main issues when dual-booting is time configuration. It is because Windows is often known not to support RTC being in local-time. For this reason the common configuration is like this:
- RTC clock is set to local-time in BIOS Setup
- Windows is left untouched and still treats RTC as being in local-time
- Linux is reconfigured to treat RTC as being in local-time
However, for some time now, Windows can be configured to treat RTC clock as being in UTC time. It can be done by setting the following registry key
HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal
to a DWORD value 1 and restarting the Windows. After restart the time shown in Windows may be invalid and shifted by a few hours from the real time, so it needs to be corrected either in BIOS Setup or under Linux using date or ntpdate commands.
This is known to work generally fine in Windows Vista SP2 and Windows 7 but there are still some known issues:
- Windows is unable to modify RTC clock when RealTimeIsUniversal=1 which means that any time change done in Windows will not persist after the reboot. It is not a big problem because the persistent time change can be done directly in BIOS Setup or in Linux.
- The time may be shown wrongly after resuming a suspended or hibernated Windows.
- The old DOS application may show the time wrongly.
References:
1. IBM PC Real Time Clock should run in UT