分享更有价值
被信任是一种快乐

linux6.5 udev指的是什么

文章页正文上

本篇内容介绍了“linux6.5 udev指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! linux 6.5 udev是Linux内核的设备管理器;它主要的功能是管理“/dev”目录底下的设备节点,它同时也是用来接替devfs(设备文件系统)及hotplug(热拔插)的功能;在传统的Linux系统中,“/dev”目录下的设备节点为一系列静态存在的文件,而“udev”则动态提供了在系统中实际存在的设备节点。linux 6.5 udev是什么?udev udevadm介绍及linux设备重命名和自动挂载应用实例分析udev在维基百科中的定义是:udev (userspace /dev) is a device manager for the Linux kernel. As the successor of devfsd and hotplug, udev primarily manages device nodes in the /dev directory. At the same time, udev also handles all user space events raised when hardware devices are added into the system or removed from it, including firmware loading as required by certain devices。用中文来说就是:udev是Linux内核的设备管理器。它主要的功能是管理/dev目录底下的设备节点。它同时也是用来接替devfs(设备文件系统)及hotplug(热拔插)的功能,这意味着它要在添加/删除硬件时处理/dev目录以及所有用户空间的行为,包括加载firmware时。在传统的Linux系统中,/dev目录下的设备节点为一系列静态存在的文件,而udev则动态提供了在系统中实际存在的设备节点。虽然devfs提供了类似功能,但udev有比devfs更加好的地方:udev支持设备的固定命名,而并不依赖于设备插入系统的顺序。默认的udev设置提供了存储设备的固定命名。可以使用其vid(vendor)、pid(device)、设备名称(model)等属性或其父设备的对应属性来确认某一设备。udev完全在用户空间执行,而不是像devfs在免费云主机、域名内核空间一样执行。结果就是udev将命名策略从内核中移走,并可以在节点创建前用任意程序在设备属性中为设备命名。udev是一个通用的内核设备管理器。它以守护进程的方式运行于Linux系统,并监听在新设备初始化或设备从系统中移除时,内核(通过netlink socket)所发出的uevent。
系统提供了一套规则用于匹配可发现的设备事件和属性的导出值。匹配规则可能命名并创建设备节点,并运行配置程序来对设备进行设置。udev规则可以匹配像内核子系统、内核设备名称、设备的物理等属性,或设备序列号的属性。规则也可以请求外部程序提供信息来命名设备,或指定一个永远一样的自定义名称来命名设备,而不管设备什么时候被系统发现.udev系统可以分为三个部分:libudev函数库,可以用来获取设备的信息。udevd守护进程,处于用户空间,用于管理虚拟/dev管理命令udevadm,用来诊断出错情况。系统获取内核通过netlink socket发出的信息。早期的版本使用hotplug,并在/etc/hotplug.d/default添加一个链接到自身来达到目的。在Linux man page 中它是这么描述的。udevadm – udev management tool 。也就是说udevadm命令是管理udev的一个工具。实际我们如果要实现设备的重命名或是设备的自动挂载,我们也是使用udevadm来查看和跟踪udev的信息。
udevadm可以用来监视和控制udev运行时的行为,请求内核事件,管理事件队列,以及提供简单的调试机制。info 查询sysfs或者udev的数据库trigger 从内核请求eventssettle 查看udev事件队列,如果所有的events已处理则退出control 修改udev后台的内部状态信息monitor 监控内核的ueventshwdb 处理硬件数据库索引test 调试–query=type     从数据库中查询指定类型的设备。需要–path和–name来指定设备。合法的查询文件是:设备名,链接,路径,属性
–path=devpath    设备的路径
–name=file      设备节点或者链接
–attribute-walk    打印指定设备的所有sysfs记录的属性,以用来udev规则匹配特殊的设备。该选项打印链上的所有设备信息,最大可能到sys目录。
–device-id-of-file=file 打印主/从设备号
–export-db      输出udev数据库中的内容udevadm monitor [options] 监听内核事件和udev发送的events事件。打印事件发出的设备。可以通过比较内核或者udev事件的时间戳来分析事件时序。–kernel  输出内核事件
–udev  输出udev规则执行时的udev事件
–property  输出事件的属性
–subsystem-match=string  通过子系统或者设备类型过滤事件。只有匹配了子系统值的udev设备事件通过。
–tag-match=string  通过属性过滤事件,只有匹配了标签的udev事件通过。udevadm test [options] devpath  模拟一个udev事件,打印出debug信息。udevadm trigger [options]  接收内核发送来的设备事件。主要用于重放coldplug事件信息
(内核在启动时已经检测到了系统的硬件设备,并把硬件设备信息通过sysfs内核虚拟文件系统导出。udev扫描sysfs文件系统,根据硬件设备信息生成热插拔(hotplug)事件,udev再读取这些事件,生成对应的硬件设备文件。由于没有实际的硬件插拔动作,所以这一过程被称为coldplug。)
–verbose     输出将要被触发的设备列表。
–dry-run      不真的触发事件
–type=type     触发一个特殊的设备。合法的类型:devices,subsystem,failed.默认是devices
–action=action  被触发的事件,默认是change
–subsystem-match=subsystem  触发匹配子系统的设备事件。这个选项可以被多次指定,并且支持shell模式匹配。
–attr-match=attribute=value    触发匹配sysfs属性的设备事件。如果属性值和属性一起指定,属性的值可以使用shell模式匹配。如果没有指定值,会重新确认现有属性。这个选项可以被多次指定。
–attr-nomatch=attribute=value   不要触发匹配属性的设备事件。如果可以使用模式匹配。也可以多次指定
–property-match=property=value 匹配属性吻合的设备。可以多次指定支持模式匹配
–tag-match=property       匹配标签吻合的设备。可以多次指定。
–sysname-match=name     匹配sys设备名相同的设备。可以多次指定支持模式匹配。udevadm settle [options]  查看udev事件队列,如果所有事件全部处理完就退出。
–timeout=seconds     等待事件队列空的最大时间。默认是180秒。如果是0则立即退出。
–seq-start=seqnum    只等待到给定的顺序号。
–seq-end=seqnum    只等待到给定顺序号之前。
–exit-if-exists=file     如果文件存在就退出
–quiet    不输出任何信息使用udev实现USB,SD卡设备的重命名、自动挂载、自动卸载。该功能的简单应用可以参考另外一博客《udev 重命名设备节点名 自动挂载、卸载存储设备分区》在本文中主要记录在使用时遇到的问题以及注意事项。在海思平台,对于有些SD卡或是USB自动挂载有些时候会出现冲突的问题,问题现象就是自动挂载的时候有时候有时候U盘和SD卡自动挂载相互干扰。主要原因点是因为海思的HI35XX的很多设备不具备SDIO总线,所以如果要使用SD的设备,一般都是将SD卡通过读卡器转换为USB总线信号。对于对于这类问题,可以通过SD卡的读卡器ID来区分是USB还是SD卡设备。在海思平台可以使用下面命令查看USB设备信息:lsusb:cat device查看上面信息可以知道USB相关的设备有:
Product=HIUSB EHCI #海思USB总线
Product=USB Modem #上网模块
Product=USB2.0 Hub #USB HUB
Product=DT 101 G2 # U盘
Product=USB Reader # usb 读卡器
Product=802.11n WLAN Adapter #USB网卡对于一个设备如果要匹配他的多个属性,或者是同一个属性,它在不同的层级中有不同的值,那么这个时候需要使用GOTO功能。比如在一个设备中要重名名一个USB设备,它的命令如下:这里涉及到多个属性ATTRS 值的匹配,另外该USB因为有些经过了usbHUB,所以他的idVendor 和 idProduct 有多个,就有总线的,也有HUB的,还有USB设备的,这样的情况下是匹配不上设备的。具体是什么原因我没有找到一个合理的解释,但是我又一个可用的解决方案,那就是使用GOTO。将上面命令改成如下就可以了。udev的一些匹配规则有些时候比较的莫名其妙,我也没有找到哪里有比较详细的说明,网上的介绍都它过于简单,实际应用的时候还是很多的问题,比如针对上面介绍的设备,如果要写一条卸载设备的命令,可以使用下面语句:但是在实际使用的时候,他们匹配不上,ACTION==”remove”,KERNELS==”*:0:0:1″与ATTRS{idVendor}==”05e3″,ATTRS{idProduct}==”0716″ 不能同时使用,如果直接改成:命令功能可以实现,但是这样会出现于设备冲突的情况,在拔出该设备的时候,会把KERNELS==”*:0:0:1″ 的其他设备也卸载掉。在这个时候,我们可以使用 devadm monitor –property 去监控设备拔出的时候它有哪些事件,有哪些属性可以被捕捉到并且与其他的设备属性不同以便区分不同的设备。下面是截取到的一部分数据:从上面可以看出,拔出的时候有个PRODUCT ,它是 idVendor 和 idProduct 值的一个组合,可以使用它来区分不同的设备。最终可以正常卸载设备的命令如下:“linux6.5 udev指的是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注云技术网站,小编将为大家输出更多高质量的实用文章!

相关推荐: win7系统游戏无法全屏显示如何解决

这篇文章主要介绍“win7系统游戏无法全屏显示如何解决”,在日常免费云主机、域名操作中,相信很多人在win7系统游戏无法全屏显示如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win7系统游戏无法全屏显示如何解决”的疑惑有…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册