Loading... <ul> <li>linux设备可通过udevadm管理。</li> </ul> <!-- /wp:list --> <!-- wp:list --> <ul> <li>以下为修改设备名常用命令:</li> <li>udevadm monitor --environment --udev #监控设备动作(ACTION为 载入add,移除move等操作)</li> <li>udevadm test /sys/calss/net/ens224 #用于测试加载设备时udev规则执行情况,此处path在下面说明。</li> <li>udevadm info -a -p /sys/class/net/ens224 #查看从总线一步步到设备的加载情况,另外还能查看驱动,设备的信息,层级等。</li> </ul> <!-- /wp:list --> <!-- wp:paragraph --> <p>path说明: 设备是在/dev/目录下,这里为什么会执行/sys下的设备名?可能有疑惑。其实通过执行第二条命令可以发现,系统中识别的设备都是第一时间在/sys/目录下生成。/dev/下的设备都是从udev规则中生成出来的。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p><strong>1.修改Linux设备名可以通过修改udev规则来实现,可参照默认规则修改</strong></p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p># cat /usr/lib/udev/rules.d/60-net.rules ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?<em>", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?</em>", NAME="$result"</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>/usr/lib/udev/rules.d/ 目录下有很多规则文件,执行顺序按照数字从小到大,字母顺序去匹配执行。 新增后如下:</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p># cat /etc/udev/rules.d/70-net.rules ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", NAME="wxy" 意思是,有新增设备,子类为net的,驱动任意, ATTR中是设备的一些信息,执行rename_device程序获取设备名并修改,定义名称为wxy。若使用 <em>RESULT=="?</em>" 则代表使用 rename_device 程序返回值。 NAME="$result" 其实可以忽略了,因为RESULT会获取返回值并使用。另外70规则中 PROGRAM 也可以不需要。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>修改完之后,最好使用第二条命令看看执行情况再重启。避免重启失败。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>2.<strong>以下是一些udev规则键值及符号说明:</strong></p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>操作符 匹配或赋值t 解释 == 匹配 相等比较 != 匹配 不等比较 = 赋值 分配一个特定的值给该键,他可以覆盖之前的赋值。 += 赋值 追加特定的值给已经存在的键 := 赋值 分配一个特定的值给该键,后面的规则不可能覆盖它。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>键 含义 ACTION 事件 (uevent) 的行为,例如:add( 添加设备 )、remove( 删除设备 )。 KERNEL 在内核里看到的设备名字,比如sd<em>表示任意SCSI磁盘设备 DEVPATH 内核设备录进,比如/devices/</em> SUBSYSTEM 子系统名字,例如:sda 的子系统为 block。 BUS 总线的名字,比如IDE,USB DRIVER 设备驱动的名字,比如ide-cdrom ID 独立于内核名字的设备名字 SYSFS{ value} sysfs属性值,他可以表示任意 ENV{ key} 环境变量,可以表示任意 PROGRAM 可执行的外部程序,如果程序返回0值,该键则认为为真(true) RESULT 上一个PROGRAM调用返回的标准输出。 NAME 根据这个规则创建的设备文件的文件名。 如果你想使用使用两个以上的名字来访问一个设备的话,可以考虑SYMLINK键。 SYMLINK 为 /dev/下的设备文件产生符号链接。由于 udev 只能为某个设备产生一个设备文件, 所以为了不覆盖系统默认的 udev 规则所产生的文件,推荐使用符号链接。 OWNER 设备文件的属组 GROUP 设备文件所在的组。 MODE 设备文件的权限,采用8进制 RUN 为设备而执行的程序列表 LABEL 在配置文件里为内部控制而采用的名字标签(下下面的GOTO服务) GOTO 跳到匹配的规则(通过LABEL来标识),有点类似程序语言中的GOTO IMPORT{ type} 导入一个文件或者一个程序执行后而生成的规则集到当前文件 WAIT_FOR_SYSFS 等待一个特定的设备文件的创建。主要是用作时序和依赖问题。 PTIONS 特定的选项 last_rule 对这类设备终端规则执行; ignore_device 忽略当前规则; ignore_remove 忽略接下来的并移走请求。 all_partitions 为所有的磁盘分区创建设备文件。</p> Last modification:May 29, 2024 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