一、PCIe网卡名称指定
原理:利用udev规则匹配PCIe设备的硬件特征(如总线位置、MAC地址等),覆盖默认命名规则
4
。
步骤:
获取设备信息:
Bash
udevadm info -a -p /sys/class/net/<原设备名> # 如ens33
记录关键属性如KERNELS(PCI插槽路径)、ATTR{address}(MAC地址)。
创建udev规则文件:
Bash
sudo vim /etc/udev/rules.d/71-pcie-net.rules
示例内容(根据设备属性匹配):
Bash
SUBSYSTEM=="net", ACTION=="add", KERNELS=="0000:01:00.0", ATTR{address}=="00:11:22:33:44:55", NAME="pcie0"
KERNELS:PCIe设备总线路径(通过lspci或udevadm获取)。
ATTR{address}:网卡MAC地址(可选,用于精确匹配)。
二、USB网卡名称指定
原理:通过udev规则匹配USB设备的物理端口或父设备路径,防止因USB接口顺序变化导致名称不稳定
步骤:
获取USB设备信息:
udevadm info -a -p /sys/class/net/<原设备名> # 如enx001122334455
重点关注KERNELS(USB端口路径,如1-1.2)和ATTRS{idVendor}/ATTRS{idProduct}。
创建udev规则文件:
sudo vim /etc/udev/rules.d/72-usb-net.rules
示例内容:
SUBSYSTEM=="net", ACTION=="add", KERNELS=="1-1.2", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="8153", NAME="usbnet0"
KERNELS:USB物理端口路径(如1-1.2表示主控制器1下的端口1.2)。
idVendor/idProduct:USB设备的厂商和产品ID(通过lsusb获取)。
三、生效规则
重载udev规则:Bash
sudo udevadm control --reload-rules
sudo udevadm trigger
重启系统或重新插拔设备后生效。
注意事项
命名冲突:避免与系统默认规则冲突(如/lib/udev/rules.d/80-net-setup-link.rules)。
MAC地址变化:USB网卡的MAC地址可能因设备更换变化,建议优先用KERNELS或端口路径匹配
。
兼容性:此方法适用于现代Linux发行版(如Ubuntu 18.04+、CentOS 7+) 4
。
示例验
查看所有网卡名称
ip link show
检查规则是否生效
udevadm test /sys/class/net/<设备名> 2>&1 | grep "Applying rule"
通过以上方法,可以确保PCIe/USB网卡在系统重启或热插拔后保持固定名称,适用于依赖网卡名的应用程序或脚本