使用固定设备节点名操作设备

2009-05-13 11:53:02来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折


eric.siroh(AT)gmail.com
FreeBSD-6之后,采用
[url=javascript:;]devfs[/url]
管理
[url=javascript:;]设备[/url]
[url=javascript:;]节点[/url]
,设备名称在设备联机时动态创建,增加了灵活性。但也带来另一些问题:一些外部设备,如
[url=javascript:;]USB[/url]

PCCard等设备并不总是在开机之前就连接到计算机,如果存在相同类型的设备,这些设备的在/dev的节点名称会因为设备连接到计算机的先后顺序而发生
变化,这会给一些应用程序的设置造成一些不便。然而,正是因为devfs的灵活性,也带来很好的方法来支持这些外部设备使用固定设备节点名称。
这里通过两台USB接口打印机EPSON Stylus CX3700、Brother FAX-2820的设置来说明这一方法。
查看devfs基本配置
首先,查看/etc/devd.conf文件,确定有关的基本配置情况
#more /etc/devd.conf
...
options {
# Each directory directive adds a directory the list of directories
# that we scan for files.  Files are read-in in the order that they
# are returned from readdir(3).  The rule-sets are combined to
# create a DFA that's used to match events to actions.
directory "/etc/devd";
directory "/usr/local/etc/devd";
pid-file "/var/run/devd.pid";
# Setup some shorthand for regex that we use later in the file.
#XXX Yes, these are gross -- imp
set scsi-controller-regex
"(aac|adv|adw|aha|ahb|ahc|ahd|aic|amd|amr|asr|bt|ciss|ct|dpt|\
esp|ida|iir|ips|isp|mlx|mly|mpt|ncr|ncv|nsp|stg|sym|trm|wds)\
[0-9]+";
};
...
通过这两行:
directory "/etc/devd";
directory "/usr/local/etc/devd";
得知用户定制配置文件目录为/etc/devd,/usr/local/etc/devd。如果没有相应的目录,自行建立就可以了。当然也可以自行修改,不过不建议修改。
获得设备信息
在编写配置文件之前,需要得到设备的必要参数。可以通过在前台运行调试模式的devd来查看。现在不要连接设备,运行
#/etc/rc.d/devd stop
#/sbin/devd -Dd
屏幕上会出现一些信息,表明devd已经运行了。这时把设备连接到计算机,然后再拔掉设备。这个过程中屏幕会有很多输出,只需要查看以Processing event开头信息。以下两行示例是U盘的插拔发生的信息。
Processing event '+umass0 vendor=0x1043 product=0x8012 devclass=0x00 devsubclass=0x00
[url=javascript:;]release[/url]
=0x0100 sernum="" intclass=0x08 intsubclass=0x06 at port=1 interface=0 vendor=0x1043 product=0x8012 devclass=0x00 devsubclass=0x00 release=0x0100 sernum="" intclass=0x08 intsubclass=0x06 on uhub1'
Processing event '-umass0 vendor=0x1043 product=0x8012 devclass=0x00 devsubclass=0x00 release=0x0100 sernum="" intclass=0x08 intsubclass=0x06 at port=1 interface=0 vendor=0x1043 product=0x8012 devclass=0x00 devsubclass=0x00 release=0x0100 sernum="" intclass=0x08 intsubclass=0x06 on uhub1'
umass0是devfs为U盘在/dev下自动生成的设备节点,+umass0表示umass0连接上计算机了,-umass0表示umass0设备被拔出。
我们需要得到设备信息主要是vendor,product,sernum三个参数。vendor是制造商的代码,product是设备型号代码,sernum是设备的序列好,这三个参数基本上应该可以确定唯一一台设备。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:在FreeBSD上使用tplink无线网卡

下一篇:FreeBSD 加密盘的使用