1. 什么是udev?udev 以守护进程的形式运行,通过侦听内核发出来的 uevent 来管理
/dev
目录下的设备文件。不像之前的设备管
理工具,udev 在用户空间 (user space) 运行,而不在内核空间 (kernel space) 运行。
2. 使用 udev 的好处:
- 动态管理:当设备添加 / 删除时,udev 的守护进程侦听来自内核的 uevent,以此添加或者删除
/dev
下的设备
文件,所以 udev 只为已经连接的设备产生设备文件,而不会在 /dev
下产生大量虚无的设备文件。 - 自定义命名规则:通过 Linux 默认的规则文件,udev 在 /dev/ 里为所有的设备定义了内核设备名称,比如
/dev
/sda、/dev/hda、/dev/fd
等等。由于 udev 是在用户空间 (user space) 运行,Linux
用户可以通过自定义的规则文件,灵活地产生标识性强的设备文件名,比如 /dev/boot_disk、/dev/root_disk、
/dev/color_printer
等等。 - 设定设备的权限和所有者 / 组:udev 可以按一定的条件来设置设备文件的权限和设备文件所有者 / 组。
1 and 2 come from:http://www.ibm.com/developerworks/cn/linux/l-cn-udev/index.html3. /dev/ 下的设备结点是如何动态产生的?- 以一个usb设备为例,当usb设备插入,usb core检测到有usb设备插入,usb设备对应的驱动模块被加载入kernel,在驱动中,会调用一个函数,创建sysfs结点,在/sys的相应目录中产生属性文件、事件文件等。
- 前面讲了,udev是运行在用户空间的,并有一个守护进程专门管理udev。这个守护进程检测到了/sys下某给目录的某个设备的事件,然后相应事件,再读取/sys目录下某个usb设备的属性,最后根据这些读取的信息在/dev下创建一个设备结点。
4. udev的组成?
udev主要分3部分:namedev、libsysfs、udev。namedev为设备命名子系统,libsysfs提供访问sysfs文件系统获取信息的标准接口,udev提供/dev设备结点文件的动态创建和删除策略。udev程序承担与namedev和libsysfs库交互的任务,当/sbin/hotplug程序被内核调用时,udev将被运行。
5. namedev是怎么选择/dev目录下设备的设备名称的?
- 标签(label)/序号(serial):这一步检查设备是否有唯一的识别记号。如果namedev找到与这种唯一设备号唯一编号相对应的规则,它将使用该规则提供的名称。
- 设备总线号:这一步检查总线设备编号,如果namedev找到相对应的规则,规则中的名称就会被使用。
- 总线上的拓扑:当设备在总线上的位置匹配用户指定的规则时,就会使用该规则指定的名称
- 替换名称:当kernel提供的名称匹配指定的替代字符串时,就会使用该规则指定的名称。
- 内核提供的名称:如果以前的几个步骤都没有被提供,缺省的内核将被指定给该设备。
Reference:http://www.ibm.com/developerworks/cn/linux/l-cn-udev/index.html
udev offical doc
http://www.reactivated.net/writing_udev_rules.html
阅读(1125) | 评论(0) | 转发(0) |