带 GUI 的 WSL 与 Hyper-V 虚拟机之间的区别

带 GUI 的 WSL 与 Hyper-V 虚拟机之间的区别

单独设置 WSL2 的用户界面,然后使用 xrdp/RDP 访问它,正变得非常流行。

它与在 Hyper-V 中创建虚拟机有何不同?

答案1

首先要指出的是,WSL2跑步在虚拟机中(而 WSL1 没有)。它利用了 Hyper-V 的一些底层功能,但它不是Hyper-V。但由于它们使用相同的虚拟机管理程序,因此与其他一些 VM 平台不同,可以愉快地共存。

然而,WSL2 并不是虚拟机平台就像 Hyper-V 一样,您可以在其中创建自己的机器配置。

现在回到您的主要问题——使用 Hyper-V 虚拟机访问 WSL2 和创建 WSLg 之间有什么区别xrdp?请注意,以下大多数内容也适用于 Windows 11 中即将推出的 WSLg 功能:

  • 互操作性:WSL 提供了一些与 Windows 出色的互操作性功能,包括:

    • 能够在 WSL/Linux 环境中运行 Windows 可执行文件,包括 stdin/stdout/stderr 管道和重定向。
    • 自动将 Windows 驱动器安装到每个 WSL 实例中
    • 通过网络共享自动与 Windows 共享 WSL 中的 Linux 文件系统。
    • 从最近发布的 Windows 21H1 开始,您可以在 Windows GPU 上使用加速 GPU 计算功能(例如 CUDA Toolkit)。

    当然,你可以在虚拟机和 Windows 之间共享文件,但你需要自己设置。不过,据我所知,其他两个功能在虚拟机上不容易复制。

  • Hyper-V 等虚拟机平台将使您能够添加和配置虚拟设备(例如 USB、显示器、音频)。使用 WSL,您几乎需要使用这些设备,因为它们已经配置好了。例如,WSL 的init进程(其 PID 1)将自动使用 Hyper-V 虚拟 NIC(默认情况下对您隐藏)配置网络。您无法轻松添加或更改此网络。

    当然,WSL2 上没有“屏幕”。正如您所提到的,访问是通过xrdp或 X 服务器进行的。这也意味着没有“控制台”。您启动的每个 WSL 实例都是一个 PTS。

    WSL2 中甚至没有“开/关电源”的概念,因此尝试shutdown不会产生任何效果。

  • PID /init1 也是一个相当大的区别。因为 WSL 在 init 期间设置了它的 Interop,所以它使用自己的进程。这意味着 Systemd 默认不是 PID 1,你不能使用或期望systemctl任何相关命令起作用。有一些 hack 解决方法,但你最好习惯非 Systemd 等效项。例如,而不是sudo systemctl start ssh,它是较旧的 SysVInit 样式sudo service ssh start

    我不知道你的技能和舒适程度——如果你已经熟悉 Linux,并且在阅读使用 Systemd 的文档时可以自己做出必要的调整,那就太好了。如果不是,那么 VM 可能是更好的选择,至少在“学习”的最初阶段是这样。

答案2

WSL 和 Hyper-V(或 VMware)是两个不同的东西。

WSL 是一种允许在 Windows 中运行 Linux 命令的工具。GUI 界面还可以帮助管理文档和您可能希望执行的操作。但它不是功能齐全的虚拟机,并且无法像虚拟机那样运行。

值得注意的是,WSL 接口归 WSL 终端所有,无法单独重启或关闭。

Hyper-V 或 VMware 中的虚拟机几乎就是真实机器。您可以在虚拟机中执行在真实机器中可以执行的大部分操作。文档、应用程序、浏览器等等。

值得注意的是,主机的某些硬件功能不适用于虚拟机,也不适用于 WSL。

以下是一些屏幕截图,试图展示 WSL GUI 如何适应主机环境。

WSL 的一些功能

WSL 无需关机

相关内容