Kenji Arisawa E-mail: arisawa@aichi-u.ac.jp Aichi University Kurozasa 370, Miyoshi-cho Aichi, Japan http://ar.aichi-u.ac.jp 2001/06/01 改訂
/adm/timezone/local
で決定され、日本に合わせるには
term% cd /adm/timezone term% cp Japan localを実行すればよい。
しかしながら、スタンドアロンのPCが他のOSと共存している場合には問題が発生する。 例えばWindow95ではMSDOSの時刻はローカルタイムである。このような場合にはPlan9側で工夫をすることができる。
term% cat local JST 32400 JST 32400となっているであろう。これを
JST 0 JST 0に変更すればよい。
/adm/timezone/local
を基に決定される。日本であれば D = B + 32400 である。つまり時刻 B より 9 時間早い。
"ls -l" コマンドで表示されるファイルの作成/改訂時刻はこれに基づく。
また /sys/log/ のファイルもこの時刻を採用している。
Plan9 の時刻合わせの問題はファイルサーバの隠れた変数(時刻B)を抜きに理解できない。なぜファイルサーバの時刻が変なのであろうか?
ファイルサーバは/adm/timezone/local
を見ていないのである。そのもとで早朝5時にバックアップをとるために極めて安直な「解決法」が採られたと推定できる。即ち特定の地域に合わせてファイルサーバの時刻が決定されるようにパッチが充てられたのだろう。
問題は以下のように解決すべきであろう。
/adm/timezone/local
によって決定する。
plan9.ini
に環境変数 localtime を追加し、ファイルサーバの時刻 C を時刻 B とこの変数によって決定する。
筆者はとりあえず(安易なやり方で)日本に合わせてファイルサーバの時刻が決定されるようにパッチをあてた。即ち、
/sys/src/fs/port/time.c
を以下のように変更した。
変更前: static struct { short minuteswest; /* minutes west of Greenwich */ short dsttime; /* dst correction */ } timezone = { 5*60, 1 };
変更後: static struct { short minuteswest; /* minutes west of Greenwich */ short dsttime; /* dst correction */ } timezone = { -9*60, 0 };
こうして変更した 9pcfs をファイルシステムのブートフロッピーにコピーする。
さて、これをブートするとびっくりする事が起きた。
ファイルシステムの整合性が取れないと言って異常終了するのだ!!
うーむ、確かに... 時間に関して以前のシステムと整合性がとれなくなっている!
筆者のは pseudo-WORM なのだから...
そこで納得して、config で
recover mainを実行して正常に再出発できた。
さて以上のパッチをあてると以下のようになる。 1. ファイルサーバの時刻 A をグリニッジ標準時に合わせる。即ち日本時間より9時間遅らせる。 2. するとファイルサーバの時刻 C は A より9時間あるいは8時間進んでいる。 日本時間と等しくない事があるが気にしなくてもよい。1時間の違いが発生する事があるのは、アメリカの夏時間が想定されているからである。 3. 以上によって CPU サーバと端末の時刻は A による設定から 9 時間すすみ、日本時間に合っている。
日本でもサマータイム制度を勧める議論があるが、反対しましょう。このような制度を導入すると OS に複雑極まるパッチを当てなくてはならなくなります。誰が得をして誰が損をするかは明らかです。夏になったら早く出社すべきであると考えるのは各社の自由ですが他人に強制せずに単に出勤時間を各社の判断で変更すればよいだけです。