资讯专栏INFORMATION COLUMN

Linux Udev

VioletJack / 2215人阅读

摘要:比如盘插入,电脑是如何即时的做出响应耳机插入又是如何做到自动关闭外部音量这些都跟有关。虽然很强大,功能很多,本来就针对硬盘设备的插拔做一些经验的分享。

在我入门udev的时候,看着各种各样的资料觉得这个东西很高深的时候,突然瞄到一篇文章里面说道: 要树立一个信念:udev很简单,当时不以为然,现在能够理解,其实稍作研究就能理解了,看起来很高端很遥远的Title,比如Linux Kernel,比如软硬件交互,比如热插拔等等,其实掌握几个rules,然后再动手实践实践,对比着讲解,就能知道七七八八了,想要再深入,就多看看文档实现和内核源码,其实很多东西都是这样,了解了就很简单,没事了解一点就比别人多知道一些,共勉

Udev 是什么

udevlinux kernel的设备管理器,处理硬件的添加和删除,但它的功能远远不仅于此。比如U盘插入,电脑是如何即时的做出响应?耳机插入又是如何做到自动关闭外部音量?这些都跟udev有关。虽然udev很强大,功能很多,本来就针对SCSI硬盘设备的插拔做一些经验的分享。至于为什么我会研究到这个东西,是因为最近在做ceph相关的项目,需要实现一个类似热插拔的feature,懂的人应该很清楚,就是拔插硬盘后,osd自动恢复,主要应用于硬盘寿命即将到期,替换新盘的场景,不明白的同学也不要紧,因为本文主要讨论的是udev

Udev Rules

udev管理各种各样的设备,比如USB,DISK,CD等等,为了区别设备类型,精确匹配,udev制定了一套特色的rules,为什么说特色呢?因为我觉得它用最简洁的语法满足了方方面面的需求

这里推荐一些有用的link

UDEV Primer udev入门必读,可以快速将udev了解一番

Writing udev rules 经典文章,看完这个基本就能掌握udev rules

Writing udev rules 修订版 国内论坛对格式样式做了一些修改,有洁癖的可以看看

Writing udev rules 译 翻译版本,英文不好的可以中英文对比着看

udev 中文手册 这位金步国先生为开源事业做出了杰出的贡献,早前就看过他翻译的Apache的手册

Writing udev rules and kernel examples 看够了上面各种规则,来看看具体的例子吧

Udev 详解 文章如名,真的很详细

Udev 使用方法 一些特殊的技巧

大家看完上面的文章应该知道rules文件的位置和规则,下面我贴一些我实践中的代码和例子

这是两条分别针对SCSI硬盘设备的添加和删除的rules,设备事件分别会触发相应的脚本:

KERNEL=="sd[a-z]", ACTION=="add", SUBSYSTEM=="block", RUN+="/usr/bin/python /root/test.py %k add"
KERNEL=="sd[a-z]", ACTION=="remove", SUBSYSTEM=="block", RUN+="/usr/bin/python /root/test.py %k remove"

注意:

执行外部命令必须加上环境变量路径, 上面的这个也可以不加/usr/bin/python,但是必须在py脚本头部加上shebang#! /usr/bin/python

RUN可以运行程序外的程序,而PROGRAM不是做这个事情的,而是为了生成之后需要的变量

相关 Link

hashtag and shebang

shebang

Udevadm

udevadm是一个udev的管理工具,可以用来获取设备信息(info),监视和控制udev运行时的行为(control),请求内核事件(trigger),管理事件队列(settle),以及提供简单的调试机制(test)。很实用,很好用!!!

推荐 Link

udevadm 中文手册 很全,很基础 ~~

udevadm command examples 很多udevadm的命令可以借鉴,说不定以后可以用到呢?

介绍几个我具体使用过的例子:

udevadm info

可以从udev数据库中提取设备信息,此外,还可以从sysfs中提取设备的属性, 以帮助创建与此设备匹配的udev规则

获取/dev/sdbpath信息

udevadm info -q path -n /dev/sdb
udevadm test

模拟向udev发送设备信息,并不会真的触发,而是将触发后的过程信息打印出来,对调试很有帮助, 我用这个查看脚本是否会被执行

udevadm test --action="add" `udevadm info -q path -n /dev/sdb`

注意: test不会真正触发事件,而trigger可以

udevadm trigger

可以真正触发udev事件,但是不会真正改变硬件,只是触发kerneludev的事件,会触发udev rules,我用这个触发事件,校验rules匹配

udevadm trigger -v --action=add --sysname-match=sda

注意:

