当我尝试在 Windows(WSL)上的 Ubuntu 上的 Bash 上使用命令“ifconfig”时,它给出了如下错误:-
root@example:~#是否配置
警告:无法打开 /proc/net/dev(没有此文件或目录)。输出有限。
当我尝试运行“iwconfig”时:-
eth0 没有无线扩展。
wifi0 没有无线扩展。
没有无线扩展。
und0 没有无线扩展。
und1 没有无线扩展。
这让我相信它没有检测到网络设备,但互联网是如何工作的?互联网运行良好,因为我用过apt-get安装应用程序;
我不是 Linux 专业人士,更不用说 WSL 专业人士了,所以我能就如何解决这个问题提供一些建议吗?
答案1
WSL 不运行完整的 Linux 内核——它只将每个单独的系统调用转换为其 Windows 版本。因此 WSL 不需要以与真正的 Linux 相同的方式“检测”设备,因为 Windows 本身已经这样做了。
此外,“检测”设备与公开有关设备的信息并不是一回事。 文件中的文件/proc/net
仅用于提供信息;实际使用网络时不需要它们。 因此,如果丢失了它们,也不会有什么大问题。
此外,大多数网络程序不管关于实际的设备;它们只处理高级函数(BSD 套接字),让 OS 处理细节。因此,只要 WSL 实现socket()
和connect()
和 之类的函数sendto()
就足够了。
情况iwconfig
类似:无线设备已经由 Windows 本身管理;WSL 只是不知道如何将链接信息转换为 Linux 程序,但无论如何,大多数程序都不需要知道这一点。
此外,iwconfig
这是一个使用几乎过时的 WEXT API 的旧工具。我怀疑开发人员更关心制作基于 nl80211 的现代工具,例如iw
先工作。
(甚至许多 Linux 驱动程序不再直接支持 WEXT – 它们仅在 nl80211 之上模拟它。)