私はArch Linux用Raspberry Pi 2でBASHスクリプトを書いています。問題は、たとえば、再起動せずにネットワークインタフェースを再ロードし、接続時にネットワークインタフェース(en0とwl0)という名前を新たに指定したいことですnetworkctl
。私が見つけた解決策は次のとおりです。
ネットワークインターフェイスを閉じます。
ip link set <net_if> down ;
/etc/udev/rules.d/70-pertant-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>
しかし、Wi-Fiアダプタ用のドライバモジュールが見つかりません(試してみました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することができます。もちろん、これによりネットワークカウンタもリセットされます。