深入探索Linux Udev配置,让设备管理更加高效 (linux udev 配置)

随着计算机技术的发展,现代操作系统对于设备管理的需求越来越高。在Linux系统中,udev就是一个非常重要的设备管理工具。虽然udev的配置可能会带来一定的挑战,但是深入了解和掌握udev的配置,能够让我们更加高效地管理设备。

什么是udev?

udev是一个用户空间的设备管理工具,它能够在Linux中自动检测和识别设备的插拔操作,并且可以自动为设备分配设备文件。使用udev可以使设备的管理更加容易和高效,同时也能够减少超级用户权限下的设备管理操作。

udev如何工作?

udev的工作流程可以简单概括为以下几个步骤:当设备插入时,内核会发送一个事件通知,并通过sysfs文件系统将设备信息发布到udev中。接着,udev会根据设备的属性进行匹配,然后执行相应的动作,例如为设备分配设备文件、设置设备参数等。udev会将设备的操作记录在日志中,以供后续调试和维护。

udev的配置文件

udev的配置文件位于/etc/udev/rules.d目录下,主要包含以下两个文件:

1. 99-custom.rules:这个文件是用户自定义规则的存放位置,用户可以在这里添加自己需要的规则。

2. 99-systemd.rules:这个文件是udev默认的规则文件,通常情况下我们不需要修改这个文件。

除了以上两个常见的配置文件外,我们还可以在/etc/udev目录下找到两个重要的配置文件:

1. udev.conf:这个文件用于设置udev的一些全局选项和默认值。

2. rules.d/udev:这个文件是由udev安装时默认生成的配置文件,它包含大量的系统默认规则。

配置udev规则

udev的规则是基于键值对进行匹配的,每个规则都由以下四个部分组成:模式、动作、环境变量和注释。下面我们来具体介绍这几个部分。

模式

模式是规则中关键的部分,它定义了设备的属性,udev会匹配这些属性来确定是否应该执行这个规则。模式一般由以下三个部分构成:

1. 硬件匹配:这个部分通常指定设备的厂商ID、产品ID和子系统信息等。

2. 属性匹配:udev可以根据设备的属性来匹配规则。属性通常包括设备的名称、路径和标志等。

3. 条件匹配:这个部分是可选的,可以定义一些条件,例如设备是否在某个特定的目录下等。

动作

动作是指当规则匹配时要执行的操作。常用的动作包括:

1. 指定设备文件权限:可以使用OWNER、GROUP和MODE等选项指定设备文件的所有者、组和权限。

2. 执行脚本:可以使用RUN选项来调用脚本进行其他的自定义操作。

3. 创建符号链接:可以使用SYMLINK选项来创建符号链接,以方便操作设备。

环境变量

环境变量是规则中的可选部分,可以在规则中使用,以提供更多的信息。环境变量通常由udev在设备识别时自动设置,并且可以被其他规则和脚本使用。常用的环境变量包括$KERNEL、$DEVPATH和$SUBSYSTEM等。

注释

注释通常用来帮助用户理解规则的作用和目的。注释使用#号表示,可以在规则的任意位置添加注释。

示例配置

下面是一些常见的udev规则示例:

1. 为设备分配固定的设备文件

KERNEL==”sda”, SYMLINK+=”mydisk”

这个规则是根据设备的名称为sda来创建一个名为mydisk的符号链接。

2. 限制设备权限

ATTRS{idVendor}==”09da”, ATTRS{idProduct}==”9090″, MODE=”0660″, GROUP=”audio”

这个规则的作用是限制ID为09da和9090的USB音频设备的权限为0660,并且设置设备文件的所有者为audio组。

3. 运行脚本

KERNEL==”sdb”, RUN+=”/usr/local/bin/script.sh”

这个规则的作用是根据设备的名称为sdb,调用/usr/local/bin/script.sh脚本进行其他自定义操作。

udev是Linux中非常强大的设备管理工具,能够自动检测和识别设备的插拔操作,并且可以自动为设备分配设备文件。虽然配置udev可能会带来一定的挑战,但是深入了解和掌握udev的配置,能够让我们更加高效地管理设备。在实际使用中,我们可以根据具体需求编写自己的udev规则,以达到更加灵活和高效的设备管理效果。

