目录

udev是什么

udev优势

udev 工作流程图

相关术语

udev 的配置和使用

制定 udev 规则和查询设备信息的实例

eth0变为eth1的解决办法


udev是什么

udev 是 Linux2.6 内核里的一个功能,它替代了原来的 devfs,成为当前 Linux 默认的设备管理工具。udev 以守护进程的形式运行,通过侦听内核发出来的 uevent 来管理 /dev目录下的设备文件。不像之前的设备管理工具,udev 在用户空间 (user space) 运行,而不在内核空间 (kernel space) 运行。

udev优势

我们都知道,所有的设备在 Linux 里都是以设备文件的形式存在。在早期的 Linux 版本中,/dev目录包含了所有可能出现的设备的设备文件。很难想象 Linux 用户如何在这些大量的设备文件中找到匹配条件的设备文件。现在 udev 只为那些连接到 Linux 操作系统的设备产生设备文件。并且 udev 能通过定义一个 udev 规则 (rule) 来产生匹配设备属性的设备文件,这些设备属性可以是内核设备名称、总线路径、厂商名称、型号、序列号或者磁盘大小等等。
    动态管理:当设备添加 / 删除时,udev 的守护进程侦听来自内核的 uevent,以此添加或者删除 /dev下的设备文件,所以 udev 只为已经连接的设备产生设备文件,而不会在 /dev下产生大量虚无的设备文件。
    自定义命名规则:通过 Linux 默认的规则文件,udev 在 /dev/ 里为所有的设备定义了内核设备名称,比如 /dev/sda、/dev/hda、/dev/fd等等。由于 udev 是在用户空间 (user space) 运行,Linux 用户可以通过自定义的规则文件,灵活地产生标识性强的设备文件名,比如 /dev/boot_disk、/dev/root_disk、/dev/color_printer等等。

udev 工作流程图

相关术语

设备文件:由于本文以较通俗的方式讲解 udev,所以设备文件是泛指在 /dev/下,可被应用程序用来和设备驱动交互的文件。而不会特别地区分设备文件、设备节点或者设备特殊文件。
    devfs:devfs是 Linux 早期的设备管理工具,已经被 udev 取代。
    sysfs:sysfs是 Linux 2.6 内核里的一个虚拟文件系统 (/sys)。它把设备和驱动的信息从内核的设备模块导出到用户空间 (userspace)。从该文件系统中,Linux 用户可以获取很多设备的属性。
    devpath:本文的 devpath是指一个设备在 sysfs文件系统 (/sys)下的相对路径,该路径包含了该设备的属性文件。udev 里的多数命令都是针对 devpath操作的。例如:sda的 devpath是 /block/sda,sda2 的 devpath是 /block/sda/sda2。
    内核设备名称:设备在 sysfs里的名称,是 udev 默认使用的设备文件名。

udev 的配置和使用

syslog默认会记录 udev 的日志,Linux 用户只能修改日志的级别 (err、info、degub 等 );设备的权限不能在 udev.conf 里设定,而是要在规则文件 (*.rules) 里设定。
udev 的规则和规则文件
规则文件是 udev 里最重要的部分,默认是存放在 /etc/udev/rules.d/下。所有的规则文件必须以“.rules”为后缀名。RHEL 有默认的规则文件,这些默认规则文件不仅为设备产生内核设备名称,还会产生标识性强的符号链接。
udev 按照规则文件名的字母顺序来查询全部规则文件,然后为匹配规则的设备管理其设备文件或文件链接。虽然 udev 不会因为一个设备匹配了一条规则而停止解析后面的规则文件,但是解析的顺序仍然很重要。通常情况下,建议让自己想要的规则文件最先被解析。比如,创建一个名为 /etc/udev/rules.d/10-myrule.rules的文件,并把你的规则写入该文件,这样 udev 就会在解析系统默认的规则文件之前解析到你的文件。
在规则文件里,除了以“#”开头的行(注释),所有的非空行都被视为一条规则,但是一条规则不能扩展到多行。规则都是由多个 键值对(key-value pairs)组成,并由逗号隔开,键值对可以分为 条件匹配键值对( 以下简称“匹配键 ”) 和 赋值键值对( 以下简称“赋值键 ”),一条规则可以有多条匹配键和多条赋值键。匹配键是匹配一个设备属性的所有条件,当一个设备的属性匹配了该规则里所有的匹配键,就认为这条规则生效,然后按照赋值键的内容,执行该规则的赋值。
KERNEL=="sda", NAME="my_root_disk", MODE="0660"
KERNEL 是匹配键,NAME 和 MODE 是赋值键。这条规则的意思是:如果有一个设备的内核设备名称为 sda,则该条件生效,执行后面的赋值:在 /dev下产生一个名为 my_root_disk的设备文件,并把设备文件的权限设为 0660。
仅当操作符是“==”或者“!=”时,其为匹配键;若为其他操作符时,都是赋值键。

