Linux下使用udev固定设备描述符名称

1.udev介绍

udev是linux kernel的设备管理器,在最新的内核版本中kernel_3.10中udev已经代替了以前devfs、hotplug等功能,意味着它要处理添加/删除硬件时,所有的用户空间行为。

2.udevadm 命令

udevadm是一个udev的管理工具,可以用来监视和控制udev运行时的行为,请求内核事件,管理事件队列,以及提供简单的调试机制。

udevadm主命令:

  • info 查询sysfs或者udev的数据库
  • trigger 从内核请求events
  • settle 查看udev事件队列,如果所有的events已处理则退出
  • control 修改udev后台的内部状态信息
  • monitor 监控内核的uevents
  • hwdb 处理硬件数据库索引
  • test
  1. 查询设备信息. 
udevadm info -a -p [设备路径] # 如:/sys/class/net/eth0

2. 编写rules 

KERNEL="eth0", NAME="en0"

3. 更新rules 

udevadm control -R

4. 测试rules

 udevadm test -a [ACTION] [设备路径]

3.udev rules规则

 man udev

4. 示例-固定USB网卡名称

 ACTION!="add", GOTO="usbnet_exit"
 ​
 #ctrl network
 SUBSYSTEM=="net", KERNELS=="40000000.ethernet", SUBSYSTEMS=="platform", DRIVERS=="stmmaceth", NAME="fm1-mac5"
 SUBSYSTEM=="net", KERNELS=="40010000.ethernet", SUBSYSTEMS=="platform", DRIVERS=="stmmaceth", NAME="fm1-mac6"
 ​
 #usb dev network
 SUBSYSTEM=="net", KERNELS=="1-3:1.0", SUBSYSTEMS=="usb", DRIVERS=="sr9900", NAME="fm1-mac1", RUN="/sbin/ifup -f $name"
 SUBSYSTEM=="net", KERNELS=="2-3:1.0", SUBSYSTEMS=="usb", DRIVERS=="sr9900", NAME="fm1-mac1", RUN="/sbin/ifup -f $name"
 SUBSYSTEM=="net", KERNELS=="1-1:1.0", SUBSYSTEMS=="usb", DRIVERS=="sr9900", NAME="fm1-mac2", RUN="/sbin/ifup -f $name"
 SUBSYSTEM=="net", KERNELS=="2-1:1.0", SUBSYSTEMS=="usb", DRIVERS=="sr9900", NAME="fm1-mac2", RUN="/sbin/ifup -f $name"
 ​
 SUBSYSTEM=="net", KERNELS=="1-2:1.0", SUBSYSTEMS=="usb", DRIVERS=="sr9900", NAME="fm1-mac3", RUN="/sbin/ifup -f $name"
 ​
 LABEL="usbnet_exit"

Related Posts