Windows 10 可以拥有 WSL1 和 WSL2 吗?

Windows 10 可以拥有 WSL1 和 WSL2 吗?

运行 Windows 10(版本 21H1 19043.1415)。

不久前,我启用了所需的 Windows WSL 功能。从那时起,我使用 Linux 软件包在 WSL1 和 WSL2 之间来回切换了好几次。

我已经使用 Docker 一段时间了。Docker 最近的更新似乎将 Windows 上的 Docker 从 WSL1 过渡到了 WSL2。

刚刚从 PC 上卸载了 Ubuntu。检查了 WSL 的状态:

wsl --list --verbose

返回的状态显示:

姓名 状态 版本
docker-桌面数据 已停止 2
docker 桌面 已停止 2

问题: Linux 的 Windows 子系统版本 Ubuntu 20.04 可以安装为 WSL1 吗?这意味着 PC 同时激活了 WSL1 和 WSL2?

答案1

是的。Windows 10 可以同时激活 WSL1 和 WSL2。

在探索了 Microsoft 的 WSL 的基本命令后,我了解到 Linux 的 Windows 子系统版本可以轻松地从 WSL1 转换为 WSL2 或反之亦然。

https://docs.microsoft.com/en-us/windows/wsl/basic-commands

下面演示了如何将 Ubuntu(或其他发行版)从 WSL1 转换为 WSL2 以及从 WSL1 转换为 WSL2。所有命令都是在 Windows 终端(新 PowerShell)中给出的命令。要转换的 PowerShell 命令是:

wsl --set-version ubuntu 1
wsl --set-version ubuntu 2

Ubuntu 刚刚从 Microsoft Store 重新安装。用户名和密码已创建。尚未进行 sudo 更新/升级。检查了 WSL 状态,显示新安装的(正在运行的)Ubuntu 已安装为 WSL2。

PS C:\Users\prior> wsl --list --verbose
姓名 状态 版本
docker-桌面数据 已停止 2
docker 桌面 已停止 2
Ubuntu 跑步 2

然后 Ubuntu 从 WSL2 转换为 WSL1。再次检查状态。显示 Ubuntu 已转换为 WSL1 并停止。

  PS C:\Users\prior> wsl --set-version ubuntu 1

转换正在进行中,这可能需要几分钟...转换完成。

  PS C:\Users\prior> wsl --list --verbose
姓名 状态 版本
docker-桌面数据 已停止 2
docker 桌面 已停止 2
Ubuntu 已停止 1

从 Windows 启动应用程序列表重新启动了 Ubuntu。再次检查了 WSL 状态。返回的状态显示 Ubuntu 正在作为 WSL1 运行。Docker 应用程序仍然是 WSL2。

PS C:\Users\prior> wsl --list --verbose
姓名 状态 版本
docker-桌面数据 已停止 2
docker 桌面 已停止 2
Ubuntu 跑步 1

启动了 Docker 并检查了 WSL 状态。很明显,WSL1 和 WSL2 文件都可以在 Windows 10 中激活并运行。

PS C:\Users\prior> wsl --list --verbose
姓名 状态 版本
docker-桌面数据 跑步 2
docker 桌面 跑步 2
Ubuntu 跑步 1

然后出于好奇,Ubuntu 被转换回 WSL2 然后启动。检查状态并显示转换到 WSL2 成功。Ubuntu 和 Docker 是 WSL2 并且正在运行。

PS C:\Users\prior> wsl --set-version ubuntu 2

转换正在进行中,这可能需要几分钟...有关与 WSL 2 的主要差异的信息,请访问https://aka.ms/wsl2 转换完成。

PS C:\Users\prior> wsl --list --verbose
姓名 状态 版本
docker-桌面数据 跑步 2
docker 桌面 跑步 2
Ubuntu 跑步 2

很明显,每当切换 WSL1 或 WSL2 子系统时,没有必要卸载并重新安装 Linux。

相关内容