适用于 Linux 的 Windows 子系统有哪些限制?

Dav*_*nch 10 windows kernel virtualization active-directory windows-10

去年我玩过 WSL,但当时它无法运行我想尝试的神经网络项目。显然,它有一个过时的内核或类似的东西。

从那时起,WSL 进行了很多更新。在 WSL 上运行适用于 Ubuntu 的程序有哪些限制?它们本质上是等价的吗?是否有一些信息可以用来提前确定?

Rin*_*ind 7

WSL 常见问题解答

我可以在 WSL 中运行所有 Linux 应用程序吗?

不!WSL 是一种工具,旨在使需要它们的用户能够在 Windows 上运行 Bash 和核心 Linux 命令行工具。

WSL 不旨在支持 GUI 桌面或应用程序(例如 Gnome、KDE ​​等)

此外,即使您将能够运行许多流行的服务器应用程序(例如 Redis),我们也不建议将 WSL 用于服务器场景——Microsoft 提供了多种解决方案来在 Azure、Hyper-V 和 Docker 中运行生产 Ubuntu 工作负载。

还有对 Linux 测试程序的官方测试,它提供了一些关于软件部分以及它们是否工作或接近工作的见解。


上面2个链接是官方立场。微软指出的一件事是 WSL 并不旨在支持图形界面。用户虽然已经能够运行xfceunity

当有人可以团结起来在 WSL 上工作时,我怀疑是否存在任何限制。很多 WSL 都是未经证实的,所以让某些东西工作可能取决于用户(即在这种情况下你 ;) )。


Dav*_*nch 3

自从提出这个最初的问题以来,WSL 的情况已经稳定下来,我想传递这些信息。

我可以报告说,基本上可以在 WSL 中执行任何只需要 CPU 的正常 Linux 任务。这意味着你可以轻松运行 GUI 应用程序,甚至整个桌面环境,但这也意味着运行神经网络更像是一种浪费电力的练习。(WSL 也缺少 CUDA 驱动程序,但如果 WSL 实际上可以获得 GPU 访问权限,则可以使用适用于 Ubuntu 的 CUDA 驱动程序)

图形用户界面应用程序

您可以通过以下方式获取 GUI 应用程序:

您所要做的就是:

  1. 安装 Windows X 服务器。我用VcXsrv
  2. 使用以下命令将路由信息添加到 bash:
    echo "export DISPLAY=localhost:0.0" >> ~/.bashrc
    
    Run Code Online (Sandbox Code Playgroud) 如果您运行 zsh,只需将导出显示信息添加到您的 .zshrc 文件中。

如果您运行 zsh,只需将导出显示信息添加到您的 .zshrc 文件中。

我通过在桌面上安装 Linux 解决了想要运行神经网络的问题,哈哈。这样就容易多了。

更广泛地回答这个问题

WSL 最重要的限制是 Linux 和 Windows 文件系统并不真正兼容。Linux 文件使用与 Windows 文件不同的权限方案,当您在 WSL 主文件夹中编辑或保存文件时,~/您会使用元数据保存该文件,这将使 Windows 在记事本中仅显示一个空文件。行结尾的差异也存在一些问题(Linux 上的 LF 与 Windows 上的 CRLF),但这不是一个问题,特别是因为 Microsoft 已允许 VS Code 和记事本使用任一行结尾。

从技术上讲,可以从 Windows 资源管理器访问 Linux 文件系统,但这是非常不可取的,而且如果您愿意,您也无法用它做任何事情。


归档时间:

查看次数:

16447 次

最近记录:

6 年,7 月 前