资源描述:
《【转】跟我一起写udev规则》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、【转】跟我一起写udev规则【转】跟我一起写udev规则2010-05-3113:16目录介绍关于本文档更新历史概念术语:devfs,sysfs,nodes,etc.为什么?内置固定命名设计编写规则规则文件和语义规则语法基本规则sysfs匹配属性设备级联结构字符串替换字符串匹配从sysfs中查找合适信息sysfs树udevinfo其他方法高级话题权限和所有权控制使用外部程序命名设备发生特定事件时运行外部程序环境交互另外选项例子USB打印机USB相机USB硬盘USB读卡器USBPalm导航仪CD/DVD驱动网卡测试和调试让你的规则跑起来udevtest作者及联系方式关于本文档udev面
2、向2.6以上的linux内核在用户空间提供动态的/dev下固定设备命名方案.之前的/dev实现:devfs现在已被废弃,udev成为继任者.udevvsdevfs是一个敏感的谈话内容,在进行比较之前你应该读一下这个文档(/kernel/hotplug/udev_vs_devfs).几年间你为之使用udev规则的设备发生改变了,如同规则自身的弹性一样.在现代系统中udev为系统外的类型设备提供了固定的命名方法,避免了为这些设备提供定制规则.但是一些用户仍然需要额外的定制级别.本文档假设你已经安装了udev并使用缺省配置运行ok.这通常通过你的linux发行版做到的.本文档不会覆盖规则书
3、写的方方面面,只集中介绍所有主要概念.更多细节信息可以在udev的man页中找到.本文档使用各种例子(一些完全是虚构的)来阐述观点和概念.不是所有语法都会显式的在附带文本中描述,请确信通过查看例子规则来获取完整的理解.更新历史(略)概念语义:devfs,sysfs,nodes等仅仅是基本介绍,可能并不完全准确.在典型的基于linux的系统中,/dev目录用来存储文件一样的设备节点,它们指向系统中特定的设备.每一个节点指向系统的一部分(一个设备),可能存在也可能不存在.用户空间应用程序可以使用这些设备节点跟系统硬件打交道,例如,X服务器"监听"/dev/input/mice来根据用户的
4、鼠标移动来移动可视鼠标指针.原来的/dev目录仅仅在设备可能在系统中出现时产生,因此/dev目录一般非常大.随之而来的devfs提供了一种易于管理的途径(注意它仅仅在硬件插入到系统中时产生/dev)以及其他功能,但系统会出现无法容易修复的问题.udev是一种新的管理/dev目录的方法,它的设计清除了以前的/dev实现的一些问题并提供了鲁棒的路径向后兼容.为了创建并命名系统中相应的/dev设备结点,udev需要依赖于根据用户提供的规则从sysfs中得到的匹配信息.本文着重规则书写的过程,udev相关的任务由用户自己完成.sysfs是2.6内核中一个新的文件系统,它由内核管理,并导出当前
5、系统中插入的设备基本信息.udev可使用这些信息创建对应的硬件设备结点.sysfs挂载在/sys下而且是可浏览的.你可能很希望在使用udev之前刺探下存储在那儿的有关文件.本文中我将交替使用/sys和sysfs术语.为什么?udev规则具有弹性非常强大,这里是一些你使用规则可以达到的结果:1.重命名设备节点的缺省名字为其他名字2.通过创建符号链接到缺省设备节点来提供一个可选的固定的设备节点名字3.基于程序的输出命名设备节点4.改变设备节点的权限和所有权5.但设备节点被创建或删除时(通常是添加设备或拔出设备时)执行一个脚本6.重命名网络接口当存在的特定设备没有设备节点时,这不是书写规则
6、的工作范围.即使没有匹配的规则,udev也会利用内核提供的缺省名字来创建设备节点.拥有固定命名设备节点有很多好处.假设你有两个USB存储设备:一个数码相机,一个是USB闪存盘.这些设备通过被赋予/dev/sda和/dev/sdb设备节点,准确的赋值取决于它们连接到系统的顺序.这可能为一些用户造成麻烦,如果每个设备每次都可以固定命名,比如/dev/camera和/dev/flashdisk,用户就会获益.内置固定命名方法udev为系统外的一些设备类型提供了固定命名,这是一个很有用的特征,在某些情况下意味着你不用书写任何规则.udev为存储设备在/dev/disk目录下提供了系统外命名方
7、法.要查看它为你的存储硬件创建的固定命名,你可以使用下列命名:#ls-lR/dev/disk所有存储类型都可以这么用.例如udev为我的根分区创建了固定命名链接:/dev/disk/by-id/scsi-SATA_ST3120827AS_4MS1NDXZ-part3.但我插入我的USB闪存盘udev就会创建另外一个固定命名节点:/dev/disk/by-id/usb-Prolific_Technology_Inc._USB_Mass_Storage_Dev