使用 udev 高效、动态地管理 Linux 设备文件
黄 懋, 软件工程师, IBM
简介: 本文以通俗的方法阐述 udev 及相关术语的概念、udev 的配置文件和规则文件,然后以 Red Hat Enterprise
Server 为平台演示一些管理设备文件和查询设备信息的实例。本文会使那些需要高效地、方便地管理 Linux 设备
的用户受益匪浅,这些用户包括 Linux 最终用户、设备驱动开发人员、设备测试人员和系统管理员等等。
发布日期: 2010 年 3 月 02 日
级别: 初级
平均分 (共 15 个评分 )
概述:
Linux 用户常常会很难鉴别同一类型的设备名,比如 eth0, eth1, sda, sdb 等等。通过观察这些设备的内核设备名
称,用户通常能知道这些是什么类型的设备,但是不知道哪一个设备是他们想要的。例如,在一个充斥着本地磁盘
和光纤磁盘的设备名清单 (/dev/sd*) 中,用户无法找到一个序列号为“35000c50000a7ef67”的磁盘。在这种情
况下,udev 就能动态地在 /dev 目录里产生自己想要的、标识性强的设备文件或者设备链接,以此帮助用户方便
快捷地找到所需的设备文件。
udev 简介
什么是 udev?
udev 是 Linux2.6 内核里的一个功能,它替代了原来的 devfs,成为当前 Linux 默认的设备管理工具。udev 以
守护进程的形式运行,通过侦听内核发出来的 uevent 来管理 /dev 目录下的设备文件。不像之前的设备管理工具,
udev 在用户空间 (user space) 运行,而不在内核空间 (kernel space) 运行。
使用 udev 的好处:
我们都知道,所有的设备在 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 添加 / 删除设备文件的过程。