Red Hat Bugzilla – Bug 102612
Wrong time set upon boot if clock is set to local time
Last modified: 2014-03-16 22:38:08 EDT
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030313
Description of problem:
1. /usr is a separate partition
2. the hardware clock is set to store local time
3. local time is different from UTC
When booting, the rc.local script will read the clock configuration from
/etc/sysconfig/clock and will try to set the clock using 'hwclock --hctosys
--localtime' (which is correct).
In doing so, it will try to read the timezone file /etc/localtime. The problem
is that /etc/localtime is a link pointing to whithin /usr/share. If /usr (or
/usr/share) is a separate partition, it will not yet be mounted at this time in
the boot process and /etc/localtime will point to an unexisting location.
The result is that hwclock's access to /etc/localtime will fail with ENOENT and
it will default to UTC (for lack of timezone info). Thus, when setting the
system date, it will use the correct local time read from the hardware clock,
however it will think (wrongly!) that this is UTC time. Later on, when the
system boots, it will have access to the zoneinfo file and it will (wrongly!)
offset the time by the difference between the local time and UTC.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Find a system that mounts /usr as a separate partition
2. Set it up (using redhat-config-time) so that it stores local time in the
hardware clock and it uses a zone other than UTC.
3. Set the correct time.
4. Disable ntp.
Actual Results: Time (as reported by /bin/date) offset by difference between
local timezone and UTC. /sbin/hwclock reports the correct time.
Expected Results: Correct time.
One caveat: If the system is setup with NTP, the time is sometimes fixed later
in the boot process by ntpdate. This is witnessed by an entry in the system log
ntpdate: step time server 192.168.1.1 offset 14399.507052 sec
At other times, the ntp server refuses to start because the time difference is
NOTE: The file /etc/localtime actually belongs to the glibc package,
however, I am reporting this under initscripts since this is more of a
This is a since-fixed bug in redhat-config-date, in that it makes /etc/localtime
a symlink (it's not supposed to be).