制定 udev 规则和查询设备信息的实例

如何查找设备的信息 ( 属性 ) 来制定 udev 规则:
当我们为指定的设备设定规则时,首先需要知道该设备的属性,比如设备的序列号、磁盘大小、厂商 ID、设备路径等等。通常我们可以通过以下的方法获得:

1.查询sysfs文件系统:
前面介绍过,sysfs 里包含了很多设备和驱动的信息。
例如:设备 sda 的 SYSFS{size} 可以通过 cat /sys/block/sda/size得到;SYSFS{model} 信息可以通过 cat /sys/block/sda/device/model得到

2.udevinfo命令:
udevinfo 可以查询 udev 数据库里的设备信息。例如:用 udevinfo 查询设备 sda 的 model 和 size 信息:

实例:

实例1. 产生网卡设备文件的规则
 SUBSYSTEM=="net", SYSFS{address}=="AA:BB:CC:DD:EE:FF", NAME="public_NIC"
该规则表示:如果存在设备的子系统为 net,并且地址 (MAC address) 为“AA:BB:CC:DD:EE:FF”,为该设备产生一个名为 public_NIC 的设备文件。

实例2. 为指定大小的磁盘产生符号链接的规则
 SUBSYSTEM=="block", SYSFS{size}=="71096640", SYMLINK ="my_disk"
该规则表示:如果存在设备的子系统为 block,并且大小为 71096640(block),则为该设备的设备文件名产生一个名为 my_disk 的符号链接。

其中syspath都是指/sys下的路径:如/block/sda
udevadm info --help
udevadm test /block/sda
udevadm info  --query=all --path=/block/sda
udevadm info  --query=all --name=/dev/sda   结果同上
udevadm info  --export-db  | less 查看udev database,输出所有节点信息

[root@109-com1 scripts]# ps -ef|grep udevd  相关进程
root       431     1  0 Aug28 ?        00:00:00 /sbin/udevd -d
root      1199   431  0 Aug28 ?        00:00:00 /sbin/udevd -d
root     19382   431  0 Aug30 ?        00:00:00 /sbin/udevd -d
[root@localhost ~]# start_udev    使修改的配置文件生效,不用重启系统
正在启动 udev:                                            [确定]

udevd创建每一个节点的时候,都会fork出一个新的进程来单独完成这个节点的创建工作。
Uevent_seqnum 用来标识当前的uevent事件的序号(已产生了多少uevent事件),您能够通过如下操作来查看:
$ cat /sys/kernel/uevent_seqnum

eth0变为eth1的解决办法

udev 会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中, 所以在workstation改虚拟机的mac地址,会发生此种情况。udev会自动将其命名为eth1(累加的原则),所以在你的系统启动后,你使用 ifconfig看到的网卡名为eth1。
vi /etc/udev/rules.d/70-persistent-net.rules
改mac,改name,reboot

或者删除此规则文件,然后reboot,系统会重新绑定。

很多Linux distribution使用udev动态管理设备文件,并根据设备的信息对其进行持久化命名。例如在Debian etch中,udev会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中。而VMware会自动生成虚拟机的 mac地址。这样,由于基本系统的虚拟机已经记录了该虚拟机的网卡mac地址对应于网卡eth0,在克隆出的虚拟机中由于mac地址发生改变,udev会 自动将该mac对应于网卡eth1。以此类推,udev会记录所有已经识别的mac与网卡名的关系,所以每次克隆网卡名称会自动加1,而其实kernel 仅仅只识别到一张网卡,跟网卡名相关的网络配置也未发生任何变化。

简单说就是esxi克隆一个虚拟机后,会产生一个新的mac地址,并生成一个新的eth1,但原ifcfg-eth0却未改变,三个地方,
vi /etc/udev/rules.d/70-persistent-net.rules  删掉原来的eth0的行,将eth1的行名字改为eth0
vi ifcfg-eth0  将新mac替换原来的mac,这时重启服务service network restart,网络已可以使用,用ifconfig查看时,仍是eth1,还没有改回eth0
ifconfig  还是看不到eth0,这时需要重启机器,才生效

