UDEV详细解惑

合集下载

使用 udev 高效、动态地管理 Linux 设备文件

使用 udev 高效、动态地管理 Linux 设备文件
[root@HOST_RHEL5 ~]# rpm -qa |grep -i udev
udev-095-14.19.el5
[root@HOST_RHEL5 sysconfig]# uname -r
2.6.18-128.el5
[root@HOST_RHEL5 sysconfig]# ps -ef|grep udev
default_mode="0600"
# default_owner - set the default owner for all nodes that have no
# explicit match in the permissions file
default_owner="root"
# default_group - set the default group for all nodes that have no
# explicit match in the permissions file
#
# This file can be used to override some of udev's default values
# for where it looks for files, and where it places device nodes.
#
# WARNING: changing any value, can cause serious system breakage!
# udev_rules - The name and location of the udev rules file
udev_rules="/etc/udev/rules.d/"

udev原理

udev原理

UDEV 原理相对于linux来说,udev还是一个新事物。

然而,尽管它03年才出现,尽管它很低调( ),但它无疑已经成为linux下不可或缺的组件了。

udev是什么?它是如何实现的?最近研究Linux设备管理时,花了一些时间去研究udev的实现。

udev是什么?u 是指user space,dev是指device,udev是用户空间的设备驱动程序吗?最初我也这样认为,调试内核空间的程序要比调试用户空间的程序复杂得多,内核空间的程序的BUG所引起的后果也严重得多,device driver是内核空间中所占比较最大的代码,如果把这些device driver中硬件无关的代码,从内核空间移动到用户空间,自然是一个不错的想法。

但我的想法并不正确,udev的文档是这样说的,1.dynamic replacement for /dev。

作为devfs的替代者,传统的devfs不能动态分配major和minor的值,而major和minor非常有限,很快就会用完了。

udev能够像DHCP动态分配IP地址一样去动态分配major和minor。

2.device naming。

提供设备命名持久化的机制。

传统设备命名方式不具直观性,像/dev/hda1这样的名字肯定没有boot_disk这样的名字直观。

udev能够像DNS解析域名一样去给设备指定一个有意义的名称。

3.API to access info about current system devices 。

提供了一组易用的API去操作sysfs,避免重复实现同样的代码,这没有什么好说的。

我们知道,用户空间的程序与设备通信的方法,主要有以下几种方式,1.通过ioperm获取操作IO端口的权限,然后用inb/inw/ inl/ outb/outw/outl等函数,避开设备驱动程序,直接去操作IO端口。

(没有用过)2.用ioctl函数去操作/dev目录下对应的设备,这是设备驱动程序提供的接口。

udev使用简介

udev使用简介

Udev目的是为linux 2.6及以后版本提供一个用户空间的动态的针对/dev目录的管理解决方案。

所谓”动态”,他是针对以前的devfs相对而言的,其核心思想是:依赖于sysfs文件系统提供的信息,根据系统中的硬件设备是否存在的状态动态更新设备文件,这样/dev下只包含真正的存在的设备了。

udev是一个用户模式程序。

它的配置文件是/etc/udev/udev.conf。

现在这个文件一般缺省有如下项:udev_log="err"udev_log表示syslog记录日志的级别,默认值是 err。

如果改为 info 或者 debug 的话,会有冗长的 udev 日志被记录下来。

规则文件是 udev 里最重要的部分,默认是存放在 /etc/udev/rules.d/下。

所有的规则文件必须以“.rules”为后缀名。

udev 按照规则文件名的字母顺序来查询全部规则文件,然后为匹配规则的设备管理其设备文件或文件链接。

通常情况下,建议让自己想要的规则文件最先被解析。

比如,创建一个名为/etc/udev/rules.d/10-myrule.rules的文件,并把你的规则写入该文件,这样 udev 就会在解析系统默认的规则文件之前解析到你的文件。

下面简单看个例子(10-myrule.rules):KERNEL=="sdb", NAME="yannkun_uPan", MODE="0660"上面中是我自己添加的规则文件,KERNEL 是匹配键,NAME 和 MODE 是赋值键。

这条规则的意思是:如果有一个设备的内核设备名称为 sdb(我的U盘设备),则该条件生效,执行后面的赋值:在 /dev下产生一个名为 yankun_uPan的设备文件,并把设备文件的权限设为 0660。

