鈴木です。
補足説明。
まず、ルールが干渉していると思ったのは、
/dev/lbp_1210 -> /dev/bus/usb/00?/00?
のリンクができるというので、
bus/usb を udev ルールの中から、
grep -r bus/usb *
とかやって、探してみました。
すると、
ACTION=="add", SUBSYSTEM=="usb_device", \
PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", \
NAME="%c", MODE="0644"
なんてルールが見つかったし、シェルを呼んでいるので、
これの処理が遅くなって干渉しているのかなと。漠然と。
...
次に、手元のプリンタ(PM-A870)の SUBSYSTEM を
$ udevinfo -q all -a -p `udevinfo -q path -n /dev/usb/lp0`
で見てみると、
SUBSYSTEM=="usb"
となっています。
ついでに、変なリンク先になっているのを、
$ udevinfo -q all -a -p `udevinfo -q path -n /dev/bus/usb/00?/00?`
と見てみると、
SUBSYSTEM=="usb_device"
となっていて、しかも、前者と同じ、
SYSFS{idProduct}=="0811"
SYSFS{idVendor}=="04b8"
が見えている。
/dev/bus/usb/* も きっと、udev が作ってんだろうし、
例のルールは、BUS=="usb" のを
SYSFS{idProduct}
SYSFS{idVendor}
でしか、見分けていないので、
# udevcontrol log_priority=debug
# /sbin/modprobe -r usblp; sleep 2;/sbin/modprobe usblp
で、/var/log/messages を観察してみると、
同時期に複数の udevd-event が動いていてその中に、
...
udev_node_symlink: creating symlink '/dev/pm_a870' to 'usb/lp0'
...
udev_node_symlink: link '/dev/pm_a870' points to different target 'usb/lp0', delete it
udev_node_symlink: link '/dev/pm_a870' points to different target 'usb/lp0', delete it
udev_node_symlink: creating symlink '/dev/pm_a870' to 'usbdev4.6_ep04'
udev_node_symlink: creating symlink '/dev/pm_a870' to 'usbdev4.6_ep85'
...
のような不気味なリンクを張っているのが確かにいる。
で、ためしに例のルールに、
SUBSYSTEM=="usb"
を追加
ACTION=="add", BUS=="usb", SUBSYSTEM=="usb", \
SYSFS{idProduct}=="0811", SYSFS{idVendor}=="04b8", \
SYMLINK+="pm_a870"
してみたら、そのような動きはログに記録されなくなった。
udev_node_symlink: creating symlink '/dev/pm_a870' to 'usb/lp0'
で、これが正解ではないかと...推測。
この内容が、宮脇さんのところでも効けば、
Complete かな?
--
Hiroshi Suzuki It's crucial qp
setter@xxxxxxxx to my (..)/
http://my.reset.jp/~setter/ Well-being - -
http://i-red.info/ ~~
Powered by Linux/DeleGate _____________*-_____