本文适用于已经安装WSL1的系统。

0. 查看当前WSL版本号

打开PowerShell,执行命令
wsl -l -v
可以看到WSL版本号。如果WSL版本号是1,则需要进行一些操作,才能升级到WSL2。

1. 检查运行WSL2的系统要求

WSL2对系统版本有一定要求,键盘选择Win + R,输入winver,点击回车,便可查看当前系统的详细版本。对照下图,看一下是否满足要求,如果不满足要求,则需要对系统进行升级。

image.png

2. 启用虚拟机功能

WSL2需要使用虚拟机,因此需要在系统中启动虚拟机功能。
将以下命令保存为H.cmd,然后以管理员权限运行

  1. pushd "%~dp0"
  2. dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
  3. for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
  4. del hyper-v.txt
  5. Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

重新启动系统。
启动系统后,最好在检查一下虚拟机是否以启动。通过以下方式进行检查,
打开 控制面版,查看方式可选择大图标,在点击程序与功能—>启用或关闭Windows功能,检查下图中红框圈出内容是否均以打对勾;若没有,则需要打对勾并点击确定。
如果没有Hyper-V这一项,请查看文章win10家庭中文版安装Hyper-V。
image.png
另外,在检查一下任务管理器中-性能-CPU中的虚拟化是否已开启,如果未开启,请参考文章在BIOS中打开虚拟机
image.png

3. 下载 Linux 内核更新包

  1. 根据系统进行选择:

x64:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
arm64:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.ms
2. 运行上一步下载的更新包。

4. 设置分发版版本

打开PowerShell,执行命令 :

  1. wsl --set-version 分发版名称 版本号

例如,将Ubuntu18.04 设置为WSL2的命令为wsl --set-version Ubuntu-18.04 2
该步骤会花一些时间,如果安装成功,会出现转移成功。
如果出现Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS,则说明BIOS中虚拟机未打开,请参考另一篇文章在BIOS中打开虚拟机。
说明
WSL2 是基于虚拟机的,所以可以在后台运行各种任务,比如 Docker 等等,但是带来的相应问题就是会占用一部分内存,使用 wsl --shutdown 可以再不使用的时候停止它,以节约资源。