【问题标题】:Systemd - unable to setup speed/duplex of ethernet interfaceSystemd - 无法设置以太网接口的速度/双工
【发布时间】:2020-07-30 13:38:23
【问题描述】:

我正在尝试设置嵌入式设备的以太网接口以运行,例如10 MBit/s / 半双工。

由于系统使用 systemd (systemd-networkd) 来配置网络设备,通常的方法可能是定义一个合适的 .link 文件,我尝试过:

/lib/systemd/network/20-eth0.link:
[Match]
Name=eth0

[Link]
MTUBytes=1450
BitsPerSecond=10M
Duplex=half

调用udevadm info /sys/class/net/eth0 告诉我链接文件已加载,甚至MTU 值也已正确采用。 但是速度和双工模式都没有改变 - ethtool eth0 输出:

Supported link modes:   10baseT/Half 10baseT/Full
                        100baseT/Half 100baseT/Full
                        1000baseT/Half 1000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Advertised link modes:  10baseT/Half 10baseT/Full
                        100baseT/Half 100baseT/Full
                        1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                     100baseT/Half 100baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Link detected: yes

我也尝试过立即在 udev 规则中设置值:

/lib/udev/rules.d/10-persistent-network.rules:
ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth*", ATTR{speed}="10", ATTR{duplex}="half", ATTR{mtu}="1400"

这使我得到相同的结果:采用 MTU 值,但既不是速度也不是双工模式

另一方面,使用ethtool -s eth0 speed 10 duplex half手动设置这些属性是没有问题的

我的建议是,驱动程序在启动后以某种方式加载默认值,因为dmesg 的最后一条消息在启动后说:

xilinx_axienet xilinx_axienet eth0: Link is Up - 100Mbps/Full - flow control rx/tx

但我不确定这是否真的覆盖了我的设置,或者根本没有采用这些设置(因为它们被设置在具有更高优先级的其他位置,例如)

感谢您的建议

【问题讨论】:

    标签: systemd udev


    【解决方案1】:

    我终于想通了 - systemctl status systemd-udevd 给了我第一个需要的提示。

    首先,Name 不是 .link 的有效 Match 选项值,但它适用于 .network - 但它仍然为以太网设备加载。

    更有趣的信息是udevd 抱怨设置速度/双工的参数无效,这将我引导到this related question,其中systemd 中的一个错误阻止了通过.link 文件配置速度/双工模式。这个错误已修复版本v237

    现在有趣的是,它甚至在运行v237 时都不起作用,因为v237 有另一个错误阻止了这种方法。所以我建议至少更新到v239 来修复这两个错误。

    如果其他人也需要修补旧版本的systemd,这里有两个相关的错误:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 2017-02-04
      • 1970-01-01
      相关资源
      最近更新 更多