In a dual-boot system, I usually use FreeBSD 9 but when I boot to Windows 7 my system time in both OS automatically change and show incorrect time. What's the problem and How can I solve it?
A typical BIOS PC has a clock which stores the time without a timezone indication. Different operating systems have different conventions: some require the clock to store UTC, others require the clock to store the local time. Dual boot between systems that require different conventions is a problem.
Older versions of Windows had no notion of a display time that is separate from the local time. Hence you need to set the hardware clock to the time you want displayed in Windows. I don't know if this has been fixed in Windows 7.
Unix systems have a per-user setting for the time zone, and use UTC internally. Most unix variants like to use UTC the clock, but unices designed for PCs often provide a way to cohabit with Windows. On FreeBSD, run
adjkerntz to update this setting. You can tell whether the hardware clock is using UTC or local time: if
/etc/wall_cmos_clock exists, then the hardware clock is assumed to use local time.
Note that if you live in a time zone with daylight savings time, and your hardware clock uses local time, your multiple operating systems may compete to reset the clock when DST starts or ends. This is one reason why setting the hardware clock to UTC is preferable: you should set the hardware clock to local time only if you use an operating system that absolutely requires it.