匹配键:ACTION: 事件 (uevent) 的行为,例如:add( 添加设备 )、remove( 删除设备 )。

android udev 规则

android udev 规则

android udev 规则Android udev规则是一个用于设备管理的强大工具。

它允许用户自定义设备的权限、操作和行为,从而更好地与Android设备进行交互。

在本文中,我们将一步一步地回答关于Android udev规则的一些常见问题,并探索其用法和优势。

第一步:什么是udev规则?udev是一种设备管理机制,用于在linux内核中添加、删除和修改设备。

udev规则是用于自定义和配置设备管理的一种方法。

它允许用户定义设备的权限、操作和行为,以及在特定事件发生时触发特定的操作。

第二步:为什么我们需要Android udev规则?在Android设备上,udev规则对于开发者和用户来说都非常重要。

它允许用户控制设备的权限,例如访问USB设备或调试设备。

同时,它还可以帮助开发者在设备连接或断开时自动执行某些任务,如运行脚本、安装应用程序等。

因此,Android udev规则在提高用户和开发者体验方面起到了重要作用。

第三步:如何编写Android udev规则?编写Android udev规则并不复杂,以下是一些基本步骤:1. 创建udev规则文件:首先,您需要在`/etc/udev/rules.d/`目录下创建一个新的文件,命名为`android.rules`(或任何您喜欢的名称)。

2. 定义设备过滤器:在规则文件中,您可以使用各种属性来定义设备过滤器,以确定哪些设备会触发规则。

例如,您可以使用设备的厂商ID、产品ID或子系统等参数来过滤设备。

3. 定义规则动作:一旦设备被过滤,您可以定义将在特定事件发生时执行的动作。

例如,您可以运行一个脚本、挂载设备、更改设备权限等。

4. 重载udev规则:当您完成规则文件的编写后,可以通过执行`udevadm control reload-rules`命令来重新加载udev规则,以使更改生效。

第四步:Android udev规则的示例用途下面是一些常见的Android udev规则的示例用途:1. 自动安装驱动程序:当特定设备被连接到Android设备时,您可以设置规则以自动安装相应的驱动程序,以确保设备正常运行。

udev详解

udev详解

udev详解利用udev在/dev下动态生成/移除设备文件-----------------------------------------udev是硬件平台无关的,属于user space的进程,它脱离驱动层的关联而建立在操作系统之上,基于这种设计实现,我们可以随时修改及删除/dev下的设备文件名称和指向,随心所欲地按照我们的愿望安排和管理设备文件系统,而完成如此灵活的功能只需要简单地修改udev 的配置文件即可,无需重新启动操作系统。

udev已经使得我们对设备的管理如探囊取物般轻松自如。

制作udevd工具-----------------------------------------/pub/linux/utils/kernel/hotplug/# wget/pub/linux/utils/kernel/hotplug/udev-10 0.tar.bz2# tar xjf udev-100.tar.bz2# cd udev-100# vi MakefleCROSS_COMPILE ?=====>CROSS_COMPILE ?=/usr/local/arm/3.4.1/bin/arm-linux-# make没有什么意外的话当前目录下生成udevcontrol, udevd, udevinfo, udevmonitor, udevsettle, udevstart, udevtest, udevtrigger九个工具程序,在嵌入式系统里,我们只需要udevd和udevstart就能使udev工作得很好,其他工具则帮助我们完成udev的信息察看、事件捕捉或者更高级的操作。

配置udev-----------------------------------------首先,udev需要内核sysfs和tmpfs的支持,sysfs为udev 提供设备入口和uevent通道,tmpfs为udev设备文件提供存放空间,也就是说,在上电之前系统上是没有足够的设备文件可用的,我们需要一些技巧让kernel先引导起来。

Udev介绍

Udev介绍

