setclock
スクリプトはハードウェアクロックから時刻を読み取ります。 ハードウェアクロックは BIOS クロック、あるいは CMOS
(Complementary Metal Oxide Semiconductor) クロックとしても知られているものです。
ハードウェアクロックが UTC に設定されていると setclock スクリプトは /etc/localtime
ファイルを参照して、ハードウェアクロックの示す時刻をローカル時刻に変換します。 /etc/localtime
ファイルは hwclock
プログラムに対して、ユーザーがどのタイムゾーンに位置するかを伝えます。 ハードウェアクロックが UTC
に設定されているかどうかを知る方法はないので、手動で設定を行う必要があります。
setclock スクリプトは udev によって起動されます。この時というのはブート時であり、カーネルがハードウェアを検出する時です。 停止パラメータを与えて手動でこのスクリプトを実行することもできます。 その場合 CMOS クロックに対してシステム時刻が保存されます。
ハードウェアクロックが UTC に設定されているかどうか忘れた場合は hwclock --localtime --show
を実行すれば確認できます。 このコマンドにより、ハードウェアクロックに基づいた現在時刻が表示されます。
その時刻が手元の時計と同じ時刻であれば、ローカル時刻として設定されているわけです。 一方それがローカル時刻でなかった場合は、おそらくは
UTC に設定されているからでしょう。 hwclock
によって示された時刻からタイムゾーンに応じた一定時間を加減してみてください。 例えばタイムゾーンが MST であった場合、これは GMT
-0700 なので、7時間を加えればローカル時刻となります。
ハードウェアクロックが UTC 時刻として設定されていない
場合は、以下に示す変数 UTC
の値を 0
(ゼロ) にしてください。
以下のコマンドを実行して /etc/sysconfig/clock
ファイルを新規に作成します。
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
LFS において時刻の取り扱い方を示した分かりやすいヒントが http://www.linuxfromscratch.org/hints/downloads/files/time.txt
にあります。 そこではタイムゾーン、UTC、環境変数 TZ
などについて説明しています。