2005-05-23 (Mon) [長年日記]
_ SEGV
仕事で書いているRailsアプリケーションのテストでSEGV。 どうも、viewでsyntax errorが起きている部分がまずいようだ。
ここで深入りすると仕事が進まないうちに一日が終わることがままある *1 ので、ぐっとこらえてruby-devに投げる。 *2 まつもとさんによって一瞬で修正。
_ linux-2.6.11.10
カーネルを2.6.11.10にアップグレードした。
前は2.6.9だったので、アップグレードは随分ひさしぶりだ。 最近は2.6も安定しているのでたいした苦労はないだろうと思っていたが、 大きな間違いだった。
_ tapデバイスのMacアドレス
会社のVPNは、OpenVPNでEthernet Bridgingを行っているのだが、前は tapデバイスのMacアドレスの先頭がかならず00:FFになっていたのが、 linux-2.6.11.10ではバラバラな値になるようだ。
dhcpd.confの設定で、
class "vpn-clients" { match if substring (hardware, 1, 2) = 00:FF }
のようにclassを設定していたのが効かなくなってしまってハマった。 とりあえず、
class "vpn-clients" { match if (substring (hardware, 1, 2) = 00:FF) or option dhcp-client-identifier = <自分のdhcp-client-identifier>; }
にしてしのいでいるが、subclass使った方がいいんだろうな、たぶん。
_ VMwareのモジュールのコンパイルに失敗
つづいてのトラブルはVMware。 VMwareのモジュールで使っていた関数が無くなってしまったようで、 コンパイルできなくなっていた。がーん。
<URL:http://knihovny.cvut.cz/ftp/pub/vmware/>から vmware-any-any-update90.tar.gz を取得して、
$ tar zxvf vmware-any-any-update90.tar.gz $ cd vmware-any-any-update90/ # ./runme.pl
で解決。
_ xfree85-driver-synaptics
今度は、tapはtapでもタッチパッドの方のトラブル。 どうも、タップとして判定されてしまうケースが妙に多い。 変なウィンドウががんがん開いてしまう。 もう勘弁してよ...。
何気なくdmesgしてみると、
ALPS Touchpad (Glidepoint) detected input: AlpsPS/2 ALPS TouchPad on isa0060/serio1
のような表示が。 あれ、ひょっとしてドライバが変わってる?
drivers/input/mouse/alps.cを見ると、
/* * ALPS absolute Mode ... * We used to send 'ges'tures as BTN_TOUCH but this made it impossible * to disable tap events in the synaptics driver since the driver * was unable to distinguish a gesture tap from an actual button click. * A tap gesture now creates an emulated touch that the synaptics * driver can interpret as a tap event, if MaxTapTime=0 and * MaxTapMove=0 then the driver will ignore taps.
というコメントを発見。 どうも、ハードウェアが発生させるタップイベントは普通のボタンクリックと 区別が付かないので、代りにソフトウェアでエミュレートしている、という ことらしい。
で、タップを無視するには、MaxTapTime=0とMaxTapMove=0を使え、って? 何だ、それ。 カーネルパラメータっぽくないな、と思って調べると、XF86Config-4の 設定のようだ。 synaptics用のXのドライバを使うのか。ふむふむ。
Debian的には、
$ sudo apt-get install xfree86-driver-synaptics
でインストール。楽勝。*1
Section "InputDevice" Identifier "Configured Mouse" Driver "synaptics" Option "CorePointer" Option "Device" "/dev/psaux" Option "Protocol" "auto-dev" Option "Emulate3Buttons" "true" Option "MaxTapTime" "0" Option "MaxTapMove" "0" Option "MinSpeed" "0.3" Option "MaxSpeed" "1.0" EndSection
のように設定して、無事タップを無効化することができた。
*1 実はXがxserver-xfree86-dri-trunkによってdivertされててハマったんだけど。