2013年3月5日火曜日

Knoppix で timezone 合わせ

TinkPad 600E の Knoppix 7.0.3 へ ntpdate をインストールして時刻合わせをしようとしたらタイムゾーンの関係でマイナス9時間の時刻になってしまいました。ネット上を調べてみると、結構このタイムゾーンで苦しんでいる人が多いようでした。私もその一人になってしまいました。次の方法で解決しましたので、タイムゾーンで苦労されている読者さんがいらっしゃいましたら参考にしてみてください。

どうも Knoppix ではタイムゾーンを設定するのは「dpkg-reconfigure tzdata」のコマンドではありません。確かに「dpkg-reconfigure tzdata」で一時的に設定は可能なのですが、タイムゾーンの設定ファイル /etc/localtime が再起動のたびに消去されてしまって UTC 時刻となってしまいます。date コマンドで日時の最後に UTC と表示されて UTC 時刻の設定となっていることが判ります。

ではどこで設定するのか散々調べたところ、起動オプションでタイムゾーンを設定することが判明しました。Knoppix の標準インストールでは GRUB で起動オプションを設定することができます。仮想端末(LXTerminal)上で次のように設定変更しました。

sudo vi /boot/grub/menu.lst

kernel の項目のタイムゾーンの設定 tz=localtime を tz=Asia/Tokyo へ変更します。

kernel /boot/vmlinuz root=/dev/sda2 rootwait lang=ja apm=power-off nomce libata.force=noncq tz=Asia/Tokyo loglevel=1  rw

これでタイムゾーンは日本標準時となります。date コマンドで日時を表示させると最後に JST の文字が表示されるはずです。またタイムゾーンの設定ファイルの /etc/localtime も配置されています。

次にパソコン本体の時刻の設定です。

ここで Linux システムでの時刻の基本的な話をしておきます。時刻は三種類のものがあります。パソコン本体のハードウェア時刻、Linux システムの内部の UTC 時刻、そしてユーザーが使用するローカル時刻(ここでは日本標準時を指します)です。上記のタイムゾーンの話は Linux システム内部の UTC 時刻から ローカル時刻(日本標準時)へ変換する部分の設定でした。

ハードウェア時刻 ー Linux 内部の時刻 ー ローカル時刻
 日本標準時ーーーーーーUTC 時刻ーーーーー日本標準時

パソコン本体の時刻は UTC 時刻でもローカル時刻で設定してもそれを変換して Linux システム内部の UTC 時刻へ変換することができます。しかし Windows をインストールしている場合、ローカル時刻で設定しておく必要があります。 これは Windows がパソコン本体のハードウェアクロックがローカル時刻に設定されていることを前提としているからです。
そこでパソコン本体のハードウェア時刻から Linux 内部の UTC 時刻へ変換してくれる設定を行なっておきます。これは hwclock コマンドで次のように行います。

sudo hwclock --localtime

これで /etc/adjtime の設定ファイルの最終行に local の文字が追加されてパソコン本体のハードウェア時刻がローカル時刻(日本標準時)であることを Linux システムへ知らせてくれて、マイナス9時間の変換を行なって Linux 内部で使用する UTC 時刻へ合わせてくれます。

hwclock コマンドは Linu内部で使用している UTC 時刻をローカル時刻(日本標準時)へ変換してパソコン本体のハードウェア時刻へ書き込むことができます。一般的に ntpdate コマンドと一緒に次のように二つのコマンドを実行します。

sudo ntpdate-debian
sudo hwclock -w --localtime

これで時刻合わせが完了します。パソコン本体のハードウェア時刻は一般的なクォーツ時計と同様に時刻が微妙にずれてきます。一ヶ月に一度程度上記の時刻合わせを行うとよいと思います。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。