sysfs树:
sysfs实际上是一个非常简单的结构,逻辑上以目录形式区分. 每一个目录包含一定量的文件(属性),这些文件往往都仅仅包 含一个值. 也会有一些符号链接,它们把设备链到双亲那里 查看sysfs树的一个好办法就是使用udevinfo udevinfo -a -p /sys/block/sda
特定事件发生时运行外部程序:
设备连接或者断开时运行一个特定程序,此时使用的赋值键 RUN,它的使用比较频繁。
KERNEL=="sdb", RUN+="/usr/bin/my_program" 当设备链接、断开时运行my_program脚本 udev并不在任何激活终端中运行这些程序,也不再shell上下文 中执行.
写规则时注意: 设备属性和单个双亲设备属性并在一起是合法的, 但不能混合 匹配多个双亲设备属性,这样你的规则不能工作.
使用udevinfo的唯一复杂之处在于要求你知道顶级设备路 径,因为你通常是为已经存在的设备节点写规则, 你可 以自己使用udevinfo查找设备路径: udevinfo -a -p $(udevinfo -q path -n /dev/sda)
网络:
udevinfo -a -p /sys/class/net/eth0 looking at class device '/sys/class/net/eth0': KERNEL=="eth0" ATTR{address}=="00:52:8b:d5:04:48" 这是我的规则: KERNEL=="eth*", \ ATTR{address}=="00:52:8b:d5:04:48", NAME="lan"

udev规则生效

udev规则生效什么是udev规则?udev是Linux系统中的一个设备管理机制,它负责在设备插入或移除时自动创建或删除设备节点。

udev规则是一组用于定义如何处理设备事件的规则,可以根据设备的属性、类型、ID等信息来触发特定的操作。

udev规则通常用于识别和配置硬件设备,如USB驱动器、网卡、打印机等。

通过编写自定义的udev规则,可以实现自动挂载USB设备、设置网络接口、加载特定驱动程序等功能。

编写udev规则要编写一个udev规则,需要以下几个步骤:1. 确定需要匹配的设备属性首先,需要确定要匹配的设备属性。

可以使用lsusb、lspci等命令查看设备信息,并确定需要使用哪些属性来识别设备。

例如,我们想编写一个规则来识别一个特定厂商ID和产品ID的USB存储设备。

通过运行lsusb命令,我们可以找到这些属性:Bus 001 Device 003: ID 0781:5583 SanDisk Corp.这里的厂商ID是0781,产品ID是5583。

2. 创建udev规则文件在Linux系统中,udev规则文件通常存储在/etc/udev/rules.d/目录下。

可以创建一个新的规则文件,以.rules为后缀,并命名为适当的名称。

例如,我们创建一个名为99-usb-storage.rules的文件来匹配USB存储设备。

sudo touch /etc/udev/rules.d/99-usb-storage.rules3. 编写udev规则打开刚创建的规则文件,并使用文本编辑器编写规则。

每条规则由以下几个部分组成:•规则匹配条件:使用属性来匹配设备。

•规则动作:定义在匹配条件满足时要执行的操作。

对于USB存储设备,我们可以编写如下规则:ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0781", ATTRS{idProduct}==" 5583", RUN+="/path/to/script.sh"这个规则包含以下几个部分:•ACTION=="add":指定当设备插入时触发该规则。

欧拉系统 udev 规则

欧拉系统 udev 规则欧拉系统 udev 规则是一个用于管理 Linux 设备的工具。

它的主要功能是根据设备的属性在系统内核中创建设备节点,从而实现设备的自动识别和配置。

udev 规则是根据设备的属性匹配来执行相应操作的规则集合。

当设备插入或移除时,udev 监听设备事件,根据预定义的规则来执行相应的动作。

这些规则可以用于为设备设置特定的权限,创建符号链接,以及执行其他自定义操作。

在欧拉系统中,我们可以通过编辑 udev 规则文件来定制设备的行为。

udev 规则文件通常位于 `/etc/udev/rules.d/` 目录中,并使用 `.rules` 扩展名。

我们可以创建新的规则文件或编辑现有的规则文件以满足特定需求。

每个 udev 规则文件通常包含一条或多条规则。

每条规则由以下几个部分组成:1. 规则的顺序号:用于确定规则的执行顺序。

2. 规则的匹配条件:通常基于设备的属性来匹配,可以使用属性的名称和值进行匹配,也可以使用通配符。

3. 规则的操作:一旦匹配条件满足,udev 将执行指定的操作,如设置设备权限、创建符号链接、运行脚本等。

为了编写有效的 udev 规则,我们需要了解设备的属性。

可以使用`udevadm` 命令来获取设备的属性信息。

例如,`udevadm info -a -p/sys/class/tty/ttyUSB0` 命令可以显示与 ttyUSB0 设备相关的属性信息。

根据这些属性信息,我们可以编写规则来匹配特定设备。

