From Bugzilla Helper: User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030313 Description of problem: Conditions: 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): initscripts-7.14-1 How reproducible: Always 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. 5. Reboot 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. Additional info: 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 file, e.g: ntpdate[798]: 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 too large. NOTE: The file /etc/localtime actually belongs to the glibc package, however, I am reporting this under initscripts since this is more of a rc.sysinit problem.
This is a since-fixed bug in redhat-config-date, in that it makes /etc/localtime a symlink (it's not supposed to be).