Linux中的udev
Linux中的udev
在服务器上安装sentaurus需要更改网卡名称,涉及到了更改/etc/udev
目录下的配置文件. 参考一些资料实践学习一下.
daemon与udev
系统为了某些功能必须提供一些服务,这个服务被称为service. service的提供总是依赖于后台运行的某个程序,我们称完成这个service的程序为daemon (守护进程). 由于系统会提供各种各样的服务,因此也就由着各种各样的daemon运行在系统中. 这些daemon的命名通常是在其对应的服务后面加上一个d,代表daemon.
udev是一个设备管理工具,以守护进程的形式运行,通过侦听内核发出的uevent来管理/dev
目录下的设备文件. 虽然设备的底层支持是在内核层面处理的,但是它们相关的事件管理是在用户空间通过udev来管理的,即由udevd守护进程完成的. 通过对udev的规则文件进行编写,它可以实现根据系统中的硬件设备的状态来动态更新设备文件,执行相应操作等等,比如当某个硬盘驱动器插入时,触发某个事件,执行某个任务.
其工作流程如下图所示
udev的规则文件
udev的规则定义在一个以.rules
为扩展名的文件中。这些文件主要放在两个位置:/usr/lib/udev/rules.d
和/etc/udev/rules.d
. 前一个目录用于存放系统安装的规则,后一个目录保留给自定义规则。
usr是Unix Software Resource的缩写,也就是Unix操作系统软件资源所放置的目录,类似于Windows系统下的C:\Program Files\
. etc就是etc. ,代表用于放置一堆零碎的配置文件的目录.
使用udevadm monitor
每一个软件下面大致都有bin, include, src, lib等目录,分别放置着这个软件的可执行文件、头文件、源文件以及库文件,/usr
下面也是同样的目录结构,只不过相当于把很多个系统级软件放在一起,即/usr/bin
下面有多个不同系统软件的可执行文件,/usr/lib
下面放置着多个对应的对应系统软件的库文件.
数字越小就表示规则越优先. udev配置文件编写非常直观,每个配置文件由多条配置规则组成,每条配置规则包含若干个用逗号隔开的键值对. 键分为匹配键和赋值键,当条件满足所有匹配键的要求后,udev执行赋值键的操作.
比如我们可以创建一个/usr/local/bin/trigger.sh
脚本:
1 | echo Hello, world! |
在/etc/udev/rules.d
目录中新建一个80-local.rules
脚本
1 | SUBSYSTEM=="block", ACTION=="add", RUN+="/usr/local/bin/trigger.sh" |
这条规则表示一旦插入了一个块设备,就运行trigger.sh脚本.
修改网卡名称
参考
- 鸟哥的Linux私房菜
- 在 Linux 中如何编写基本的 udev 规则
- udev 入门:管理设备事件的 Linux 子系统
- linux下udev详解