MAC アドレスの代わりにインターフェイス名を割り当てるには、udev ルールで USB NIC アドレスの USB パスを使用します。

MAC アドレスの代わりにインターフェイス名を割り当てるには、udev ルールで USB NIC アドレスの USB パスを使用します。

関連:

2番目に提供された解決策の問題は、いくつかのUSB3 NICが何らかの奇妙な理由で同じものを共有していることです。ATTR{シリアル}したがって、このインターフェイスの名前を変更するための最後の手段は、USB パスです。

接続された NIC は常に USB3 ハブ上の同じ位置と場所にあるため、USB パスを使用してインターフェイスを識別し、名前を変更すると便利だと思いました。

lsusb言う:

...
Bus 002 Device 006: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 002 Device 005: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 002 Device 010: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 002 Device 009: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 002 Device 008: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 002 Device 007: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
...

残念なことに、いつものように、直感的であるべきものが期待どおりに機能しません。

私のインターフェースはすべてバス2にあり、さまざまなデヴナム5から10まで

そこで、次のようなコマンドを試してみました:

SUBSYSTEM="net", ACTION="add", DRIVERS="?*", ATTRS{busnum}="2", ATTRS{devnum}="5", ATTR{dev_id}="0x0", ATTR{type}="1", KERNEL="eth*", NAME="lan1"

しかし、それは機能しません。

また、これを使用するとカーネルKERNELS="2-3:1.0" にあるとされるデバイス上のパス:

SUBSYSTEM="net", ACTION="add", DRIVERS="?*", KERNELS="2-3:1.0", ATTR{dev_id}="0x0", ATTR{type}="1", KERNEL="eth*", NAME="lan1"

しかし、何も、インターフェースの名前は変更されません...

なぜこのルールは機能しないのでしょうか?

答え1

問題が見つかりました。@AB が述べたように、基本的には、内容を読み取って比較するのではなく、値を割り当てるために使用する == の代わりに = を使用していたため、構文エラーでした。

== を演算子として使用すると、すべて正常に動作します。

関連情報