System Clocks in a Mixed UEFI Environment

On a UEFI enabled platform with multiple heterogenious x86-based operating systems, you can get oddball results from your system clocks if you are not careful. This is because Microsoft Windows by default instructs the hardware clock to store the time as localtime and Linux by default stores the time as UTC (Coordinated Universal Time.)

Localtime is dependent on the current time zone, while UTC is a global time standard and is independent of time zone values. Though slightly different, UTC is also often known as GMT.

If you are on a UEFI platform on which there is also a Microsoft Windows installation, the simplist way to handle things is to change the default hardware clock settings on the Linux installation(s) to store time as localtime using the hwclock utility.

For example, on OEL 6.3:

# cat /etc/adjtime
0.000000 1350246059 0.000000

# hwclock -w --localtime

# cat /etc/adjtime
0.005633 1350331192 0.000000

This method will work for any distribution the is downstream from Fedora or Red Hat.

Note that in very old versions of Red Hat Linux, you edited /etc/sysconfig/clock and changed the UTC line to either UTC=true or UTC=false as appropriate.

Comments are closed.