Udev 的使用--linux系统创建设备节点
Linux 里都是以设备文件的形式存在。在早期的 Linux 版本中,/dev目录包含了所有可能出现的设备的设备文件。但因为这样 Linux 用户很难在这些大量的设备文件中找到匹配条件的设备文件。现在 udev 只为那些连接到 Linux 操作系统的设备产生设备文件。并且 udev 能通过定义一个 udev 规则 (rule) 来产生匹配设备属性的设备文件,这些设备属性可以是内核设备名称、总线路径、厂商名称、型号、序列号或者磁盘大小等等。
动态自动管理设备信息:当有设备添加 / 删除时,udev 的守护进程侦听到来自内核的 uevent 的事件,用来添加或者删除 /dev下的设备文件,所以 udev 可以只为已经连接的设备产生设备文件,而不会象 2.4 内核一样在 /dev下产生大量设备文件。另外可以使用这个功能 ,当有设备加入时运行外部的程序,比如鼠标加入时自动禁用触摸板之类
使用自定义命名和管理设备:使用 Udev 规则文件,udev 在 /dev/ 里为所有的设备定义了内核设备名称,比如 /dev /sda、/dev/hda、/dev/fd等等。由于 udev 是在用户空间 (user space) 运行,Linux 用户可以接下来对这些信息进行操作,比如可以通过自定义的规则文件,生成人性的设备标识,比如 /dev/my_disk、/dev/nameusb 等,还能对设置进行参数成员用户组权限之类的修改。
开始之类需要了解
? sysfs:sysfs是 Linux 2.6 内核里的一个虚拟文件系统 (/sys)。它把设备和驱动的信息从内核的设备模块导出到用户空间 (userspace)。从该文件系统中,Linux 用户可以获取很多设备的属性。
? devpath:本文的 devpath是指一个设备在 sysfs文件系统 (/sys)下的相对路径,该路径包含了该设备的属性文件。udev 里的多数命令都是针对 devpath操作的。例如:sda的 devpath是 /block/sda,sda2 的 devpath是 /block/sda/sda2。
? 内核设备名称:设备在 sysfs里的名称,是 udev 默认使用的设备文件名。
udev 主配置文件
主要的udev 主配置文件是 /etc/udev/udev.conf。这个文件通常很短,他可能只是包含几行#开头的注释,然后有几行选项:
udev_root=/dev/ # 设置的绝对路径,相当于创建 chroot 的根。
udev_rules=/etc/udev/rules.d/ #规则的存放地址
udev_log=err # 日志的输入级别
udev 的规则配置文件实例
默认的规则配置文件存放在 /etc/udev/rules.d/ 中,我们进入这个可以看到 RedHat 默认对设备建好的一些规则和一些硬件公司写好的规则。
进入目录,可以见到以二位数字开头的前缀的配置文件,可以使用 vi 进入配置文件中查看,一行是一条规则,默认是从小数字到大数字,这些表示生效的顺序。
我们在使用 udev 写规则前,先来看一个例子
KERNEL==sd*, PROGRAM=/lib/udev/scsi_id -g -s %p, RESULT==123456, SYMLINK=%k_%c
该规则的执行:如果有一个内核设备名称以 sd 开头,且 SCSI ID 为 123456,则为设备文件产生一个符号链接“sd