net.ifnames 的 73-usb-net-by-mac.rules 问题

spa*_*rty 5 mac naming usb udev

我看到73-usb-net-by-mac.rules文件有奇怪的问题。

这个 udev 规则文件检查 net.ifnames 是否在内核命令行中定义,然后它会走到最后并跳过中间的规则,如下所示:

IMPORT{cmdline}="net.ifnames", ENV{net.ifnames}=="0", GOTO="usb_net_by_mac_end"
Run Code Online (Sandbox Code Playgroud)

不知何故,这对我来说不起作用。我的意思是我net.ifnames=0在我的内核命令行中仍然执行了 USB 网络命名规则。

如果我像下面那样拆分上面的规则行,那么它可以正常工作:

IMPORT{cmdline}="net.ifnames"
ENV{net.ifnames}=="0", GOTO="usb_net_by_mac_end"
Run Code Online (Sandbox Code Playgroud)

是不是 udev 没有IMPORT在同一行的键后解析键?

如果我做错了什么或者需要改变规则,你能告诉我吗?

小智 1

这是 ubuntu(和 debian)中 73-net-by-mac.rules 版本的问题,已在 pkg-systemd 源代码的标签 debian/233-5 中修复。

这些更改产生的二进制包似乎尚未进入 debian 或 ubuntu apt 存储库。

作为参考,更正后的文件位于此处:

https://anonscm.debian.org/cgit/pkg-systemd/systemd.git/tree/debian/extra/rules/73-usb-net-by-mac.rules?h=debian/233-5

回复user.dz:我实际上使用的是Debian 8.7。我不知道 OP 使用的是哪个发行版,但我认为 ubuntu 和 debian 都会有相同的问题(因为两者似乎都使用源自同一来源的包)。该文件的安装名称为/lib/udevd/rules.d/73-usb-net-by-mac.rules。它属于 udev 包。