本文以通俗的方法阐述 udev 及相关术语的概念、udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例。本文会使那些需要高效地、方便地管理 Linux 设备的用户受益匪浅,这些用户包括 Linux 最终用户、设备驱动开发人员、设备测试人员和系统管理员等等。
来自黄 懋 , 软件工程师, IBM,原文链接 http://www.ibm.com/developerworks/cn/linux/l-cn-udev/index.html
下面对此文做摘录。
什么是 udev?
udev 是 Linux2.6 内核里的一个功能,它替代了原来的 devfs ,成为当前 Linux 默认的设备管理工具。udev 以守护进程的形式运行,通过侦听内核发出来的 uevent 来管理 /dev 目录下的设备文件。不像之前的设备管理工具,udev 在用户空间 (user space) 运行,而不在内核空间 (kernel space) 运行。
我们都知道,所有的设备在 Linux 里都是以设备文件的形式存在。在早期的 Linux 版本中,/dev 目录包含了所有可能出现的设备的设备文件。很难想象 Linux 用户如何在这些大量的设备文件中找到匹配条件的设备文件。现在 udev 只为那些连接到 Linux 操作系统的设备产生设备文件。并且 udev 能通过定义一个 udev 规则 (rule) 来产生匹配设备属性的设备文件,这些设备属性可以是内核设备名称、总线路径、厂商名称、型号、序列号或者磁盘大小等等。
动态管理:当设备添加 / 删除时,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 可以按一定的条件来设置设备文件的权限和设备文件所有者 / 组。在不同的 udev 版本中,实现的方法不同,在“ 如何配置和使用 udev” 中会详解。
udev 的规则和规则文件
规则文件是 udev 里最重要的部分,默认是存放在 /etc/udev/rules.d/ 下。所有的规则文件必须以“ .rules ” 为后缀名。RHEL 有默认的规则文件,这些默认规则文件不仅为设备产生内核设备名称,还会产生标识性强的符号链接。
start_udev
start_dev 命令重启 udev 守护进程,并对所有的设备重新查询规则目录下所有的规则文件,然后执行所匹配的规则里的行为。通常使用该命令让新的规则文件立即生效:
清单 15. start_udev 的执行过程
[root@HOST_RHEL5 rules.d]# start_udev Starting udev: [ OK ] |
start_udev 一般没有标准输出,所有的 udev 相关信息都按照配置文件 (udev.conf) 的参数设置,由 syslog 记录。