以下是一个示例的 udev 规则文件,用于设置 USB 设备的权限和创建符号链接:```# 设置 USB 设备权限SUBSYSTEM=="usb", MODE="0666"# 创建 USB 设备的符号链接KERNEL=="sd*", SUBSYSTEM=="block",ENV{ID_SERIAL_SHORT}=="ABC123", SYMLINK+="my_usb_device"```以上规则中,第一条规则匹配所有的 USB 设备,并设置权限为 0666,这样任何用户都可以访问该设备。

udev简介与使用方法

udev简介与使用方法udev是Linux内核的设备管理器,它取代了devfs、hotplug等功能。

udev可以根据系统中硬件设备的状态动态更新设备文件,包括设备文件的创建和删除。

设备文件通常放在/dev目录下,使用udev后,/dev目录下只包含系统中真正存在的设备。

udev的优势在于它是硬件平台无关的,属于user space的进程,脱离驱动层的关联而建立在操作系统之上。

基于这种设计实现,我们可以随时修改及删除/dev下的设备文件名称和指向,随心所欲地按照我们的愿望安排和管理设备文件系统,而完成如此灵活的功能只需要简单地修改udev的配置文件即可,无需重新启动操作系统。

在传统的Linux中,使用静态设备创建方法,因此大量设备节点在/dev下创建(有时上千个),而不管相应的硬件设备是否真正存在。

采用udev的方法,只有被kernel检测到的设备才会被创建。

udev的配置文件是/etc/udev/,这个文件一般包含以下几项:udev_root="/dev",udev产生的设备文件的根目录是/dev;udev_db="/dev/.udevdb",通过udev产生的设备文件形成的数据库;udev_rules="/etc/udev/",用于指导udev工作的规则所在目录;udev_log="err",当出现错误时,用syslog记录错误信息。

使用udev可以通过查询路径和属性来获取设备信息。

具体来说,可以使用`udevadm info --attribute-walk --path=$(udevadm info --query=path --name=/dev/video2)`来查询节点信息,也可以使用`udevadm info --attribute-walk --path=$(udevadm info --query=path --path=/sys/class/net/eth0)`来查询路径信息。

udev env 规则

udev env 规则udev 是Linux 下的设备管理器,它通过监测内核的事件,实现对设备的动态管理。

udev env 规则是 udev 所使用的一种规则语言,用于定义设备的环境变量。

本文将介绍udev env 规则的相关内容。

一、udev env 规则的基本结构udev env 规则由一系列的key-value 对组成,每个key-value 对占据一行。

其中key 是环境变量的名称,value 是环境变量的值。

一个基本的 udev env 规则如下所示:ENV{ENV_NAME}="ENV_VALUE"其中ENV_NAME 是环境变量的名称,ENV_VALUE 是环境变量的值。

二、udev env 规则的使用场景udev env 规则可以用于设备的自动配置和管理。

通过定义设备的环境变量,可以实现对设备的特定操作或配置。

下面是一些常见的使用场景:1. 自动挂载设备通过udev env 规则,可以在设备插入时自动挂载设备。

例如,可以定义一个名为 ACTION 的环境变量,当 ACTION 等于 "add" 时,执行挂载操作。

ENV{ACTION}=="add", RUN+="/bin/mount %E{DEVNAME} /mnt"上述规则中,当设备插入时,udev 会将设备的名称(%E{DEVNAME})作为参数,执行"/bin/mount" 命令来挂载设备到 "/mnt" 目录。

2. 设置设备权限通过udev env 规则,可以设置设备文件的权限。

例如,可以定义一个名为 MODE 的环境变量,指定设备文件的权限。

ENV{ACTION}=="add", MODE="0666"上述规则中,当设备插入时,udev 会将设备文件的权限设置为"0666"。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本人理解的UDEV是这样的:首先UDEV是运行在用户层的,所以要跟内核通信,而且是一直在监听内核的信息,所以写一个socket套接字,然后加入到线程里面去,用来接收内核所传的信息,然后就都是上层的一些处理了,文件分区、监测设备的插入拔出、挂载等…如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。

在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。

后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46 内核中。

Mandrake,Gentoo等Linux分发版本采用了这种方式。

devfs创建的设备文件是动态的。

但是devfs有一些严重的限制,从2.6.13版本后移走了。

目前取代他的便是文本要提到的udev--一个用户空间程序。

