WSL1升级WSL2全指南:优势、步骤与优化技巧
2026/8/9 8:11:46 网站建设 项目流程

1. 为什么需要从WSL1升级到WSL2?

Windows Subsystem for Linux(WSL)是微软在Windows 10和Windows 11上提供的Linux兼容层。WSL1和WSL2虽然名字相似,但架构完全不同。WSL1本质上是一个翻译层,它将Linux系统调用转换为Windows系统调用。而WSL2则是一个轻量级的虚拟机,运行真正的Linux内核。

WSL2相比WSL1有几个关键优势:

  1. 完整的系统调用兼容性:WSL2使用真实的Linux内核,可以运行Docker等需要特定内核功能的应用程序
  2. 文件系统性能:在Linux文件系统操作上,WSL2比WSL1快得多(特别是git操作、npm安装等)
  3. 内存管理:WSL2有更高效的内存管理机制
  4. 网络功能:支持完整的网络栈和本地主机连接

注意:如果你的工作主要涉及跨Windows和Linux文件系统的操作(比如频繁在/mnt/c下工作),WSL1的文件访问性能可能反而更好。

2. 升级前的准备工作

2.1 系统要求检查

在开始升级前,需要确认你的系统满足以下要求:

  • Windows 10版本1903或更高版本(内部版本18362或更高)
  • 对于x64系统:版本19041或更高
  • 虚拟化功能已启用(在BIOS中开启VT-x或AMD-V)

可以通过Win+R运行winver命令查看当前Windows版本。

2.2 启用必要的Windows功能

以管理员身份打开PowerShell,运行以下命令:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

完成后需要重启计算机。

2.3 安装WSL2内核更新包

从微软官网下载并安装WSL2 Linux内核更新包: https://aka.ms/wsl2kernel

这个包大约50MB,安装过程很简单,一路点击"下一步"即可。

3. 将现有WSL1发行版转换为WSL2

3.1 查看当前WSL版本

在PowerShell中运行:

wsl -l -v

这会列出所有已安装的Linux发行版及其当前运行的WSL版本。输出类似:

NAME STATE VERSION * Ubuntu-20.04 Stopped 1

3.2 设置默认WSL版本

在转换特定发行版前,建议先设置默认使用WSL2:

wsl --set-default-version 2

3.3 转换现有发行版

对于每个要转换的发行版,使用以下命令:

wsl --set-version <发行版名称> 2

例如:

wsl --set-version Ubuntu-20.04 2

转换过程可能需要几分钟时间,具体取决于发行版的大小。

提示:如果转换过程中遇到问题,可以尝试先导出再导入发行版:

wsl --export Ubuntu-20.04 Ubuntu-20.04.tar wsl --unregister Ubuntu-20.04 wsl --import Ubuntu-20.04 C:\WSL\Ubuntu-20.04 Ubuntu-20.04.tar --version 2

4. WSL2的常见问题与解决方案

4.1 网络访问问题

WSL2使用虚拟网络,与主机不在同一个网络栈。这意味着:

  • 从Windows访问WSL2中的服务:使用localhost(最新版本已支持)
  • 从WSL2访问Windows中的服务:使用host.docker.internal或Windows主机的IP

可以通过在WSL2中运行cat /etc/resolv.conf查看nameserver,这就是Windows主机的IP。

4.2 文件系统性能

虽然WSL2的Linux文件系统性能很好,但访问Windows文件系统(/mnt/c等)的性能可能不如WSL1。如果需要在Windows和Linux之间频繁操作文件,可以考虑:

  1. 将项目放在Linux文件系统中(如~/projects)
  2. 使用VS Code的Remote - WSL扩展直接在WSL中编辑文件

4.3 内存使用

WSL2默认会使用最多50%的物理内存。如果发现内存占用过高,可以在用户目录下创建或修改.wslconfig文件:

[wsl2] memory=4GB swap=2GB

然后运行wsl --shutdown重启WSL2使配置生效。

5. WSL2的高级配置与优化

5.1 使用自定义内核

WSL2默认使用微软提供的内核,但你也可以使用自己编译的内核:

  1. 从https://github.com/microsoft/WSL2-Linux-Kernel获取源码并编译
  2. .wslconfig中指定内核路径:
[wsl2] kernel=C:\\path\\to\\your\\kernel

5.2 启用systemd

WSL2默认不使用systemd,但可以通过以下方式启用:

  1. /etc/wsl.conf中添加:
[boot] systemd=true
  1. 退出所有WSL实例
  2. 在PowerShell中运行wsl --shutdown
  3. 重新启动WSL

5.3 图形界面支持

WSL2支持运行图形界面程序,需要安装X Server(如VcXsrv):

  1. 安装VcXsrv并启动(勾选"Disable access control")
  2. 在WSL2中设置DISPLAY环境变量:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
  1. 现在可以运行图形程序了,如geditnautilus

6. 回退到WSL1

如果遇到兼容性问题需要回退,可以使用:

wsl --set-version <发行版名称> 1

或者设置默认版本为WSL1:

wsl --set-default-version 1

我在实际使用中发现,WSL2对于大多数开发场景都是更好的选择,特别是需要运行Docker或使用Linux特有功能时。唯一需要回退到WSL1的情况可能是需要高性能访问Windows文件系统中的文件。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询