跳转至

23 网卡重命名

特性描述

网卡设备上报add事件后触发,基于net_id和net_setup_link内置命令的结果,生成ID_NET_NAME环境变量,并通过NAME=规则命名使用ID_NET_NAME的值命名网卡: 1. 通过net_id读取网卡的插槽号、路径、MAC地址等标识信息 2. 通过net_setup_link设置ID_NET_NAME环境变量的值为网卡插槽号(根据当前命名策略,优先使用插槽号作为网卡名) 3. 通过NAME=规则将ID_NET_NAME环境变量的值作为网卡名

特性约束

子场景

测试使用规则重命名网卡

备注

1、devmaster的配置文件如下

# cat /etc/devmaster/config.toml
rules_d = ["/tmp/test/rules.d"]
log_level = "info"

2、测试使用的sda、sr0、ens33设备仅限于本机,观测点的b8\:0、b11\:0是sda和sr0设备对应的名称,根据自己的环境自行替换

3、关于时间戳、进程号信息,具体根据自己的回显结果为准,表格仅显示当时测试的结果

准备工作

1、设置配置文件/etc/devmaster/config.toml

rules_d = ["/tmp/test/rules.d"]
log_level = "info"
network_d = ["/tmp/test/netif.d"]

2、创建规则文件/tmp/test/rules.d/01-test.rules

SUBSYSTEM!="net", GOTO="end"

IMPORT{builtin}=="net_id"

IMPORT{builtin}=="net_setup_link"

ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}"

LABEL="end"

3、创建网卡配置/tmp/test/netif.d/99-default.link

[Match]
OriginalName = "*"

[Link]
NamePolicy = ["onboard", "slot", "path"]

4、将网卡ens33下线,并改名为test

# ip link set ens33 down
# ip link set ens33 name test

5、重启devmaster

测试步骤

触发test网卡的add事件:

# devctl trigger -a add /sys/class/net/test

结果验证

查看网卡名,test变更为ens33

# ip a

查看网卡的数据库/run/devmaster/data/n2(不同环境上后缀数字可能不同),携带以下属性:

# cat /run/devmaster/data/n2 | grep NET
E:ID_NET_NAMING_SCHEME=latest
E:ID_NET_NAME_SLOT=ens33
E:ID_NET_NAME=ens33
E:ID_NET_NAME_MAC=enx000c298d21a3
E:ID_NET_NAME_PATH=enp2s1
E:ID_NET_LINK_FILE=/root/sysmaster/exts/devmaster/tests/network/99-default.link

对照udev生成的数据库/run/udev/data/n2:

# cat /run/udev/data/n2 | grep NET
E:ID_NET_NAMING_SCHEME=v253
E:ID_NET_NAME_MAC=enx000c298d21a3
E:ID_NET_NAME_PATH=enp2s1
E:ID_NET_NAME_SLOT=ens33
E:ID_NET_DRIVER=e1000
E:ID_NET_LINK_FILE=/usr/lib/systemd/network/99-default.link
E:ID_NET_NAME=ens33

除以下属性,其他保持一致: ID_NET_NAMING_SCHEME为命名策略,devmaster的latest策略等价udev的v253。 ID_NET_DRIVER为net_setup_link中通过ethtool获取的网卡驱动名,暂未支持该功能。 ID_NET_LINK_FILE为网卡配置,两者配置内容相同。

测试结束

# rm -rf /run/devmaster/*

测试场景约束

系统中带有网卡ens33


最后更新: November 4, 2023
创建日期: August 23, 2023