目前很多的Linux分发版本采纳了udev的方式,因为它在Linux设备访问,特别是那些对设备有极端需求的站点(比如需要控制上千个硬盘)和热插拔设备(比如USB摄像头和MP3播放器)上解决了几个问题。

下面我我们来看看如何管理udev设备。

实际上,对于那些为磁盘,终端设备等准备的标准配置文件而言,你不需要修改什么。

但是,你需要了解udev配置来使用新的或者外来设备,如果不修改配置,这些设备可能无法访问,或者说Linux可能会采用不恰当的名字,属组或权限来创建这些设备文件。

你可能也想知道如何修改RS-232串口,音频设备等文件的属组或者权限。

这点在实际的Linux实施中是会遇到的。

为什么使用udev在此之前的设备文件管理方法(静态文件和devfs)有几个缺点:* 不确定的设备映射。

特别是那些动态设备,比如USB设备,设备文件到实际设备的映射并不可靠和确定。

举一个例子:如果你有两个USB 打印机。

一个可能称为/dev/usb/lp0,另外一个便是/dev/usb/lp1。

但是到底哪个是哪个并不清楚,lp0,lp1和实际的设备没有一一对应的关系,因为他可能因为发现设备的顺序,打印机本身关闭等原因而导致这种映射并不确定。

理想的方式应该是:两个打印机应该采用基于他们的序列号或者其他标识信息的唯一设备文件来映射。

但是静态文件和devfs 都无法做到这点。

*没有足够的主/辅设备号。

我们知道,每一个设备文件是有两个8位的数字:一个是主设备号,另外一个是辅设备号来分配的。

这两个8位的数字加上设备类型(块设备或者字符设备)来唯一标识一个设备。

不幸的是,关联这些身边的的数字并不足够。

*/dev 目录下文件太多。

一个系统采用静态设备文件关联的方式,那么这个目录下的文件必然是足够多。

而同时你又不知道在你的系统上到底有那些设备文件是激活的。

* 命名不够灵活。

尽管devfs解决了以前的一些问题,但是它自身又带来了一些问题。

其中一个就是命名不够灵活;你别想非常简单的就能修改设备文件的名字。

缺省的devfs命令机制本身也很奇怪,他需要修改大量的配置文件和程序。

;*内核内存使用,devfs特有的另外一个问题是,作为内核驱动模块,devfs需要消耗大量的内存,特别当系统上有大量的设备时(比如上面我们提到的系统一个上有好几千磁盘时)udev的目标是想解决上面提到的这些问题,他通采用用户空间(user-space)工具来管理/dev/目录树,他和文件系统分开。

知道如何改变缺省配置能让你之大如何定制自己的系统,比如创建设备字符连接,改变设备文件属组,权限等。

udev配置文件主要的udev配置文件是/etc/udev/udev.conf。

这个文件通常很短,他可能只是包含几行#开头的注释,然后有几行选项:udev_root="/dev/"udev_rules="/etc/udev/rules.d/"udev_log="err"上面的第二行非常重要,因为他表示udev规则存储的目录,这个目录存储的是以.rules结束的文件。

每一个文件处理一系列规则来帮助udev 分配名字给设备文件以保证能被内核识别。

你的/etc/udev/rules.d下面可能有好几个udev规则文件,这些文件一部分是udev包安装的,另外一部分则是可能是别的硬件或者软件包生成的。

比如在Fedora Core 5系统上,sane-backends包就会安装60-libsane.rules文件,另外initscripts包会安装60-net.rules文件。

这些规则文件的文件名通常是两个数字开头,它表示系统应用该规则的顺序。

规则文件里的规则有一系列的键/值对组成,键/值对之间用逗号(,)分割。

每一个键或者是用户匹配键,或者是一个赋值键。

匹配键确定规则是否被应用,而赋值键表示分配某值给该键。

这些值将影响udev创建的设备文件。

赋值键可以处理一个多值列表。

匹配键和赋值键操作符解释见下表:udev 键/值对操作符操作符匹配或赋值t 解释----------------------------------------== 匹配相等比较!= 匹配不等比较= 赋值分配一个特定的值给该键,他可以覆盖之前的赋值。

+= 赋值追加特定的值给已经存在的键:= 赋值分配一个特定的值给该键,后面的规则不可能覆盖它。

这有点类似我们常见的编程语言,比如C语言。

只是这里的键一次可以处理多个值。

