<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Udev</id>
	<title>Udev - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Udev"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Udev&amp;action=history"/>
	<updated>2026-06-27T05:25:31Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Udev&amp;diff=312448&amp;oldid=prev</id>
		<title>imported&gt;Cewbot：​Cewbot: 修正維基語法 10: 連結方括號未對應</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Udev&amp;diff=312448&amp;oldid=prev"/>
		<updated>2023-07-11T01:16:20Z</updated>

		<summary type="html">&lt;p&gt;Cewbot: &lt;a href=&quot;/index.php?title=WP:WPCHECK&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:WPCHECK（页面不存在）&quot;&gt;修正維基語法&lt;/a&gt; 10: 連結方括號未對應&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
}}&lt;br /&gt;
{{lowercase|udev}}&lt;br /&gt;
{{Infobox software&lt;br /&gt;
| name                 = systemd&lt;br /&gt;
| title                = udev&lt;br /&gt;
| logo                 = &lt;br /&gt;
| screenshot           = &lt;br /&gt;
| caption              = &lt;br /&gt;
| collapsible          = &lt;br /&gt;
| author               = &lt;br /&gt;
| developer            = [[Greg Kroah-Hartman]]和[[Kay Sievers]]&lt;br /&gt;
| released             = {{Start date and age|2003|11}}&lt;br /&gt;
| programming language = [[C语言|C]]&lt;br /&gt;
| operating system     = [[Linux内核]]&lt;br /&gt;
| platform             = &lt;br /&gt;
| size                 = &lt;br /&gt;
| language             = &lt;br /&gt;
| genre                = [[设备文件系统|设备节点]]&lt;br /&gt;
| license              = [[GNU General Public License|GPLv2]]&lt;br /&gt;
| website              = {{Official website|https://www.freedesktop.org/wiki/Software/systemd}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;udev&amp;#039;&amp;#039;&amp;#039; 是Linux kernel的设备管理器，主要管理&amp;lt;code&amp;gt;/dev&amp;lt;/code&amp;gt;目錄底下的[[设备节点]]。它同时也是用来接替[[devfs]]及[[hotplug]]的功能，这意味着它要在添加/删除硬件时处理&amp;lt;code&amp;gt;/dev&amp;lt;/code&amp;gt;目录以及所有用户空间的行为，包括加载[[固件]]时。&lt;br /&gt;
&lt;br /&gt;
udev的最新版本依赖于升级后的Linux kernel 2.6.13的[[uevent]]接口的最新版本。使用新版本udev的系统不能在2.6.13以下版本启动，除非使用&amp;#039;&amp;#039;noudev&amp;#039;&amp;#039;参数来禁用udev并使用传统的&amp;lt;code&amp;gt;/dev&amp;lt;/code&amp;gt;来进行设备读取。&lt;br /&gt;
&lt;br /&gt;
2012年4月，udev被合併至[[systemd]]。&lt;br /&gt;
&lt;br /&gt;
== 概要 ==&lt;br /&gt;
在传统的Linux系统中，&amp;lt;code&amp;gt;/dev&amp;lt;/code&amp;gt;目录下的设备节点为一系列静态存在的文件，而udev则动态提供了在系统中实际存在的设备节点。虽然devfs提供了类似功能，udev的支持者也给出了很多udev实现得比devfs好的理由&amp;lt;ref&amp;gt;{{cite web |url=http://kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs |title=udev and devfs - The final word |accessdate=2008-01-13 |first=Greg Kroah-Hartman |date=2003-12-30 |language=en |deadurl=yes |archiveurl=https://web.archive.org/web/20110411233322/http://kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs |archivedate=2011-04-11 }}&amp;lt;/ref&amp;gt;：&lt;br /&gt;
&lt;br /&gt;
*udev支持设备的固定命名，而并不依赖于设备插入系统的顺序。默认的udev设置提供了存储设备的固定命名。可以使用其vid（vendor）、pid（device）、设备名称（model）等属性或其父设备的对应属性来确认某一设备。&lt;br /&gt;
*udev完全在[[用户空间]]执行，而不是像devfs在[[内核空间]]一样执行。结果就是udev将命名策略从内核中移走，并可以在节点创建前用任意程序在设备属性中为设备命名。&lt;br /&gt;
&lt;br /&gt;
== 运行方式 ==&lt;br /&gt;
udev是一个通用的内核设备管理器。它以守护进程的方式运行于Linux系统，并监听在新设备初始化或设备从系统中移除时，内核（通过[[netlink]] socket）所发出的uevent。&lt;br /&gt;
&lt;br /&gt;
系统提供了一套规则用于匹配可发现的设备事件和属性的导出值。匹配规则可能命名并创建设备节点，并运行配置程序来对设备进行设置。udev规则可以匹配像内核子系统、内核设备名称、设备的物理等属性，或设备序列号的属性。规则也可以请求外部程序提供信息来命名设备，或指定一个永远一样的自定义名称来命名设备，而不管设备什么时候被系统发现。&lt;br /&gt;
&lt;br /&gt;
== 系统架构 ==&lt;br /&gt;
{{更新|time=2014-01-15T07:57:19+00:00}}&lt;br /&gt;
&lt;br /&gt;
udev系统可以分为三个部分：&lt;br /&gt;
&lt;br /&gt;
* libudev函数库，可以用来获取设备的信息。&lt;br /&gt;
* udevd守护进程，处于用户空间，用于管理虚拟&amp;lt;code&amp;gt;/dev&amp;lt;/code&amp;gt;&lt;br /&gt;
* 管理命令udevadm，用来诊断出错情况。&lt;br /&gt;
&lt;br /&gt;
系统获取内核通过netlink socket发出的信息。早期的版本使用[[hotplug]]，并在&amp;lt;tt&amp;gt;/etc/hotplug.d/default&amp;lt;/tt&amp;gt;添加一个链接到自身来达到目的。&lt;br /&gt;
&lt;br /&gt;
==  命令格式  ==&lt;br /&gt;
BUS &lt;br /&gt;
总线&lt;br /&gt;
KERNEL &lt;br /&gt;
内核名如sd*&lt;br /&gt;
ID &lt;br /&gt;
设备id 如总线id&lt;br /&gt;
PLACE &lt;br /&gt;
&lt;br /&gt;
SYSFS{filename} 或 ATTR{filename}&lt;br /&gt;
&lt;br /&gt;
PROGRAM &lt;br /&gt;
调用外部程序 &lt;br /&gt;
RESULT &lt;br /&gt;
匹配program返回的结果&lt;br /&gt;
NAME &lt;br /&gt;
&lt;br /&gt;
SYMLINK &lt;br /&gt;
连接规则&lt;br /&gt;
&lt;br /&gt;
== 编写规则 ==&lt;br /&gt;
udev配置文件是/etc/udev/udev.conf，文件内容中很重要的一项是指定udev规则存储的目录，形如udev_rules=“/etc/udev/rules.d”. 指定的目录中存储一系列以.rules结束的规则文件，每个文件处理一系列规则来帮助udev分配名字给设备文件并保证内核可以识别此名字。&lt;br /&gt;
&lt;br /&gt;
规则文件由系列键-值对组成，键值对分两类：匹配键(使用操作符&amp;quot;==&amp;quot;,&amp;quot;!=&amp;quot;等)和赋值键(使用&amp;quot;=&amp;quot;,&amp;quot;+=&amp;quot;,&amp;quot;:=&amp;quot;等)。匹配键判断规则是否应被应用，赋值键可以被分配一到多个值。&lt;br /&gt;
&lt;br /&gt;
有些常用的键已经有了固定的含义，这里列举出最基本的几个。这也是基本规则之一，更多编辑规则请参见man udev页。   &lt;br /&gt;
* KERNEL - 匹配设备的内核名字&lt;br /&gt;
* SUBSYSTEM - 匹配设备的子系统&lt;br /&gt;
* DRIVER - 匹配设备驱动名&lt;br /&gt;
* NAME - 应当被采用为设备节点的名字&lt;br /&gt;
* SYMLINK - 一系列被作为设备节点替补名字的符号链接&lt;br /&gt;
常用键举例：KERNEL==&amp;quot;hdb&amp;quot;, DRIVER==&amp;quot;ide-disk&amp;quot;, NAME=&amp;quot;my_spare_disk&amp;quot;, SYMLINK+=&amp;quot;sparedisk&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 作者 ==&lt;br /&gt;
udev由[[Greg Kroah-Hartman]]和[[Kay Sievers]]共同开发，并得到[[Dan Stekloff]]等人的帮助。&lt;br /&gt;
&lt;br /&gt;
== 參見 ==&lt;br /&gt;
*[[硬件抽象層]]&lt;br /&gt;
*[[DKMS]]&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
*{{en}}[https://web.archive.org/web/20071203211553/http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html udev在kernel.org的主页]&lt;br /&gt;
*{{en}}[https://web.archive.org/web/20080508024447/http://vrfy.org/log/recent-state-of-udev.html Kay Sievers写的udev最近动态]&lt;br /&gt;
*{{en}}[http://www.reactivated.net/writing_udev_rules.html 如何编写udev规则] {{Wayback|url=http://www.reactivated.net/writing_udev_rules.html |date=20220116210647 }}&lt;br /&gt;
*{{en}}[https://web.archive.org/web/20071127023731/http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ udev问答集]&lt;br /&gt;
*{{en}}[http://www.gentoo.org/doc/en/udev-guide.xml Gentoo的udev指南] {{Wayback|url=http://www.gentoo.org/doc/en/udev-guide.xml |date=20130716125945 }}&lt;br /&gt;
*{{en}}[https://web.archive.org/web/20071127023736/http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs udev和devfs的对比]&lt;br /&gt;
*{{en}}[https://web.archive.org/web/20071114171832/http://www.linux1394.org/faq.php#udev Linux1394常见问题：在不同驱动器上创建设备节点要如何设置udev规则]&lt;br /&gt;
*{{en}}[https://web.archive.org/web/20070928142915/http://www.linuxformat.co.uk/pdfs/LXF66.tut_udev.pdf udev教程]&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
{{Linux内核}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Linux文件系统相关软件]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Cewbot</name></author>
	</entry>
</feed>