一、先决条件
必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用WSL。
二、安装步骤
使用命令安装
熟悉PowerShell或者cmd的同学可以考虑使用命令安装。
在管理员模式下打开PowerShell或者cmd,输入
wsl -install
命令后等待命令执行完毕,然后重启电脑。
默认情况下,以上指令安装的Linux发行版为Ubuntu。若想安装其他发行版,可以使用-d参数指定发行版:
wsl -install -d <Distribution Name>
<Distribution Name>即为需要使用的Linux发行版。
首次安装需要为你的LInux创建用户账户和密码,需要牢记。
安装完成后,可以在PowerShell或者cmd中使用wsl运行安装好的Linux版本。
图形化安装
使用win+s键进入搜索,搜索启用或关闭Windows功能。

在Windows功能窗口中启用(勾选)适用于Linux的Windows子系统。

勾选后,按照提示重启电脑。
重启后,打开Windows的应用商店Microsoft Store
搜索WSL,选择一个喜欢的Linux发行版,点击安装。
之后可以在程序中找到下载好的Linux。

点击启动后,可以看到相应的命令行窗口,设置好用户账户与密码即可正常使用。

也可以使用终端应用(可以在Microsoft Store中获取)中启用Linux的Shell


三、关于WSL、WSL2与虚拟机的区别
WSL(Windows Subsystem for Linux)和虚拟机都可以在 Windows 上运行 Linux 环境,但它们之间存在一些关键区别:
- 架构:WSL 使用的是“假 Linux 内核” (pico processes),这种架构可以充分利用 Windows 的调度系统,同时可以更好地支持 Windows 的文件系统和安全性。而 WSL2 则是一个真正的 Linux 内核,这种架构可以更好地支持 Linux 的多个功能,并对传统的 WSL 体验进行了升级。
- 性能:WSL2 比 WSL 更快,可以在文件 I/O、网络和 Docker 上获得更好的性能。这是因为,WSL2 是一个真正的 Linux 内核,而 WSL 则是基于一个假 Linux 内核的虚拟机(VM)。
- 内存使用和磁盘占用:WSL2 使用更少的内存和更小的磁盘空间,这是因为它只需要启动一个虚拟机来执行 Linux 内核,而不是一个完整的 Linux 系统。相比之下,WSL 需要启动一个虚拟机来运行用户空间应用程序。
- 隔离性:虚拟机创建了一个相对隔离的环境,虽然虚拟机可以访问主机文件系统,但需要特定的设置,并且整体上没有 WSL 那么直接和方便。
- 系统资源消耗:WSL 通常比全功能的虚拟机更节省系统资源。虚拟机需要为每个实例分配固定的内存和磁盘空间,而 WSL 的资源使用随着需求而动态变化。
因此,选择 WSL 还是虚拟机取决于你的具体需求和计算机的性能。
四、从WSL到WSL2
启用虚拟机功能
Windows上可以选择WSL的版本是WSL1或者WSL2。启用WSL2需要启用虚拟机平台

同时在任务管理器中查看CPU是否启用虚拟化

在PowerShell中使用命令
wsl -l -v
查看已安装的Linux发行版的WSL版本

上图显示VERSION为2,则这个Linux发行版使用的是WSL2的内核
下载 Linux 内核更新包
接下来下载适用于自己计算机的WSL2 Linux内核更新包:
适用于 ARM64 计算机的WSL2 Linux 内核更新包
下载运行即可。
将 WSL 2 设置为默认版本
打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:
wsl --set-default-version 2
设置后,新安装的Linux发行版将默认使用WSL2
设置Linux的WSL版本
使用命令:
wsl --set-version <Distribution Name> 2
将对应发行版<Distribution Name>的WSL版本设置为WSL2
可以通过wsl -l -v确认是否成功切换。
五、使用WSL的优势
更简单的环境部署
WSL是面向开发人员的,在Linux环境下,我可以跟方便快速的部署一些编程语言的开发环境(比Windows方便)。最开始接触WSL是在使用Jetbrains旗下的Clion(一款C语言开发程序)时,Windows下的C编译环境(MinGW-w64、MSVC等)对含有中文目录的项目或者打印中文的语句不能很好的支持,于是考虑使用原生的GCC(MinGW-w64算是将GCC移植到Windows)。巧合的是Clion支持在编译器选择中使用WSL中的C编译调试环境(GCC与GDB),也就接触到了WSL。
并且很多项目和环境的部署,例如git指令,在Windows系统上用起来就没有在Linux中顺手。
避免系统切换的麻烦
WSL是在Windows环境中集成Linux,相比较与Windows+Linux的双系统而言,不需要复杂的磁盘分区设置和启动项的管理。并且WSL和Windows中的文件可以轻易地实现互传,而不会像双系统一样出现Linux的文件在Windows的资源管理器中无法找到的问题。