Linuxはネットワークデバイスの割り当てをどのようにまたはどこで決定しますか?特にワイヤレスUSBデバイスwlan0
の場合。wlan1
しばらく前にTP USBワイヤレスを接続していましたwlan0
。私はそれを削除しました。今週Edimax USB Wirelessを接続しましたwlan1
。今日、2台目のEdimax USBワイヤレスデバイスを試してみましたwlan2
。
私はこれがどこかに設定されていることがわかるほどUnix / Linuxについて十分に知っており、未使用の設定ファイルを削除すると最新のEdimaxを作成できますwlan0
。しかしいかに/どこでか。
答え1
ウデブLinux でデバイスの名前を決定するシステムコンポーネントです。主にファイル名/dev
だけでなく、ネットワークインタフェースの名前も決定します。
099 から 196 までの Udev バージョンには、ネットワークインターフェイス名を記録するルールがあり、同じデバイスに常に同じ番号を使用します。 udev 174以降、これらのルールはデフォルトで無効になっていますが、ディストリビューションでは引き続き有効にできます(Ubuntuではこれを保持します)。一部のディストリビューションは異なるルールセットを提供します。
後で使用するためにインターフェイス名を記録して保存するスクリプトはです
/lib/udev/rules.d/75-persistent-net-generator.rules
。にルールを作成します
/etc/udev/rules.d/70-persistent-net.rules
。したがって、既存のエントリとエントリを削除し、.Run wlan0
(またはデバイスと一致するパラメータ)に変更して、関連付けられたデバイスにルールを再適用します。wlan1
/etc/udev/rules.d/70-persistent-net.rules
wlan2
wlan0
udevadm --trigger --attr-match=vendor='Edimax'
--attr-match
答え2
v197以降、systemd
この問題はネットワークデバイスの永続命名機能の導入によって解決されました。
フリーデスクトップによると予測可能なネットワークインターフェイス名ページでは、カーネルは関連するドライバーが検索する順序に基づいて名前を割り当てます。
カーネルアプリケーション用のネットワークインタフェースの一般的な命名スキームは、ドライバが検索するすべてのインタフェースに「eth0」、「eth1」などで始まる名前を割り当てることです。最新の技術を使用したドライバ検索は予測できないことが多いため、複数のネットワークインタフェースが使用可能になると、「eth0」、「eth1」などの名前割り当てがもはや固定されず、「一度起動」が発生する可能性があります。あることを意味します。 .eth0"は次回の起動時に最終的に"eth1"になります。
ディストリビューションでsystemdを使用している場合は、予測可能に割り当てられますが、使用するのは難しい名前を使用できます。または、たとえば、macアドレスに基づいてより便利な名前を指定するルールをwlp0s11
作成できます。 。udev
wifi1
/etc/udev/rules.d/
次の名前のファイルにファイルを含めます10-network-device.rules
。
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"