![udev 无法重命名网络设备:设备或资源繁忙](https://linux22.com/image/50045/udev%20%E6%97%A0%E6%B3%95%E9%87%8D%E5%91%BD%E5%90%8D%E7%BD%91%E7%BB%9C%E8%AE%BE%E5%A4%87%EF%BC%9A%E8%AE%BE%E5%A4%87%E6%88%96%E8%B5%84%E6%BA%90%E7%B9%81%E5%BF%99.png)
我正在尝试使用 udev 规则来为我的网络接口提供静态、一致的名称。然而,似乎存在一些竞争条件的发生,阻止这些规则在每次启动时始终生效。
当我查看时,journalctl
我看到以下错误消息:
systemd-udevd[149]: error changing net interface name eth0 to net0: Device or resource busy
我的规则非常简单,我直接从 arch wiki 上获取它们网络配置
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="wifi0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="net0"
启动初期可能会出现什么问题,我该如何解决这个问题?
答案1
解决此问题的某种方法是使用 systemd-networkd。设置一个配置文件/etc/systemd/network/net0dhcp.network
(或类似):
[Match]
Name=net0
[Network]
DHCP=true
将上面的 net0 重命名为适当的网络接口名称。现在:
systemctl disable dhcpcd
systemctl enable systemd-networkd
并重新启动。 (您可能可以重新启动某些服务或其他服务;我没有找到哪些服务 - 重新启动足够快)。
我只用有线网络对此进行了测试(并且目前没有带 wifi 卡的机器),因此无法评论此配置如何与您的无线接口配合使用。我的假设是,您需要为该接口添加一个配置文件,事情就会很顺利。当然,如果事情不那么容易解决,您可以随时:
systemctl disable systemd-networkd
systemctl enable dhcpcd
并重新启动。
更多信息:https://wiki.archlinux.org/index.php/Systemd-networkd#Basic_DHCP_network