无需重新启动即可重新加载网络接口

无需重新启动即可重新加载网络接口

我正在 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 它。当然,这也会重置网络计数器。

相关内容