Created on Dec, 10th, 2009
Science the hardware clock does not have a time zone, the interpretation of that depends on operation system. By default, Linux and MacOS treat it as UTC time, but Windows treats it as Local time. This will makes the time wrongly show in one OS when you have multiple OS installed on a machine.
To solve or avoid this problem, here are three approaches.
Make Windows use UTC
Note: This method is only tested under Windows XP.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation "RealTimeIsUniversal"=dword:00000001
Problems
After setting this, I could no longer update windows time from time.windows.com, but
time.mit.edu
worked.
This method makes the Windows to use UTC at boot time, but after the system run a couple of hours or resume from hibernate, the time goes wrong again.
I don't know how to solve this problem and I guess the following method can solve part of the problem.
Change the default synchronization interval from 7 days to 2 hours, to adjust your system time BEFORE it goes wrong.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient set SpecialPollInterval to 7100
It is 100 seconds less than 2 hours. Default value is 604800 seconds, which is 7 days.
But I don't think this can solve the wrong time problem after hibernation.
Make Linux use 'Local' time
Edit /etc/default/rcS, add or change the following section
# Set UTC=yes if your system clock is set to UTC (GMT) UTC=no
Reboot to to make it into effect
Make Linux stop updating hardware clock
Ubuntu 9.10 use upstart to handle some daemons.
There two configure files handle the hardware clock synchronization daemon:
/etc/init/hwclock.conf and /etc/init/hwclock-save.conf
The first one read time from hardware clock, and the second one write back time to it.
you can disable them by rename them to xxx.conf.anyWordExceptConf
mv /etc/init/hwclock-save.conf /etc/init/hwclock-save.conf.disabled
I didn't see any effect of disabling hwclock.conf, so I just leave it there untouched.
Science the hardware clock maybe not UTC, when you boot from Ubuntu, the time may be wrong for a while until you got the Internet connected, then the time will be updated to the ntp server. If you want to connect to Internet before you login in a wireless environment, check here.
References
Ubuntu time https://help.ubuntu.com/community/UbuntuTime
upstart http://upstart.ubuntu.com/index.html
wireless connection http://ubuntuforums.org/showthread.php?t=318539