web-dev-qa-db-ja.com

「ifconfig」は、Windows上のUbuntuのBashでエラーを出します

Windows上のUbuntu(WSL)のBashでコマンド「ifconfig」を使用しようとすると、次のようなエラーが発生します:-

root @ example:〜#ifconfig
警告:/ proc/net/devを開くことができません(そのようなファイルまたはディレクトリはありません)。出力が制限されています。

そして、「iwconfig」を実行しようとすると:-

eth0ワイヤレス拡張機能はありません。

wifi0ワイヤレス拡張機能はありません。

loワイヤレス拡張機能はありません。

und0ワイヤレス拡張機能はありません。

und1ワイヤレス拡張機能はありません。

これにより、ネットワークデバイスが検出されなかったと思いますが、インターネットはどのように機能していますか? apt-getを使用してアプリをインストールしたので、インターネットはうまく機能します。

私はLinuxプロではなく、wslプロではないので、この問題を克服する方法についてアドバイスをいただけますか?

WSLは完全なLinuxカーネルを実行しません。それは、個々のシステムコールをWindowsバリアントに変換するだけです。したがって、Windows自体がすでに検出しているため、WSLは実際のLinuxと同じようにデバイスを「検出」する必要はありません。

その上、デバイスを「検出」することは、とにかく、デバイスに関する情報を公開することと同じではありません。 _/proc/net_内のファイルは、情報提供のみを目的としています。実際にネットを使用する場合は必要ありません。したがって、それらが欠落していても大きな問題ではありません。

さらに、ほとんどのネットワークプログラムは実際のデバイスを気にしません;それらは高レベルの機能(BSDソケット)のみを扱います)そしてOSに詳細を処理させます。したがって、WSLがsocket()connect()sendto()のような関数を実装している限り、それで十分です。


iwconfigの状況も同様です。ワイヤレスデバイスはすでにWindows自体によって管理されています。 WSLはリンク情報をLinuxプログラムに変換する方法を知らないだけですが、それらのほとんどはとにかくそれを知る必要はありません。

さらに、iwconfigは、ほぼ廃止されたWEXTAPIを使用する古いツールです。開発者は、iwなどの最新のnl80211ベースのツールを最初に機能させることにもっと関心があると思います。

(多くのLinuxドライバーでさえWEXTを直接サポートしなくなり、nl80211上でのみエミュレートします。)

3
user1686