有一些键在udev规则文件里经常出现,这些键的值可以使用通配符(*,?,甚至范围,比如[0-9]),这些常用键列举如下:常用udev键键含义ACTION 一个时间活动的名字,比如add,当设备增加的时候KERNEL 在内核里看到的设备名字,比如sd*表示任意SCSI磁盘设备DEVPATH 内核设备录进,比如/devices/*SUBSYSTEM 子系统名字,比如sound,netBUS 总线的名字,比如IDE,USBDRIVER 设备驱动的名字,比如ide-cdromID 独立于内核名字的设备名字SYSFS{ value} sysfs属性值,他可以表示任意ENV{ key} 环境变量,可以表示任意PROGRAM 可执行的外部程序,如果程序返回0值,该键则认为为真(true)RESULT 上一个PROGRAM调用返回的标准输出。

NAME 根据这个规则创建的设备文件的文件名。

注意:仅仅第一行的NAME描述是有效的,后面的均忽略。

如果你想使用使用两个以上的名字来访问一个设备的话,可以考虑SYMLINK键。

SYMLINK 根据规则创建的字符连接名OWNER 设备文件的属组GROUP 设备文件所在的组。

MODE 设备文件的权限,采用8进制RUN 为设备而执行的程序列表LABEL 在配置文件里为内部控制而采用的名字标签(下下面的GOTO服务)GOTO 跳到匹配的规则(通过LABEL来标识),有点类似程序语言中的GOTOIMPORT{ type} 导入一个文件或者一个程序执行后而生成的规则集到当前文件WAIT_FOR_SYSFS 等待一个特定的设备文件的创建。

主要是用作时序和依赖问题。

PTIONS 特定的选项:last_rule 对这类设备终端规则执行;ignore_device 忽略当前规则;ignore_remove 忽略接下来的并移走请求。

all_partitions 为所有的磁盘分区创建设备文件。

我们给出一个列子来解释如何使用这些键。

下面的例子来自Fedora Core 5系统的标准配置文件。

KERNEL=="*", OWNER="root" GROUP="root", MODE="0600" KERNEL=="tty", NAME="%k", GROUP="tty", MODE="0666", OPTIONS="last_rule"KERNEL=="scd[0-9]*", SYMLINK+="cdrom cdrom-%k"KERNEL=="hd[a-z]", BUS=="ide", SYSFS{removable}=="1",SYSFS{device/media}=="cdrom", SYMLINK+="cdrom cdrom-%k" ACTION=="add", SUBSYSTEM=="scsi_device", RUN+="/sbin/modprobe sg"上面的例子给出了5个规则,每一个都是KERNEL或者ACTION键开头:* 第一个规则是缺省的,他匹配任意被内核识别到的设备,然后设定这些设备的属组是root,组是root,访问权限模式是0600(-rw-------)。

这也是一个安全的缺省设置保证所有的设备在默认情况下只有root可以读写。

*第二个规则也是比较典型的规则了。

它匹配终端设备(tty),然后设置新的权限为0600,所在的组是tty。

它也设置了一个特别的设备文件名:%K。

在这里例子里,%k代表设备的内核名字。

那也就意味着内核识别出这些设备是什么名字,就创建什么样的设备文件名。

*第三行开始的KERNEL=="scd[0-9]*",表示SCSI CD-ROM 驱动. 它创建一对设备符号连接:cdrom和cdrom-%k。

* 第四行,开始的KERNEL=="hd[a-z]", 表示ATA CDROM驱动器。

这个规则创建和上面的规则相同的符号连接。

ATA CDROM驱动器需要sysfs值以来区别别的ATA设备,因为SCSI CDROM可以被内核唯一识别。

.*第五行以ACTION=="add"开始,它告诉udev增加/sbin/modprobe sg 到命令列表,当任意SCSI设备增加到系统后,这些命令将执行。

其效果就是计算机应该会增加sg内核模块来侦测新的SCSI设备。

当然,上面仅仅是一小部分例子,如果你的系统采用了udev方式,那你应该可以看到更多的规则。

如果你想修改设备的权限或者创建信的符号连接,那么你需要熟读这些规则,特别是要仔细注意你修改的那些与之相关的设备。

修改你的udev配置在修改udev配置之前,我们一定要仔细,通常的考虑是:你最好不要修改系统预置的那些规则,特别不要指定影响非常广泛的配置,比如上面例子中的第一行。

相关文档
最新文档