不加sysname-match那么会触发所有设备,如果是action=remove,那么则会移除很多设备,甚至导致sshd服务停掉

后面是sda而不是/dev/sda因为它是根据pci路径来定位name的,比如sda的路径是:

/sys/devices/pci0000:00/0000:00:10.0/host2/target2:0:0/2:0:0:0/block/sda
udevadm control

重载udev rules,对之后触发的新设备有效,对之前已经触发的无效

udevadm control --relaod-rules

更改udev日志等级为infoudev默认等级为err,可以在/etc/udev/udev.conf中查看,日志具体信息可以在syslog中查看

udevadm control --log-priority=info
More about udev

udev还有很多有意思的地方,如果想要更加深入的学习,那么除了熟练地掌握rules等技巧,还要对其实现原理有了解,这就得多看文档,多看源码了,建议大家有条件的情况下多看源码,多看原始的东西,因为经过别人的总结就可能会变味,相互对比,不要一味依赖别人总结的产物

Linux 自动挂载usb设备 小例子 如何在usb设备插入后自动挂载?

udev使用笔记 这篇文章里面那张图片不错

写个程序检测我们的设备插拔 模仿内核源码简单地实现一个设备插拔的检测

linux下热插拔事件的产生是怎样通知到用户空间 事件传递过程,udev源码解析

热插拔的工作原理 hotplug机制和udev udev原理讲解

Uevent 上报event事件给上层的详细讲解 uevent源码讲解

linux内核空间和用户空间的是怎样区别的,如何交互,如何从用户空间进入内核空间 内核空间和用户空间的一些剖析

Netlink实现热拔插监控 消息传输用的是什么?Netlink是如何做到的

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10330.html

相关文章

  • Linux Udev

    摘要:比如盘插入,电脑是如何即时的做出响应耳机插入又是如何做到自动关闭外部音量这些都跟有关。虽然很强大,功能很多,本来就针对硬盘设备的插拔做一些经验的分享。 在我入门udev的时候,看着各种各样的资料觉得这个东西很高深的时候,突然瞄到一篇文章里面说道: 要树立一个信念:udev很简单,当时不以为然,现在能够理解,其实稍作研究就能理解了,看起来很高端很遥远的Title,比如Linux Kern...

    macg0406 评论0 收藏0
  • linux笔记本设置休眠

    摘要:睡眠更准确的名称应该是混合睡眠,所谓混合即存储方式上包含了挂起和休眠两种方式,唤醒时会优先从内存中读取数据,如果设备在此状态下断电,就和休眠一样了。 也可在github上的此处查看(还包含一些笔记本相关的其他设置),一些更新修正推送到github比在博客上更新更方便。 挂起睡眠和休眠的区别 三种存储当前运行状态数据(前后台进程服务,不包含buff cache等)的方式 挂起suspe...

    AlexTuan 评论0 收藏0
  • 如何定制Linux外围文件系统?

    摘要:完成之后,执行将根文件系统打包成放到目录下。启动时系统会自动执行中的。将上述所涉及的命令及文件拷贝到小系统对应的目录下,并对配置进行修改。可在真机上运行的完整版小系统部分目录文件至此,文件系统算是可以跑了。 本文由云+社区发表作者:我是乖宝宝哦 一般来说,我们所说的Linux系统指的是各种基于Linux Kernel和GNU Project的操作系统发行版。为了掌握Linux操作系统...

    JouyPub 评论0 收藏0
  • Linux驱动实践:你知道【字符设备驱动程序】的两种写法吗?

    摘要:我们就继续以此为基础,用保姆级的粒度一步一步操作,来讨论一下字符设备驱动程序的编写方法。如何使用新的函数来编写字符设备驱动程序,下一篇文章再详细讨论。 作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。 关注下方公众号,回复【书籍】,获取 Linux、嵌入式领域经典书籍;回复【PDF】,获取所有原创文章( PDF 格式)。 目录 ...

    Godtoy 评论0 收藏0
  • Zookeeper集群搭建和简介(一)

    摘要:集群搭建和简介本文主要涉及一下知识虚拟机安装和基本设置间免密登录搭建环境的介绍虚拟机安装注环境下虚拟机安装环境和使用基本一样这是之前写的一篇虚拟机安装可以参考一下安装完一个虚拟机还不够我们搭建的是集群那么最少来三个吧可以使用镜像重新装也可 Zookeeper集群搭建和简介(-) 本文主要涉及一下知识. 1.linux虚拟机安装和linux基本设置2.linux间免密登录3.linux搭...

    shmily 评论0 收藏0

发表评论

0条评论

VioletJack

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<