linux udevd服务 设备管理工具 简介相关推荐

  1. linux systemd 服务管理脚本简介

    我们运行 linux 服务器的主要目的是通过运行程序提供服务,比如 mysql.web server等.因此管理 linux 服务器主要工作就是配置并管理上面运行的各种服务程序.在 linux 系统中 ...

  2. 连接linux的几款工具 简介

    1.Putty --支持ppk,pub格式密码连接 --支持centos --支持windows操作系统安装,网上去下载直接可以使用,免费的 安装文件在我的百度网盘:putty 安装后如下: load ...

  3. linux 设备管理工具 udev 规则编写

    目录 1. udev简介 1.1 什么是udev? 1.2 使用udev的好处 1.3 udev工作流程 2. 如何配置和使用udev 2.1 udev的配置文件(/etc/udev/udev.con ...

  4. linux 网络安全工具,常用的Linux网络安全工具简介

    常用的Linux网络安全工具简介 互联网   发布时间:2008-10-08 22:12:04   作者:佚名   我要评论 常用的Linux网络安全工具简介 尽管各种版本的Linux distrib ...

  5. Linux 中的 netcat 网络工具简介

    Linux 中的 netcat 网络工具简介 Apr 3, 2020 |  Linux |  linux netcat netcat 是 Linux 系统中的网络工具,其通过 TCP 和 UDP 协议 ...

  6. Linux网络服务-Web Service之【HTTP协议简介】(一)

    一.什么是HTTP? 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协议.设计HTTP最初的目的是为了提供一种发布和接收 ...

  7. 三十六、rsync通过服务同步、Linux系统日志、screen工具

    三十六.rsync通过服务同步.Linux系统日志.screen工具 一.rsync通过服务同步 该方式可以理解为:在远程主机上建立一个rsync的服务器,在服务器上配置好各种应用,然后本机将作为客户 ...

  8. Linux平台代码覆盖率测试工具GCOV的前端工具LCOV简介

    本博客 http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究.学习内容所做的笔记,欢迎广大朋友指正! Content 1. Lcov是什么? 2 ...

  9. linux acpi 作用,Linux ACPI服务ACPI 驱动体系简介

    Linux ACPI服务DSDT: DSDT 称做 Differentiated Definition Block,存在于 BIOS 中并与当前的硬件平台兼容的,提供了系统的硬件特性(例如某些设备的内 ...

最新文章

  1. python dict排序 reduce函数
  2. 彻底弄懂 HTTP 缓存机制及原理 | 干货
  3. android 开发 矩形截屏插件,Android 上如何实现矩形区域截屏
  4. 喜报!DT最新通用管理平台开源了
  5. Java基础学习总结(50)——Java事务处理总结
  6. postgresql-定时备份,压缩备份
  7. win10安装SqlServer2005教程
  8. 第一篇 -- 《每天读一点经济学常识 》 --于台风
  9. 微软必应词典客户端的案例分析——个人Week3作业
  10. cannot import name ‘utc‘
  11. html链接屏蔽了,js屏蔽广告/屏蔽网站元素/屏蔽网站超链接
  12. 微信支付v3——批量转账到零钱(提现)
  13. 2016面试总结,面试宝典有木有
  14. 计算机科技兴趣小组活动总结,科技兴趣小组的活动总结
  15. win10 GTX1060 安装CUDA+PyTorch GPU
  16. Java实现 蓝桥杯 算法训练 未名湖边的烦恼
  17. 笔记本计算机作文,我的笔记本电脑作文600字
  18. 使用阿里云的一些小总结
  19. 解决Edge浏览器主页被篡改问题,或许可以帮你彻底解决
  20. 湖北E信共享上网实验

热门文章

  1. weibo4j中的 jar解释
  2. 写好python的代码怎么放在spark上跑_Spark精华问答 | spark的组件构成有哪些?
  3. 5G NPN 行业专网 — 高可靠专网部署方案
  4. QEMU — VirtIO 虚拟化
  5. Linux Kernel TCP/IP Stack — L1 Layer — NIC Controller
  6. Ditto剪贴板增强工具 ,方便复制粘贴多条历史记录
  7. Internet Explorer 已停止工作 解决办法
  8. 移植ffmpeg到VC环境心得
  9. oracle中怎样查询用户权限
  10. 现代软件工程 第一章 概论 第9题——邓琨