7.4. Setclock スクリプトの設定

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 などについて説明しています。