linux下udev设备文件管理介绍
udev文件的写法 -回复
udev文件的写法-回复[udev文件的写法]udev是Linux操作系统中的一种设备管理机制,它用于动态管理设备,实现设备自动挂载和卸载。
udev文件提供了一种灵活的方法,可以定义规则来管理设备的各种属性和行为。
在本文中,我们将一步一步地回答关于udev文件的写法的问题,并解释如何编写一个基本的udev规则。
第一步:确定设备属性要编写一个udev规则,首先需要确定您希望基于哪些设备属性来触发该规则。
这些属性可以是设备的ID、制造商、型号等。
您可以使用udevadm 命令来获取设备的属性信息。
例如,如果您想基于设备的制造商和型号触发规则,可以运行以下命令:udevadm info attribute-walk name=/dev/sdb上述命令将显示与设备/dev/sdb相关的所有属性信息,并帮助您确定要使用的属性。
第二步:创建udev规则文件接下来,您需要创建一个udev规则文件。
该文件的后缀通常是.rules。
您可以使用任何文本编辑器来创建该文件。
在终端中,可以运行以下命令来创建名为my_rule.rules的udev规则文件:sudo touch /etc/udev/rules.d/my_rule.rulessudo nano /etc/udev/rules.d/my_rule.rules请注意,您可能需要使用管理员权限运行上述命令。
第三步:编写udev规则在打开的文本编辑器中,您可以开始编写udev规则。
规则的基本结构如下:SUBSYSTEM=="subsystem_name", ATTR{attribute}=="value", ACTION=="action"其中:- subsystem_name是设备的子系统名称,您可以在第一步中获得设备的信息。
- attribute是设备的属性,您可以根据第一步的属性信息选择。
- value是属性的值,您可以根据设备的属性选择相应的值。
(转载)linux中设备文件配置程序udev详解
(转载)linux中设备⽂件配置程序udev详解如果你使⽤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和实际的设备没有⼀⼀对应的关系,因为他可能因为发现设备的顺序,打印机本⾝关闭等原因⽽导致这种映射并不确定。
理想的⽅式应该是:两个打印机应该采⽤基于他们的序列号或者其他标识信息的唯⼀设备⽂件来映射。
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 规则是一个用于管理 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,这样任何用户都可以访问该设备。
linux udev规则
linux udev规则Linux中的udev是一种设备管理器,用于动态管理设备节点和设备驱动程序的加载。
udev规则是在udev管理器中定义的规则集,用于自定义设备的命名、权限设置和其他操作。
下面是关于linux udev规则的详细介绍:规则文件位置:udev规则文件通常存储在/etc/udev/rules.d/目录下,以.rules为后缀。
您可以在该目录中创建新的规则文件或编辑已有的文件。
规则语法:udev规则采用简单的文本配置语法。
每个规则由一行表示,并包含以下几个部分:规则名称:规则名称是一个描述性的字符串,以SUBSYSTEM、KERNEL或ATTR开头,后跟一个可选的匹配条件。
匹配条件:匹配条件用于在设备和属性之间进行匹配。
您可以使用设备的子系统(subsystem)、内核属性(kernel attribute)和设备属性(device attribute)进行匹配。
动作:规则的最后部分是要执行的动作。
动作可以是设置设备权限、创建符号链接、运行脚本等。
规则示例:命名设备节点:您可以使用udev规则为设备节点定义自定义名称。
例如,您可以为一个特定的USB设备设置自定义名称,以便更容易识别。
示例规则为一个USB设备节点命名:SUBSYSTEM=="usb", ATTR{idVendor}=="XXXX", ATTR{idProduct}=="XXXX", NAME="my_device"设置设备权限:您可以使用udev规则设置设备节点的权限。
例如,您可以设置特定设备节点的所有者和访问权限。
示例规则设置设备权限:SUBSYSTEM=="input", MODE="0666"创建符号链接:您可以使用udev规则在/dev目录下创建符号链接,以便使用更友好的设备名称。
示例规则创建一个名为my_link 的符号链接:KERNEL=="sda1", SYMLINK+="my_link"规则的加载和生效:当系统启动时,udev会读取/etc/udev/rules.d/目录中的规则文件,并将规则加载到内核中。
利用Udev在linux设备装载时实现易于识别的设备文件名
利用Udev在linux设备装载时实现易于识别的设备文件名随着计算机技术和的发展应用的推广,计算机挂载的设备越来越多,虽然linux依据设备类型分配了设备文件名,比如eth0,eth1,sda,sdb,但是人们不查看具体的设备信息,无法从这类名字上判断那是哪一个硬件设备。
在计算机维护中,如果有设备需要临时装载移除或者热插拔,往往系统同类设备的编号就会混乱,比如人们插拔硬盘,往往sdb,sdc这些设备序号就会混乱。
人们在实际工作中往往希望,linux能将连接的设备设定易于识别的设备文件,这样不但区分识别,而且方便人们实习自动备份等一系列自动功能,在面向用户的设备中提升用户体验。
文章简要介绍udev在linux系统的使用,在ubuntu 12.04 LTS 中使用的实例。
标签:udev;linux;ubuntu通过向内核中添加代码也可以实现修改设备文件名称的功能,但是很少人会这样,一是内核升级维护不方便,每次升级内核都要插入代码;二是容易干扰内核运行,每次都要仔细审查加入的代码,同时也容易引入漏洞。
udev,简单,方便,成熟。
udev是多个linux发行版默认的设备管理器,udev规则易于在不同的发行版之间移植。
1 Ubuntu 12.04.04 LTS中的udevudev 是Linux kernel 2.6的默认设备管理器,它的目标是接替devfs和hotplug 的功能。
udev的守护进程通过侦听内核发出来的uevent 来管理/dev 目录下的设备文件。
它在用户模式下管理/dev目录底下的设备节点,不会对内核的运行产生影响。
因此,内核依然会产生设备文件如sda,sdb等,人们利用udev建立设备的软连接一般不会干扰其他软件的运行。
通过编写udev规则,人们就可以根据设备的不同属性区分设备,用人们习惯的命名方式设置设备文件名。
文章介绍ubuntu 12.04 LFS中udev的使用。
2012年4月Udev已经和systemd项目合并,集成成为一体化的启动及设备管理软件。
linux udev原理分析
一.udev简介在linux系统中,/dev目录用来保存设备文件的.每个文件指向一个系统设备.用户的程序可以通过使用这些设备文件,对真实的硬件的设备进行操作.如: hda是第1个IDE硬盘,sda是第1个SCSI硬盘.在2.4内核时代,在/dev下保存了所有kernel可以支持的硬件设备的设备文件,将近有1万个.而这些设备中,大多数是没有连接的设备.这样就大大的浪费了系统资源,而且/dev目录也显得非常混乱.udev就是用了解决这些问题的.在2.6内核中,采用udev方式来管理/dev目录.它可以动态的建立/删除设备文件(设备连接到系统时,它会自动建立相应的设备文件,设备断开连接后,它会自动删除相应的设备文件).这样使/dev目录简化了许多.而且,udev还可以允许用户编写命名规则,为不同设备指定设备文件名.这样,对设备的管理也方便了许多.例如:你有2个U盘,1个容量是1G的,1个容量是2G的.一般情况下,你先接上的U盘会是sdb,后接上的U盘会是sdc.这样对使用很不方便.每次U盘的设备名可能不一样.但通过udev命名规则,你可以自己指定的设备命名,可以将1G的U盘命名为1g,将2G的U盘命名为2g.设备名不会再变化.使用和管理都会很方便.二.udev安装1.Turbolinux发行版在Turbolinux 10,10.5和11等版本中,都已集成了udev包.你也可以手动安装udev的rpm包.# rpm -ivh udev-<版本号>.rpm2.从源码包安装你可以从官方网站下载源码包:/pub/linux/utils/kernel/hotplug/udev.html 我们下载0.39版的udev.然后进行安装:#tar jxf udev-039.tar.bz2# cd udev-039# make# make install三.udev命名规则1.查看硬件信息当你将一个硬件连接到系统时,会在/sys下生成这个设备的相应信息.U盘信息会保存在/sys/block下,USB打印机则会保存在/sys/class/usb下.使用udevinf o命令可以查看硬件的相关信息.# udevinfo -a -p /sys/block/sda/sda1looking at class device '/sys/block/sda/sda1':SYSFS{dev}="8:1"SYSFS{size}="2045147"SYSFS{start}="61"SYSFS{stat}=" 0 0 0 0"follow the class device's "device"looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-6/1-6:1.0/host2/target2: 0:0/2:0:0:0':BUS="scsi"ID="2:0:0:0"SYSFS{detach_state}="0"SYSFS{device_blocked}="0"SYSFS{max_sectors}="240"SYSFS{model}="Flash Disk "SYSFS{queue_depth}="1"SYSFS{rev}="4.00"SYSFS{scsi_level}="3"SYSFS{state}="running"SYSFS{timeout}="30"SYSFS{type}="0"SYSFS{vendor}=" "输出信息包括硬件的产品类型,厂商信息,序列号等,依据这些信息,你就可以编写命名规则了.2.命名规则udev的命名规则保存在/etc/udev/rules.d中,脚本按照文件的编号顺序,由小到大执行.当规则匹配时,将不再继续向下执行.下面以Turbolinux 10为例,编写一个U盘命名规则.# vi /etc/udev/rules.d/05-users.rules根据硬件的序列号(serial)编写规则.在文件中添加下面内容:BUS="usb", SYSFS{serial}="033446747503", KERNEL="sd?1", NAME="bruce-%k", SYMLINK="bruce3-%n"BUS 表示设备使用的总线.SYSFS 表示指定硬件信息中,我们需要使用的哪一项值,这里我们使用U盘的序列号作为识别.KERNEL 表示内核对这个设备进行的命名.内核对U盘的命名为sd a1,sdb1…,所以这里我们使用”sd?1”.NAME 设备名,即我们要改变的设备名称.我们使用bruce-%k.%k代表内核对这个设备的命名.SYMLINK 表示建立一个连接,连接到这个设备上.这个连接的名称是”bruce3-%n”.%n代表kernel号,即设备名后面的数字.现在将U盘拔出,然后再重新连接到计算机上.# ls /dev/sd* -hlbrw-rw---- 1 root disk 8, 0 Aug 17 20:11 /dev/sda# ls /dev/bruce* -hllrwxrwxrwx 1 root root 10 Aug 17 20:11 /dev/bruce3-1 -> bruce-sda1 brw------- 1 root root 8, 1 Aug 17 20:11 /dev/bruce-sda1可以看到,U盘设备名变成了bruce-sda1,并且有一个bruce3-1的连接指向它.四.udev工作原理当系统添加设备时,/sys目录下会生成设备的相应信息.udev就是通过读取/sys下的信息来识别硬件设备的.udev有3部分组成: namedev,libsysfs,udevnamedev 负责解析/etc/udev/rules.d中的命名规则,遇到匹配规则后,会返回一个设备名.libsysfs 负责读取/sys下的硬件信息.udev程序负责协调namedev和libsysfs,来完成指定的命名策略.当有设备添加或移出时,/sbin/hotplug由内核调用.提供相应设备的特征信息.如:设备类型,sysfs中的哪个设备等.udev获得这些信息,然后调用namedev,为设备指定一个名称.如果这是一个已经增加的新设备,则udev使用libsysfs来获得设备的主从设备号,然后在/dev下建立设备文件.如果这个设备已经移出,则将从/dev下删除理解和认识udev【转】2011-07-15 15:48:22| 分类:linux 基础Basic | 标签:|字号大中小订阅本文来自:/u/6541/showart_396425.html因为本身从事存储行业,在工作中多次碰到用户有这样的要求:我的linux系统中原来有一块SCSI硬盘,系统分配的设备文件是/dev/sda。
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"。
udev env 规则
udev env 规则**一、了解udev简介**udev是一个用于管理系统设备和驱动的Linux内核模块。
它能够根据设备的唯一标识符(如UEFI、MAC地址等)动态地加载和卸载驱动,实现对设备的自动识别和管理。
udev的环境变量配置对于系统的设备管理至关重要。
**二、掌握udev环境变量配置**1.配置udev环境变量在Linux系统中,可以通过在`/etc/udev/udev.conf`文件中配置udev的环境变量。
主要配置项包括:- `ACTION`:设置设备动作,如`KERNEL=="module",RUN+="modprobe $module"`。
- `SUBSYSTEM`:设置设备子系统,如`SUBSYSTEM=="usb", ATTRS{idVendor}=="0x1234", ATTRS{idProduct}=="0x5678"`。
2.编写udev规则udev规则文件位于`/etc/udev/rules.d/`目录下。
规则文件以`.rules`为扩展名,例如`01-mydevice.rules`。
编写规则时,可以使用以下语法:- `ACTION`:设置设备动作,如`ACTION=="add",KERNEL=="module", RUN+="modprobe $module"`。
- `ATTRS`:设置设备属性,如`ATTRS{idVendor}=="0x1234", ATTRS{idProduct}=="0x5678"`。
- `DEVICE`:设置设备路径,如`DEVICE=="/dev/ttyUSB0"`。
**三、实践udev规则编写**以一个USB设备为例,编写udev规则使其在插入时自动加载驱动。
udev手册
udev手册udev是Linux下的一种设备管理机制,通过配置udev可以实现对设备的自动检测和配置。
本手册将详细介绍udev的基本原理、配置方法以及常见用途。
一、udev简介udev是Linux内核提供的一种动态设备管理机制,它负责在Linux 系统启动时自动检测和配置硬件设备。
udev可以根据自定义规则对设备进行命名、修改属性以及执行自定义脚本等操作,从而方便用户管理和使用设备。
二、udev的基本原理udev的工作原理可以概括为以下几个步骤:1. 设备检测:当系统启动或设备插入时,udev会检测系统中的所有设备,并生成相应的设备节点。
2. 规则匹配:udev通过与配置文件中的规则进行匹配,确定应该对该设备执行哪些操作。
3. 设备命名:在确定了设备应该执行的操作后,udev会为设备生成一个唯一的设备名,方便用户识别和操作设备。
4. 属性配置:udev可以根据规则设置设备的属性,如权限、访问控制、驱动程序等。
5. 自定义脚本执行:用户可以通过udev配置文件执行自定义脚本,对设备进行特定的操作。
三、udev的配置方法udev的配置文件位于/etc/udev/rules.d/目录下,一般以后缀为.rules的文件格式存储。
用户可以在该目录下创建或修改规则文件来实现对设备的自定义管理。
1. 规则编写:udev的规则文件由一系列的匹配规则和操作指令组成。
用户可以根据自己的需求编写规则,以对设备进行特定的操作。
2. 规则命名:规则文件的命名一般以数字开头,数字越小的规则会被先执行。
用户可以根据规则的执行顺序进行命名,以确保规则按照期望的顺序执行。
3. 规则示例:下面是一个示例规则文件,用于将USB设备的权限设置为可读写并执行一个自定义脚本:SUBSYSTEM=="usb", ATTR{idVendor}=="1234",ATTR{idProduct}=="5678", MODE="0666", RUN+="/path/to/script"该规则表示当检测到usb子系统中的设备的vendor ID为1234,product ID为5678时,将设备的权限设置为可读写(0666),并执行路径为/path/to/script的脚本。
linux 7 udev 添加规则生效
linux 7 udev 添加规则生效【最新版】目录1.背景介绍:Linux 7 与 udev2.udev 添加规则3.规则生效4.总结正文【背景介绍:Linux 7 与 udev】在 Linux 操作系统中,udev 是一个用于管理设备驱动程序和设备的子系统。
它负责检测、配置、激活和管理硬件设备,例如硬盘、USB 设备等。
在 Linux 7 系统中,udev 的功能得到了进一步加强,为用户提供了更加灵活、可靠的管理方式。
【udev 添加规则】在 Linux 7 中,要使用 udev 添加规则,需要编辑 udev 规则文件。
通常情况下,规则文件位于 /etc/udev/rules.d/ 目录下。
可以使用文本编辑器,如 nano、vim 等,打开相应的规则文件,并添加自己的规则。
例如,要在 /etc/udev/rules.d/ 目录下添加一个名为“my_rule”的规则文件,可以执行以下命令:```sudo nano /etc/udev/rules.d/my_rule```在打开的文本编辑器中,添加自己的规则。
规则通常由三部分组成:设备类型、设备属性和操作。
其中,设备类型表示设备的类别,如“block”或“char”;设备属性表示设备的具体信息,如设备路径、设备主次号等;操作表示对设备进行的操作,如“add”、“remove”等。
例如,添加一个针对硬盘设备的规则,可以这样编写:```KERNEL=="sda", ATTR{DEVICE}=="0:0:0:0", TAG="add",ACTION="add_device /dev/sda0 block"```【规则生效】在添加完规则后,需要重新加载 udev 规则,使新添加的规则生效。
可以使用如下命令重新加载 udev 规则:```sudo udevadm control --reload-rules```此时,新添加的规则将会生效,并按照规则中的操作对设备进行管理。
学会使用linux热插拔之udev的使用方法
学会使用linux热插拔之udev的使用方法Udev相关的文章很多,本文的主要目的不是提供一个完整的教学文档,对其使用,只是给出网上现有的主要资源。
着重分析其基本工作原理以及在使用中遇到的一些README文档没有明确说明的问题。
1 基本概念udev文件系统是针对2.6内核,提供一个基于用户空间的动态设备节点管理和命名的解决方案,网上关于为什么要使用udev文件系统,udev文件系统和devfs文件系统的比较,等等的文章已经很多了,如果你想了解这方面的内容,请直接搜索相关的关键字。
udev的官方网址:http://kernel/pub/linux/utils/kernel/hotplug/udevlsrc code的下载地址:http://us.kernel/pub/linux/uTIls/kernel/hotplug/此外,关于udev的rules规则的撰写,网上也有很多文章,如果要获得最准确的版本,可以在src code的代码树里找到wriTIng_udev_rules的帮助文档,这个文档其实没有逐条介绍rules的所有关键字,可以结合man udev 和udev自带的一些rules文件来理解如何撰写你所需要的规则文件。
2 安装和启动2.1 安装Udev的代码树里的版本很多,我下载的最新的版本是udev-117,配合2.6.21版本的内核能够正常使用。
网上很多文章介绍的可能都是稍微早期一些的版本,有些步骤包括udev 的README文档似乎描述的不是很准确。
基本上这个版本的udev需要注意的是,安装时只需要udevd,udevadm两个文件,其它必需的包括udevtrigger等只是udevadm的一个符号链接。
udevstart不是必需的。
当然Udev.conf等配置文件还是一样。
2.2 启动你可以在启动脚本中用udevd –d 参数启动udev文件系统的守护进程,然后使用udevtrigger将buildin的设备驱动的节点创建出来,以后模块插入移除时节点的管理会自动。
udev设备文件系统与devfs设备文件系统对比
一.>devfs设备文件简略介绍(2.6版本以后内核都采用udev设备文件系统)devfs(设备文件系统)是由2.4内核引入的,具有如下优点:1.可以通过程序在设备初始化时在/dev目录下创建设备文件,卸载时将它删除。
2.设备驱动程序可以指定设备号,所有者,和权限位,用户空间可以修改所有者和权限位。
3.不再需要为设备驱动程序分配主设备号以及处理的次设备号,在程序可以直接给register_chrdev()传递0主设备号以动态获得可用的主设备号,并在devfs_register()中指定次设备号。
在2.6内核以前一直使用的是devfs,devfs挂载于/dev目录下,提供了一种类似于文件的方法来管理位于/dev目录下的所有设备,我们知道/dev目录下的每一个文件都对应的是一个设备,至于当前该设备存在与否先且不论,而且这些特殊文件是位于根文件系统上的,在制作文件系统的时候我们就已经建立了这些设备文件,因此通过操作这些特殊文件,可以实现与内核进行交互。
但是devfs文件系统有一些缺点,例如:不确定的设备映射,有时一个设备映射的设备文件可能不同,例如我的U盘可能对应sda有可能对应sdb;没有足够的主/辅设备号,当设备过多的时候,显然这会成为一个问题;/dev目录下文件太多而且不能表示当前系统上的实际设备;命名不够灵活,不能任意指定等等。
二.>udev设备文件详细介绍devfs 存在的主要的问题是它处理设备检测、创建和命名的方式,其中设备节点的命名可能是最严重的问题。
一般可接受的方式是,如果设备名是可配置的,那么设备命名策略应该由系统管理员决定,而不是由某些开发者强制规定。
devfs 文件系统还存在竞争条件(race conditions)的问题,这是它天生的设计缺陷,不对内核做彻底的修改就无法修正这个问题。
sysfs文件系统:/u1/55599/showart_1089096.html上篇文章简单介绍sysfs文件系统,您可能想知道sysfs 是怎么认出系统中存在的设备以及应该使用什么设备号。
udev文件的写法 -回复
udev文件的写法-回复udev文件的写法指的是在Linux系统中使用udev技术创建和配置udev 规则文件的方法。
udev是Linux系统中的一种设备管理机制,它负责监控硬件设备的插拔,并根据事先定义好的规则对设备进行自动配置。
这篇文章将一步一步回答有关udev文件的写法的问题,帮助读者了解如何使用udev来创建和配置udev规则文件。
首先,创建udev规则文件需要以下几个步骤:1. 确定规则文件的位置:udev规则文件通常存储在`/etc/udev/rules.d/`目录下,为了方便管理,我们可以在该目录下创建一个新的规则文件。
2. 定义规则的属性:在规则文件中,我们需要定义一个或多个属性,这些属性可以用来匹配具体的硬件设备。
udev提供了多种属性可以用来识别设备,例如设备的路径、设备的基本属性(如VID, PID等)等。
通过设备的属性,udev可以识别和区分不同的设备。
3. 添加规则:在规则文件中,我们可以使用`SUBSYSTEM`关键字来匹配设备所属的子系统。
例如,如果我们想匹配USB设备,可以在规则文件中添加`SUBSYSTEM=="usb"`。
4. 使用属性匹配设备:在规则文件中,我们可以使用属性匹配设备。
例如,我们可以使用设备的路径来匹配设备,即`ENV{DEVNAME}=="/dev/sdb"`。
我们还可以使用联合操作符来将多个属性组合在一起,以更精确地匹配设备。
5. 添加动作:在规则文件中,我们可以使用`ACTION`关键字来指定udev 在设备插拔时执行的动作。
udev支持多种动作,例如运行脚本、加载驱动程序、更新设备节点等。
通过定义相应的动作,我们可以根据需要对设备进行自动配置。
6. 保存规则文件并重启udev服务:完成规则文件的编辑后,我们需要将规则文件保存到`/etc/udev/rules.d/`目录下,并重启udev服务,以使配置生效。
linux usb设备命名规则
linux usb设备命名规则
在Linux系统中,USB设备的命名规则可以分为两种,传统的设备文件名和通过udev规则动态生成的设备文件名。
传统的设备文件名是通过设备的接口和编号来确定的。
在Linux系统中,USB设备通常被识别为类似于“/dev/sda”、
“/dev/sdb”等的设备文件名。
其中,“sda”代表第一个SATA设备,“sdb”代表第二个SATA设备,以此类推。
对于USB设备,这些设备文件名可能会根据插入的顺序发生变化,因此不太可靠。
另一种命名规则是通过udev规则动态生成的设备文件名。
udev 是Linux系统中用于管理设备的设备管理器,它可以根据设备的属性和规则来动态生成设备文件名。
在这种情况下,USB设备的命名可能会根据设备的厂商ID、产品ID、序列号等属性来确定,从而使得设备的命名更加可靠和具有唯一性。
总的来说,Linux系统中USB设备的命名规则是由系统内核和udev管理器共同决定的。
传统的设备文件名可能会根据设备的插入顺序而变化,而通过udev规则动态生成的设备文件名则更加可靠和
具有唯一性。
这些命名规则可以帮助用户在Linux系统中正确识别和管理USB设备。
使用udev高效、动态地管理Linux设备文件
使用 ude v 高效、动态地管理 Linu x 设备文件概述:Li nux 用户常常会很难鉴别同一类型的设备名,比如eth0, eth1, sda, sdb等等。
通过观察这些设备的内核设备名称,用户通常能知道这些是什么类型的设备,但是不知道哪一个设备是他们想要的。
例如,在一个充斥着本地磁盘和光纤磁盘的设备名清单(/dev/sd*)中,用户无法找到一个序列号为“35000c50000a7e f67”的磁盘。
在这种情况下,udev就能动态地在/dev目录里产生自己想要的、标识性强的设备文件或者设备链接,以此帮助用户方便快捷地找到所需的设备文件。
udev简介什么是 ud ev?udev是 Lin ux2.6内核里的一个功能,它替代了原来的 de vfs,成为当前L inux默认的设备管理工具。
udev以守护进程的形式运行,通过侦听内核发出来的 uev ent 来管理/de v目录下的设备文件。
不像之前的设备管理工具,ude v 在用户空间(u ser s pace)运行,而不在内核空间 (ke rnelspace) 运行。
使用udev的好处:我们都知道,所有的设备在L inux里都是以设备文件的形式存在。
在早期的L inux版本中,/dev目录包含了所有可能出现的设备的设备文件。
很难想象 Li nux 用户如何在这些大量的设备文件中找到匹配条件的设备文件。
现在u dev 只为那些连接到Lin ux 操作系统的设备产生设备文件。
并且udev能通过定义一个 ud ev 规则 (rul e) 来产生匹配设备属性的设备文件,这些设备属性可以是内核设备名称、总线路径、厂商名称、型号、序列号或者磁盘大小等等。
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规则生效
银河麒麟udev规则生效摘要:I.引言- 介绍银河麒麟udev 规则II.udev 规则的作用- udev 是什么- udev 规则如何工作III.银河麒麟udev 规则的生效- 规则生效的具体流程- 规则生效的实例IV.银河麒麟udev 规则的优势- 提高系统性能- 增强系统安全性V.结论- 总结银河麒麟udev 规则的生效及其优势正文:银河麒麟udev 规则生效,为我国Linux 操作系统的发展和应用带来了新的可能。
udev 是一个Linux 内核模块,负责管理系统设备,银河麒麟udev 规则则是针对银河麒麟操作系统定制的一套设备管理规则。
本文将详细介绍银河麒麟udev 规则的作用、生效流程和优势。
udev 是一个动态设备管理器,它可以在系统启动时自动检测并加载设备驱动程序。
当设备插入或拔出时,udev 会自动更新设备状态,并加载或卸载相应的驱动程序。
这使得Linux 系统能够更好地支持新设备,提高系统性能。
银河麒麟udev 规则生效的具体流程如下:1.设备插入或拔出2.udev 内核模块检测到设备变动3.udev 根据设备类型匹配相应的规则4.规则执行相应的操作,如加载驱动程序、更新设备状态等5.设备状态更新完成银河麒麟udev 规则生效的一个实例是,当用户插入一个U 盘时,udev 会自动检测到设备变化,并根据预设的规则找到对应的驱动程序加载。
同时,udev 还会自动挂载U 盘,使用户可以访问其中的文件。
当用户拔出U 盘时,udev 会执行相反的操作,卸载驱动程序并取消挂载。
银河麒麟udev 规则的优势主要体现在以下几个方面:1.提高系统性能:udev 可以动态地加载和卸载设备驱动程序,避免了静态设备管理的繁琐操作,从而提高系统性能。
2.增强系统安全性:udev 可以限制特定设备或设备的访问权限,防止恶意代码利用设备漏洞入侵系统。
总之,银河麒麟udev 规则的生效为我国Linux 操作系统的发展和应用带来了新的机遇。
udev env 规则
udev env 规则一、了解udev简介udev是一个用于管理Linux系统中设备驱动的动态链表。
它能够根据硬件设备的属性生成适当的设备节点,并在设备删除或卸载时删除这些节点。
此外,udev还提供了强大的设备事件处理机制,允许用户自定义设备驱动的加载和卸载。
在本篇文章中,我们将重点介绍如何使用udev环境变量配置和编写udev规则。
二、掌握udev环境变量配置1.配置udev环境变量要在Linux系统中使用udev,首先需要配置udev环境变量。
您可以通过在终端中执行以下命令来设置环境变量:```bashexport udev_log=/var/log/udev/udev.logexport udev_rules_dir=/etc/udev/rulesexport udev_state_dir=/var/lib/udev/stateexport udev_control_dir=/var/lib/udev/control```2.配置udev配置文件udev的配置文件位于`/etc/udev/`目录下。
您可以编辑`/etc/udev/udev.conf`文件,以自定义udev的行为。
以下是一个典型的udev配置文件示例:[main]udev_log=/var/log/udev/udev.logudev_state_dir=/var/lib/udev/stateudev_control_dir=/var/lib/udev/controlkernel_module_path=/lib/modules/`uname -r`/kernel/source_path=/usr/share/doc/udev/[hooks]action=/etc/udev/rules.d/*.ruleskmod=/etc/modules.d/*.confpersistent=/etc/udev/persistent.rules```三、实践udev规则编写1.编写udev规则文件udev规则文件位于`/etc/udev/rules`目录下。
udev语法
udev是Linux系统中一个重要的系统工具,用于管理设备驱动程序和设备节点。
它通过监视系统中的设备变化,自动更新设备文件和相关配置,使得设备管理和维护更加方便和高效。
下面是对udev语法的介绍,希望能够对您有所帮助。
udev语法主要涉及udev规则文件的使用,规则文件用于指定设备文件的关联规则,以及相关的动作和选项。
udev规则文件使用文本编辑器编写,语法规则如下:1. 规则文件的基本格式:udev规则文件以一个数字开头,后面跟着一系列规则,每个规则由一个或多个规则条目组成。
每个规则条目由一个动作(action)和一个或多个条件(condition)组成。
2. 动作(action):udev规则文件中的动作指定了当满足条件时应该执行的操作。
常见的动作包括:* add:将新设备添加到系统中,并创建相应的设备文件和配置文件。
* remove:将已存在的设备从系统中移除,并删除相应的设备文件和配置文件。
* change:当设备属性发生变化时触发,通常用于更新设备文件和相关配置。
* move:将设备移动到不同的挂载点,并更新设备文件路径。
3. 条件(condition):udev规则文件中的条件用于指定哪些设备应该匹配该规则。
条件通常包括设备节点名称、设备属性、设备驱动程序等。
当满足所有条件时,该规则才会生效。
* 节点名称:使用节点名称进行匹配,可以指定具体的设备文件路径或通配符匹配多个文件路径。
* 属性:使用属性进行匹配,例如设备的厂商、型号、接口等。
* 驱动程序:使用驱动程序进行匹配,可以指定特定的驱动程序或使用通配符匹配多个驱动程序。
除了基本语法规则外,udev还提供了许多选项和功能,可以根据需要进行配置。
例如,可以使用选项指定挂载点、设备文件的权限和所有权、日志记录等。
此外,udev还支持插件机制,可以扩展其功能,满足不同场景下的需求。
总之,udev语法是Linux系统中的重要概念,用于管理设备驱动程序和设备文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在对待设备文件这块,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配置之前,我们一定要仔细,通常的考虑是:你最好不要修改系统预置的那些规则,特别不要指定影响非常广泛的配置,比如上面例子中的第一行。
不正确的配置可能会导致严重的系统问题或者系统根本就无法这个正确的访问设备。
而我们正确的做法应该是在/etc/udev/rules.d/下创建一个信的规则文件。
确定你给出的文件的后缀是rules文件名给出的数字序列应该比标准配置文件高。
比如,你可以创建一个名为99-my-udev.rules的规则文件。