udev
開發者Greg Kroah-Hartman和Kay Sievers
首次发布2003年11月,​20年前​(2003-11
当前版本
  • 255 (2023年12月6日;穩定版本)[1]
編輯維基數據鏈接
源代码库 編輯維基數據鏈接
编程语言C
操作系统Linux内核
类型设备节点
许可协议GPLv2
网站官方网站

udev 是Linux kernel的设备管理器,主要管理/dev目錄底下的设备节点。它同时也是用来接替devfs及hotplug的功能,这意味着它要在添加/删除硬件时处理/dev目录以及所有用户空间的行为,包括加载固件时。

udev的最新版本依赖于升级后的Linux kernel 2.6.13的uevent接口的最新版本。使用新版本udev的系统不能在2.6.13以下版本启动,除非使用noudev参数来禁用udev并使用传统的/dev来进行设备读取。

2012年4月,udev被合併至systemd

概要

在传统的Linux系统中,/dev目录下的设备节点为一系列静态存在的文件,而udev则动态提供了在系统中实际存在的设备节点。虽然devfs提供了类似功能,udev的支持者也给出了很多udev实现得比devfs好的理由[2]

运行方式

udev是一个通用的内核设备管理器。它以守护进程的方式运行于Linux系统,并监听在新设备初始化或设备从系统中移除时,内核(通过netlink socket)所发出的uevent。

系统提供了一套规则用于匹配可发现的设备事件和属性的导出值。匹配规则可能命名并创建设备节点,并运行配置程序来对设备进行设置。udev规则可以匹配像内核子系统、内核设备名称、设备的物理等属性,或设备序列号的属性。规则也可以请求外部程序提供信息来命名设备,或指定一个永远一样的自定义名称来命名设备,而不管设备什么时候被系统发现。

系统架构

此條目需要更新。 (2014年1月15日)請更新本文以反映近況和新增内容。完成修改後請移除本模板。

udev系统可以分为三个部分:

系统获取内核通过netlink socket发出的信息。早期的版本使用hotplug,并在/etc/hotplug.d/default添加一个链接到自身来达到目的。

命令格式

BUS 总线 KERNEL 内核名如sd* ID 设备id 如总线id PLACE

SYSFS{filename} 或 ATTR{filename}

PROGRAM 调用外部程序 RESULT 匹配program返回的结果 NAME

SYMLINK 连接规则

编写规则

udev配置文件是/etc/udev/udev.conf,文件内容中很重要的一项是指定udev规则存储的目录,形如udev_rules=“/etc/udev/rules.d”. 指定的目录中存储一系列以.rules结束的规则文件,每个文件处理一系列规则来帮助udev分配名字给设备文件并保证内核可以识别此名字。

规则文件由系列键-值对组成,键值对分两类:匹配键(使用操作符"==","!="等)和赋值键(使用"=","+=",":="等)。匹配键判断规则是否应被应用,赋值键可以被分配一到多个值。

有些常用的键已经有了固定的含义,这里列举出最基本的几个。这也是基本规则之一,更多编辑规则请参见man udev页。

常用键举例:KERNEL=="hdb", DRIVER=="ide-disk", NAME="my_spare_disk", SYMLINK+="sparedisk"

作者

udev由Greg Kroah-Hartman和Kay Sievers共同开发,并得到Dan Stekloff等人的帮助。

參見

外部链接

参考文献

  1. ^ Release 255. 2023年12月6日 [2023年12月19日]. 
  2. ^ udev and devfs - The final word. 2003-12-30 [2008-01-13]. (原始内容存档于2011-04-11) (英语).  Authors list列表中的|first1=缺少|last1= (帮助)