您的位置:首页 > 其它

udev的简单用法举例

2015-04-01 15:15 309 查看
udev是kernel2.6中针对设备管理产生的新方式,udev可以通过sysfs下的/sys目录找到设备的相关信息,因此不需要事先把所有可能用到的设备文件在/dev中创建,而是动态灵活的支持热插拔功能,自动创建相关设备的设备文件,非常有弹性。
udev中的配置文件在/etc/udev/下,其中rule.d/目录里面是具体的规则文件(待会会重点讲解规则的书写),udev.conf是udev全局配置文件。
当用vim打开udev.conf文件的时候,会发现里面只有一条关于udev的log等级的内容



当然,我们可以在此conf文件里面写入其他内容,比如udev_root=/dir,就代表我们的设备文件可以在自己定义的目录里,默认是在/dev/下,没有特殊需求,一般不用加入这个条目。
下面重点讲解udev规则的写法,讲解之前我们考虑这样一个场景,比如我们发现一个IP-SAN的设备,比如ISCSI,因为ISCSI设备并不在本地服务上,所以可能存在每次连接ISCSI设备的时候,我们的设备名称不一样(第一次发现可能是/dev/sdb,第二次发现的时候可能叫/dev/sdc),这样会造成用户使用的时候出现设备不不一致的问题,或者当我们插入一个U盘的时候,我希望U盘的名字叫做myusb,而不再是系统分配的名称的时候,就需要书写规则,这也是udev带来的好处。那么我们所有的默认规则存放的路径就是在刚才提到的/etc/udev/rule.d/目录下



可以发现此规则命名的方式为: 数字-规则名.rules,因此我们自定义规则的名字可以把数字放的大一些,但不可以超过100,比如我们可以写一个规则叫做 99-myusb.rules
这其中有一些书写规则的格式和符号需要了解
格式:


符号: == 匹配键值对
= 赋值
+=追加赋值
:=赋值后不可以被覆盖
下面我们举个刚才的例子来掩饰,当插入一个U盘的时候,默认系统会生成一个/dev/sdX设备名
通过编写自己的规则,使得U盘插入后,可以生成一个自定义的设备名 如/dev/myusb
那么接下来有一个问题需要考虑,系统凭什么认为你插入的U盘就是myusb设备,而不是其他呢?这就需要为这个特殊的U盘找到一个(一些)仅仅属于它自己的属性(唯一性)
通过udevadm info -a(所有属性) -p (路径) 命令来查看设备的属性
udevadm info -a -p /sys/block/sdb
找到一些特殊的属性
下面给出简单的规则信息:



重新插入U盘,会生成一个/dev/myusb设备



当然,我们的规则中还可以加入更多内容,比如当插入此U盘后,有系统自动识别的名字叫做/dev/sdb,同时给这个设备做个链接,名字叫做/dev/myusb



重新插入U盘,观察到有/dev/sdb,同时有个链接到sdb上的/dev/myusb



当然,我们还可以加入更多内容,udev提供了丰富的资源,比如可以为增加的设备加入拥有人和拥有组的权限,可以增加一个设备的同时,立刻运行一个脚本等功能。
本文出自 “滕sir” 博客,请务必保留此出处http://naturelong1989.blog.51cto.com/627491/1627327
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: