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

s.d*_*uro 5 hyper-v virtual-machine windows-subsystem-for-linux wsl2

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

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

Not*_*1ds 6

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

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

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

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

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

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

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

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

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

  • PID /init1 也是一个相当大的差异。由于 WSL 在 init 期间设置其 Interop,因此它使用自己的进程。这意味着默认情况下 Systemd 不是 PID 1,并且您无法使用或期望systemctl任何相关命令起作用。对于这个问题有一些古怪的解决方法,但您可能最好习惯非 Systemd 的等效方法。例如,sudo systemctl start ssh它不是 ,而是较旧的 SysVInit 样式sudo service ssh start

    我不知道您的技能和舒适程度——如果您已经熟悉 Linux,并且在阅读使用 Systemd 的文档时可以自己进行所需的调整,那就太好了。如果不是,那么虚拟机可能是更好的选择,至少在“学习”初期是这样。