相关问题拓展阅读:

linux 中 udev 是干什么的啊

早期的linux的/dev目录下有一大堆设备文件,不管你的主机上是否有这些设备,相当于提岩森供一个标准接口,比如 /dev/sda 一般表示 SISC 盘之一块磁盘,但你主机上即使没有这种磁盘,/dev/sda还是存在

于是,这就有个问题:/dev/下会有很多实际上并不需要的文件,尽管这些文件占用不了多少空间(都是一字节的大小)

后来linux只在/dev上保留一些必要的设备文件,比如 /dev/console (表示控制台)等,旅仔其它的由udev在系统启动时检测并加载,比如 如果扫描到你有 SISC 设备(包括U盘)就在 /dev/下增加一个设备文件,比如 /dev/sda ,换句话说,有udev的前提下,/dev下的设备拆枣汪文件,就表示你的主机真的有这个设备

如何在Linux开发工具中启动USB驱动程序

USB驱动程序支持在原生Linux提供了。

方法要求启用驱动,但是,取决于你所使用的分布和内核版本。

哪个发行版支持USBFS?

已知提供USBFS支持:

Ubuntu 9.04或以上,

Ubuntu 9.10的内核2.6.31-19服务器,

CentOS的4.8,

CentOS的5.4,

一般情况下,任何分布用内核版本 = 2.6.32

方法1:USBFS支持

如果你的发行版提供了USBFS支持,那么下面的命令将工作斗弊模:

mount -t ufs none /proc/bus/u -o devmode=0666

为了使这种更改永久,确保下面一行是在/ etc / fstab文件中:

none /proc/bus/u ufs defaults,devmode=

这将自动安装在系统启动。

一旦 /etc/fstab添加已经做完,一个简单的命令应该挂载USBFS文件系统:

mount /proc/bus/u

无论是FTDI / XTAG和XTAG-2的调试适配器空缓现在应该工作。

方法2:没有USBFS支持

为了确保在任何一个FTDI / XTAG或XTAG-2调试适配器插入时的权限是在设备上是正确的,您需要配置“udev”来识别这个设备。

创建一个文件“/etc/udev/rules.d/99-xmos.rules”,其内容如下:

SUBSYSTEM!=”u|u_device”, GOTO=”xmos_rules_end”

ACTION!=”add”, GOTO=”xmos_rules_end”

# 20b1:f7d1 for xmos xtag2

ATTRS{idVendor}==”20b1″, ATTRS{idProduct}==”f7d1″, MODE=”0666″, SYMLINK+=”xtag2-%n”

# 20b1:f7d3 for xmos startkit

ATTRS{idVendor}==”20b1″, ATTRS{idProduct}==”f7d3″, MODE=”0666″, SYMLINK+=”startkit-%n”

# 0403:6010 for XC-1 with FTDI dual-uart chip

ATTRS{idVendor}==”0403″, ATTRS{idProduct}==”6010″, MODE=”0666″, SYMLINK+=”xc1-%n”

LABEL=”xmos_rules_end”

注意:本ATTRS,MODE和SYMLINK节必须全部在同一行,因为每个规卜清则只能在一行上。

现在告诉udev进行重新加载,以确保文件添加新的规则:

service udev reload

还必须拔下并重新插上USB线,让udev的识别设备的新规则。或者触发重新插上的udev类型为“udevadm触发”或“udevtrigger”命令,取决于在你的Linux分布上udev的版本。

FTDI / XTAG其他注意事项

FTDI的库需要USB设备的文件都可以从/ proc /bus/ USB,不支持的/dev/bus/u作为文件的位置。

但是,如果你的发行版不支持USBFS(以上方法1),但确实有一个的/proc/bus/u空目录,你可以使用下面的绑定mount命令的解决方法:

mount –bind /dev/bus/u /proc/bus/u

如果你的发行版不支持USBFS,也没有一个的/proc/bus/u目录(这是较新的内核的情况下,大约从2.6.32开始),然后联系XMOS的rthe设备库的非官方补丁的版本; 发送XMOS的支持标签,其中包括“Linux的FTDI库请求”的主题。

关于linux udev 配置的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 深入探索Linux Udev配置,让设备管理更加高效 (linux udev 配置)