我正在 Raspberry Pi 2 中为 Arch Linux 编写一个 BASH 脚本。问题是,在某些时候我想在不重新启动的情况下重新加载网络接口,并在插入时拥有新命名的网络接口(en0 和 wl0)networkctl
,例如。我找到的解决方案是:
关闭网络接口:
ip link set <net_if> down ;
修改 /etc/udev/rules.d/70-persistent-net.rules (或其等效项):在我的例子中它是 10-network.rules。它包含了:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:aa:aa:aa:aa:aa", NAME="en0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="bb:bb:bb:bb:bb:bb", NAME="wl0"
重新加载
udevadm control --reload-rules ;
重新触发
udevadm trigger --attr-match=subsystem=net ;
启动网络接口:
ip link set <net_if> up ;
但它在我的 RbPi2 上不起作用。
我还在另一篇文章中发现,在某些时候您必须插入
modprobe -r <driver module>
但我找不到我的 wifi 适配器的驱动程序模块(我已经尝试过lsusb -v
)。
顺便说一句:我没有使用 Networkmanager。我已经使用 systemd (/etc/systemd/network/) 配置了网络接口。我还尝试重新加载 systemd-networkd 服务。
谢谢
答案1
要获取网络接口的驱动程序,只需使用 :ethtool -i en0
并查找“驱动程序”部分:
root@odin ~ # ethtool -i eth0
driver: e1000e
version: 2.3.2-k
firmware-version: 0.13-4
在这里,我的驱动程序是 e1000e。
现在您可以 rmmod 您的驱动程序并再次 modprobe 它。当然,这也会重置网络计数器。