我已经安装了WSL2并在其上部署了两台虚拟机:
- CentOS
- Ubuntu-20.04
是否可以在我的win10机器上运行多个Ubuntu-20.04实例?
我已经安装了WSL2并在其上部署了两台虚拟机:
是否可以在我的win10机器上运行多个Ubuntu-20.04实例?
完全可以。以下是我的建议步骤。在 PowerShell 中(也可以使用 cmd):
创建一个方便的目录,在其中处理你的 WSL 镜像。当然,我会将其命名为 WSL
。这个目录不一定要在 C:\ 上。
创建两个子目录,images
和 instances
。同样,这些名称实际上取决于你自己。
运行 wsl -l -v
来确认你当前的发行版名称。
使用类似 wsl --export Ubuntu images\2021-02-05_Ubuntu20.04_snapshot.tar
的方法备份你现有的 20.04 发行版(假设你的发行版名称为“Ubuntu”)。
使用类似 wsl --import Ubuntu20.04_clone instances\Ubuntu20.04_clone images\2021-02-05_Ubuntu20.04_snapshot.tar --version 2
的方法使用该快照创建一个新实例。当完成后,你应该在你的 instances\Ubuntu20.04_clone
目录中看到一个 ext4.vhdx
文件。--version 是可选项,但显示了如果需要,你可以并排创建 WSL1 和 WSL2 实例(例如,如果你需要访问 NTFS 文件系统,则 WSL1 的速度要快得多)。
使用 wsl ~ -d Ubuntu20.04_clone
启动该实例。或者重新启动 Windows 终端(假设你正在使用它),新实例应该会被自动检测到。
默认情况下,新实例将作为 root 启动。你需要创建一个 /etc/wsl.conf
并设置你的用户名:
[user]
default=me
......当然,要替换为您的用户名。
退出并终止该发行版(通过 wsl --terminate Ubuntu20.04_clone
),然后重新启动它,并确认您的环境正在按照预期运行。
现在您已经确认了新实例的正确操作,以下步骤是可选的,但建议执行。(有另一种方法,请参见Reddit线程中u/Zoredache的多条评论)。
通过使用原始分布的wsl --unregister <distroname>
,“重置”旧映像为干净状态。
通过使用Windows“开始菜单”中的“启动->运行”并输入“Ubuntu”,重新运行该“应用程序”(技术上它是一个“应用程序执行别名”)。这将重新运行配置步骤并创建您的默认用户/密码/等(感谢@JackoBongo在评论中提供此建议)。
出于方便起见,我建议您添加/etc/wsl.conf
,如上所述添加到此实例。这样,每次添加或替换实例时就不必再执行一遍该步骤。注意:如果您计划将此映像分发给其他用户,则不要这样做;如果只为自己进行此操作,则可以这样做。
使用上述wsl --export
命令备份此“干净副本”,例如为2021-02-05_Ubuntu20.04_default.tar
。现在,此“干净”版本可以成为您的起点,用于测试新的Ubuntu 20.04,而不必担心来自正常工作环境的应用程序/定制会妨碍您的测试。
由于您已经运行多个发行版(CentOS和Ubuntu),因此我猜测您已经在使用Windows终端了。但是,如果通过“开始菜单”中的“Ubuntu”条目启动Ubuntu,则您可能需要将克隆的vhdx
文件复制回新安装的干净版本。您将在%userprofile%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
(或类似位置)找到“default”版本。
=
前后没有空格。 - edwillyswsl --unregister Ubuntu
) 并从开始菜单再次启动它。控制台窗口会出现并开始初始安装过程。 - JackoBongowsl --export
生成的tar
文件应该包含该实例中的所有内容. 请注意,我的说明让您导出为tgz
(gzipped tar),但实际上wsl --export
创建了一个普通的.tar
. 这不应有任何影响,但在故障排除时会有所区别。将其重命名为tar
并检查tarball的内容以查看其中的内容。非常乐意为您提供进一步帮助,但可能需要创建一个新问题(在Super User,更适合此类问题)以获取详细信息。仅仅评论不足以解决这个问题。 - NotTheDr01ds