WSL 1 升级 WSL 2

更新日期: 2021-05-25 阅读次数: 7105 字数: 667 分类: Windows

被 VS Code 右下角的一个弹窗提示诱导,一时兴起想将 WSL 1 升级到 WSL 2。

查看当前的 WSL 版本

PS C:\Users\Lenovo> wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-20.04    Running         1

可见,我目前的版本是 WSL 1。

警告:升级前要考虑好是否需要 WSL 2

因为升级的过程非常漫长,绝对不是官方说的几分钟。我等了快半小时没有升级完,就贸然放弃了。 关键等待的时候,不能写代码。。。我的代码都保存在 WSL 中。

有人说升级耗时 3 个小时。这个时间我可等不起。

我从任务管理器看,显示在文件打包,后面就不知道在干啥了,反正没有进度。

等待的过程中,我发现,我并不需要 WSL 2 ... 反而是 WSL 1 更适合我...

WSL 1 升级 WSL 2

打开 Power Shell,执行

PS C:\Users\Lenovo> wsl --set-version Ubuntu-20.04 2
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
WSL 2 需要更新其内核组件。有关信息,请访问 https://aka.ms/wsl2kernel

到 https://aka.ms/wsl2kernel 下载并安装内核组件升级包。

PS C:\Users\Lenovo> wsl --set-version Ubuntu-20.04 2
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化。
有关信息,请访问 https://aka.ms/wsl2-install

参考 https://aka.ms/wsl2-install 的说明:

PS C:\Users\Lenovo> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

错误: 740

需要提升权限才能运行 DISM。
使用提升的命令提示符完成这些任务。

用管理员身份打开 Power Shell

PS C:\Windows\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

部署映像服务和管理工具
版本: 10.0.19041.844

映像版本: 10.0.19041.985

启用一个或多个功能
[==========================100.0%==========================]

错误: 50

操作完成,但未启用 VirtualMachinePlatform 功能。


可以在 C:\Windows\Logs\DISM\dism.log 上找到 DISM 日志文件

参考这里的方法启用“虚拟机平台”,实际上并不需要设置 BIOS。

启用“虚拟机平台”

勾选之后,按照提示重启系统即可。

WSL 2 的优势

  • 可在 WSL 2 发行版内访问 GPU
  • WSL 2 将具有与主机不同的 IP 地址,但这不是我想要的。。。因为我的 mysql server 安装在 WSL 中,客户端装在 Win 10 中。

如果非要尝试 WSL 2

建议设置默认为 WSL 2,新装一个 WSL,而不是将已有的升级。

参考

https://docs.microsoft.com/en-us/windows/wsl/install-win10#set-your-distribution-version-to-wsl-1-or-wsl-2

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式

谈笑风生

PS C:\Windows\system32> wsl --set-version Ubuntu-20.04 2
有关与 WSL 2 关键区别的信息,请访问 https://aka.ms/wsl2

正在进行转换,这可能需要几分钟时间。
系统找不到指定的文件。
Error code: Wsl/Service/CreateVm/ConfigureNetworking/ERROR_FILE_NOT_FOUND
这怎么解决啊