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