我可以在两个系统上 运行 一个 WSL2 虚拟机实例吗?

Can I run one WSL2 virtual machine instance on two system?

我是 WSL2 的新手,想知道是否可以在我的台式机和笔记本电脑上 运行 相同的 WSL2 ubuntu 实例。

现在我可以使用wsl --exportwsl --import方法来保存和加载系统to/from我的移动硬盘了。但是这些方法需要很长时间。

我注意到 wsl --import 加载了一个名为 ext4.vhdx 的文件。有没有办法直接从这个文件加载?

更新 v2.0:

我找到了解决方法,效果很好。

多亏了这里的 Booting from vhdx,我才能够直接从我的便携式硬盘上的 vhdx 文件加载。 Windows 用 regedit 追踪它的子系统,所以我们可以写我们自己的(p.s: 确保 BasePath 正确,它以“\\\\?”开头 ,否则您将无法访问主机系统上子系统的文件系统。):

 Windows Registry Editor Version 5.00

 [HKEY_USERS\【your SID here】\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{【UUID here】}]

"State"=dword:00000001

"DistributionName"="distribution name"

"Version"=dword:00000002

"BasePath"="vhdx folder path" 【 e.g. "\\?\E:\S061\WSL\ubuntu-20"】

"Flags"=dword:0000000f

"DefaultUid"=dword:000003e8

我认为最好的方法是将 ext4.vhd 存储在两个设备都可以访问的网络存储设备上。

我之前提到过如何移动ext4.vhd。你可以看看 基本上你需要从一台机器导出并导入它,同时确保 vhd 文件配置为 wsl 从网络存储访问

因为这应该 * 正式 * 不支持期望一些性能命中

另一种方法是 运行 在一台计算机上使用 WSL 并从网络上的另一台设备 ssh/remote 桌面到它

我坚信在两个 VM 之间同时共享同一个 ext4 vhd 不是一个好主意。参见 this and this Unix & Linux StackExchange,包括关于 ...

的部分

note that sharing LVs/partitions on a single disk between the servers at the same time is NOT very safe. You should only access whole disks from any of the servers at one time.

但是,正如 dopewind 的回答所述,您可以从另一台计算机(例如笔记本电脑)访问 一台计算机(可能是台式机)上的 WSL 实例。您可以使用多种技巧:

  • 如果其中一台计算机上有 Windows 10 Professional 或 Enterprise,您可以启用远程桌面,这样您就可以从另一台计算机访问几乎所有内容。 RDP(“远程桌面协议”)甚至可以在其他设备上工作,例如 iPad 或 Android 平板电脑(甚至 phone,尽管对于“桌面”来说屏幕有点小”)。也就是说,WSL 有更好、更惯用的解决方案 ...

  • 您可以在具有 WSL 实例 (instructions) 的 Windows 10 计算机上启用 SSH 服务器。这对某些人来说可能听起来有悖常理,因为 WSL 实例中的 Linux 本身 运行 也包含一个 SSH 服务器(默认情况下)。但是通过 SSH 从(例如)你的笔记本电脑连接到桌面的 Windows 10,然后你可以启动你安装的 any WSL 实例(如果你选择安装超过一)通过 wsl -d <distroName>。您还可以在下一个选项中避免很多网络不愉快......

  • 如上所述,您可以在 WSL 实例(通常类似于 sudo service ssh start)上启用 SSH,然后直接通过 ssh 进入它。但是,请注意 WSL2 实例是 NAT 的,因此您必须执行更多操作才能访问网络接口。关于它,WSL Github 上有一大堆 thread。就个人而言,我建议开始时提到的“Windows SSH 服务器”选项,然后您可以在需要时担心直接 SSH 访问。

    旁注:即使我在我的 WSL 实例上启用了 SSH,我仍然使用 Windows SSH 来代理它们,以避免这些网络问题。