Chinaunix首页 | 论坛 | 博客
  • 博客访问: 437419
  • 博文数量: 123
  • 博客积分: 2686
  • 博客等级: 少校
  • 技术积分: 1349
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-23 22:11
文章分类
文章存档

2012年(3)

2011年(10)

2010年(100)

2009年(10)

我的朋友

分类: LINUX

2010-06-01 21:42:43

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.html

3. /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) |
给主人留下些什么吧!~~