systemd.link 对自动协商的处理是否已损坏?

ich*_*bod 5 udev systemd network-interface

我正在尝试配置 PC 引擎框以运行 OpenEmbedded 构建,其中一个或多个网络接口关闭了自动协商,但我的 .link 文件中似乎缺少某些内容。在启动时,我收到以下消息:

Dec 26 23:20:07 rl-000db948364a systemd[1]: Started udev Kernel Device Manager.
Dec 26 23:20:07 rl-000db948364a systemd-udevd[231]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
Dec 26 23:20:07 rl-000db948364a systemd-udevd[244]: link_config: Cannot set device settings for eth2 : Invalid argument
Dec 26 23:20:07 rl-000db948364a systemd-udevd[244]: Could not set speed or duplex of eth2 to 100 Mbps (full): Invalid argument
Dec 26 23:20:07 rl-000db948364a systemd-udevd[232]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
Run Code Online (Sandbox Code Playgroud)

我的网络接口的 .link 文件如下所示:

[Match]
MACAddress=00:0d:b9:48:36:4a

[Link]
AutoNegotiation=false
Duplex=full
BitsPerSecond=100M
Run Code Online (Sandbox Code Playgroud)

我想也许 AutoNegotiation 需要一些其他值,比如offdisabled,但这些似乎没有改变任何东西,0也没有。使用我希望失败的东西,比如vrai,当我使用udevadm test-builtin...时,会给我一条关于这个词非法的错误信息。运行udevadm info...显示使用了我的 .link 文件,并且我能够将唤醒网络设置为接口支持的值。

如果在启动后,我使用ethtool设置了双工和速度,它就可以正常工作。

我正在处理英特尔公司的 I211 设备。

有人对我还可以尝试什么有什么建议吗?谢谢!

ich*_*bod 11

在用尽所有其他选项后,我查看了 systemd-udevd 源代码,并且至少通过 v236 在 systemd 中存在一个错误,它阻止它从 .link 文件的内容设置双工或速度。我已向开发人员提交了补丁,但尚未被 v237 里程碑接受。

这是一个深奥的问题,不会影响大多数人,但是如果您从源代码构建 systemd 并且绝对想自己修复它,可以在Github pull request中找到更改。

  • 这是。我在发行说明中获得了我的名声。 (4认同)