The setclock script
reads the time from the hardware clock, also known as the BIOS or the
Complementary Metal Oxide Semiconductor (CMOS) clock. If the hardware
clock is set to UTC, this script will convert the hardware clock's
time to the local time using the /etc/localtime
file (which tells the hwclock program which timezone the
user is in). There is no way to detect whether or not the hardware
clock is set to UTC, so this needs to be configured manually.
The setclock is run via udev when the kernel detects the hardware capability upon boot. It can also be run manually with the stop parameter to store the system time to the CMOS clock.
If you cannot remember whether or not the hardware clock is set to
UTC, find out by running the hwclock
--localtime --show
command. This will display what
the current time is according to the hardware clock. If this time
matches whatever your watch says, then the hardware clock is set to
local time. If the output from hwclock is not local time, chances
are it is set to UTC time. Verify this by adding or subtracting the
proper amount of hours for the timezone to the time shown by
hwclock. For example,
if you are currently in the MST timezone, which is also known as GMT
-0700, add seven hours to the local time.
Change the value of the UTC
variable below
to a value of 0
(zero) if the
hardware clock is not set to
UTC time.
Create a new file /etc/sysconfig/clock
by running the following:
cat > /etc/sysconfig/clock << "EOF"
# Begin /etc/sysconfig/clock
UTC=1
# Set this to any options you might need to give to hwclock,
# such as machine hardware clock type for Alphas.
CLOCKPARAMS=
# End /etc/sysconfig/clock
EOF
A good hint explaining how to deal with time on LFS is available at
http://www.linuxfromscratch.org/hints/downloads/files/time.txt.
It explains issues such as time zones, UTC, and the TZ
environment variable.
The CLOCKPARAMS and UTC paramaters may be alternatively set in the
/etc/sysconfig/init_params
file.