一月の日記/メモ

 

2002.01.01(火) 00:23:16
2001年の目標の一つは、Linux を全部ソースからインストールしてみる。というものだったが、これについては概ね目標を達成出来たと思う。

※1 NVIDIAのドライバだけはソースではなく、オブジェクトファイルの配布になっている。
※2 他に 市販ソフトの ATOK-X を入れている。
以上の物を、一つ一つ configure & make して、まっさらなハードディスクに入れ、設定した。もちろんそのためには別に稼働するシステムが必要なわけだが、今回は普通に Linux 上で作業した。(使った Linux システムは、Slackware 3.2 辺りからいろいろインストールしてかなりぐちゃぐちゃしたものになっていたので、それを解消することが出来たという意味でもやった甲斐があると思う。)
一番大変なのはインストールするべき物のソースの一次配布元を調べるところで、普通に検索しても .rpm の説明ばかりひっかかるので、Debian等 にお伺いを立てないといけない物も多かった。
ソースとmake後のオブジェクトファイルとバイナリをまとめて置いてあるディレクトリは、2.9GBytes もあり、今の様な速い回線や、速いCPUや、賢い configure が無かった頃は相当大変だったろうなぁ、と思った次第。

2002.01.12(土) 19:29:04
ずっとできなくて、XFree86 4.1.0 でもやっぱりできなかった、IntilliMouse Explorer の5ボタン対応がなぜ出来ないかわかった。
PS/2 マウスの通信プロトコルについて度々探してきて見つけられないままだったが、今回は、
http://govschl.ndsu.nodak.edu/~achapwes/PICmicro/mouse/mouse.html
というのを見つけることが出来た。これによると、まず IntilliMouseモード にして、それから 5ボタンモード にしないといけないとあったので、
XFree86-4.1.0/xc/programs/Xserver/hw/xfree86/input/mouse/mouse.c を、

***************
*** 974,980 ****
  
      case PROT_EXPPS2:         /* IntelliMouse Explorer */
        {
!           static unsigned char s[] = { 243, 200, 243, 200, 243, 80, 242 };
  
            param = s;
            paramlen = sizeof(s);
--- 974,980 ----
  
      case PROT_EXPPS2:         /* IntelliMouse Explorer */
        {
!           static unsigned char s[] = {243, 200, 243, 100, 243, 80, 243, 200, 243, 200, 243, 80, 242 };
  
            param = s;
            paramlen = sizeof(s);
こんな風に書き換える。mouse ディレクトリで、make すると mouse_drv.o だけがリビルドされるので、それを、 /usr/X11R6/lib/modules/input/mouse_drv.o に置いてやったところ、ちゃんと使えるようになった。 XF86Config の設定は、こんな感じ。
Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Device" "/dev/misc/psaux"
        Option      "Protocol" "ExplorerPS/2"
        Option      "Buttons" "7"
        Option      "ZAxisMapping" "6 7"
EndSection
大抵のアプリケーションは、ボタン 4 と 5 をホイールだと思っているので、 xmodmap -e "pointer = 1 2 3 6 7 4 5" とかしてやる。これで、ホイールを ボタン 4,5 に、X1/X2ボタンを ボタン 6,7 にすることができる。 xfree86.org のCVSレポジトリで調べてみると、上記と同様の変更が、mouse.c の Revision 1.46 で行われているので、 次のリリースでは、普通に使えることだろう。

残る問題はボタン 6,7 に対応したアプリケーションがなにもないという事だ。

2002.01.20(日) 13:21:24
B's Recorder GOLD を 3.16 にアップデートしたら、「,」を含むファイル名に対応していた。いつのまに。これで、CVS リポジトリでひっかかったりしないし、データシート等「,」を含む名前を付けたくなるものも無理して修正する必要がなくなってすばらしい。

2002.01.22(火) 13:51:35
常時稼働のサーバマシンが半日程止まっていたもよう。ビデオデッキの時計がリセットされていることから見るに、漏電遮断器が落ちた模様。BIOS の設定で、電源供給が断たれた後に復帰するようになっていなかったので、そのまま再起動されなかったためだ。ついでなのでちゃんと設定すべき所を設定して、sync 後、実際に電源を元から断っても正しく再起動して、サーバとして機能する事を確認した。

2002.01.24(木) 12:50:35
NTT東日本が公開している、 の IP 通信網サービスのインターフェースという技術参考資料を見ていたら、 PPPoE のセッションを正しく終了するには、PADT というパケットを発行しなければならないというところが、気にかかった。 サーバ機のフレッツADSLの ppp 接続は、pppd が正常終了したときでも、 次の接続を確立できるまで、5分以上待たされるのはこれと関係あるのでは? と。
早速調べてみると、rp-pppoe-3.3 では、-e オプションと -k オプションの組み合わせで、PADT だけを発行する事ができることが分かった。一方、使っている Debian(potato) の pppoe-1.0-1 には、そういうオプションがない。で入れ替えて試す前にちょっと実験してみた。
tcpdump -i eth1 とした上で、適当な所を ping をしてみる。

03:49:47.700827 HH:HH:HH:HH:HH:HH MM:MM:MM:MM:MM:MM 8864 106: 
                         1100 ab56 0056 0021 4500 0054 a5c2 0000
                         4001 9263 cae0 ec78 cae0 c049 0800 fae9
                         ad1f 0000 cb05 4f3c 40b1 0a00 0809 0a0b
                         0c0d 0e0f 1011
03:49:47.780554 MM:MM:MM:MM:MM:MM HH:HH:HH:HH:HH:HH 8864 106: 
                         1100 ab56 0056 0021 4500 0054 db2b 0000
                         ff01 9df9 cae0 c049 cae0 ec78 0000 02ea
                         ad1f 0000 cb05 4f3c 40b1 0a00 0809 0a0b
                         0c0d 0e0f 1011
すると、上の様なパケットが得られる。 これを確認したところで、poff して pppd を終了する。tcpdump の観測で、この時点でなにもパケットを送っていないことが分かった。また、相手からりパケットは依然として送られてきていることが分かった。
ここで、新しい pppoe で以下のようにしてみる。
pppoe -I eth1 -e 43862:MM:MM:MM:MM:MM:MM -k
(セッションID は10進で指定する。)
すると、相手からのパケットが送られて来なくなった模様。pon して pppd を起動すると、すぐに接続が確立された。やっぱりそうだったのか。

適当に、.deb ファイルをでっち上げて、pppoe-1.0-1 と置き換えた。 rp-pppoe-3.3 では、pppd からの要求で切断する時にも、PADT を送るようになっている。

P.S. PPPoE は、セッションステージ では、ブロードキャストをしないので、スイッチングハブ等に相乗りしても問題ないようだ。モデムが一台である限りは。

十二月の日記/メモ