早几年我还在Windows上装VMware虚拟机跑Ubuntu,公司发的笔记本只有16G内存,Win10一开机吃掉快一半,再拖一个虚拟机,风扇转得跟直升机似的。后来换了双系统?也不行——上班摸鱼刷网页、微信、QQ、办公套件全在Windows这边,来回重启根本不现实。直到Windows 10 2004版本之后自带的WSL(Windows Subsystem for Linux)彻底成熟,我才算找到了在Windows 上舒服地用Linux 的办法。
WSL简单说,就是微软把一套Linux内核和用户态环境做成了Windows的子系统,你不需要装虚拟机软件,不需要分区装双系统,直接在Windows里跑原生的Linux命令和工具,还能和Windows文件系统互相访问。本文我会从方案选型、安装避坑、日常配置、目录迁移、故障排查这几个维度展开,所有内容都基于Windows 10自带的WSL实际环境,适合刚入门的小白,也能给已经用了一段WSL但踩过坑的同学一些参考。
1. 为什么是WSL:我把三种方案都试过之后的选择
1.1 我最早用VMware跑Linux的场景
一开始我跟大多数人一样,图省事装VMware Workstation,再装一个Ubuntu镜像。虚拟机的好处是隔离干净,Windows出问题也不影响Linux,还能随便拍快照。但用了半年我发现几个很烦的问题:第一是启动慢,开个虚拟机少说三四十秒,进入桌面还要等;第二是内存占用大,Ubuntu桌面版本身要占2G左右,再加上虚拟机软件的开销,Windows这边明显变卡;第三是剪贴板和文件共享偶尔抽风,经常要在虚拟机和宿主机之间来回拷贝文件,体验很割裂。
我也试过装双系统,Ubuntu和Windows各占一块分区。双系统的性能确实最好,Linux能用满全部硬件资源,但你想想实际场景:开发的时候需要查一段资料切回Windows,重启一次;开个视频会议,Windows通知弹不出来,又得重启。来回折腾几次我就放弃了。对依赖Windows办公环境的人来说,双系统是种奢侈品,不是日常工具。
1.2 WSL 1和WSL 2的区别,选了哪个
WSL分两个大版本,WSL 1和WSL 2,不少人搞不清这俩的区别。
WSL 1的思路是做一个翻译层,把Linux的系统调用翻译成Windows NT内核能理解的调用,所以它不是一个真正的Linux内核。好处是启动速度极快,文件IO也快,因为直接操作Windows文件系统。但坏处是兼容性不完整,有些依赖内核特性的软件跑不起来,典型例子是Docker。
WSL 2则换了一套思路,它用微软的虚拟化平台跑一个真正的轻量级Linux内核,系统调用完全兼容,Docker可以直接跑。代价是跨文件系统IO变慢,而且需要CPU支持虚拟化并开启相关Windows功能。
我自己现在的选择很明确:默认用WSL 2,日常开发、跑容器都靠它。只有在需要频繁操作Windows目录下的文件时,才会临时切到WSL 1。比如有个项目代码放在D盘的Windows目录下,WSL 2访问/mnt/d下的文件,IO速度比较慢,这时候WSL 1反而更顺手。切换方式很简单:
powershell复制# 查看当前版本
wsl -l -v
# 把指定发行版切成WSL 1
wsl --set-version Ubuntu-24.04 1
# 切回WSL 2
wsl --set-version Ubuntu-24.04 2
1.3 WSL替代不了什么
用了这么久,我得说清楚WSL的边界,免得有人抱着过高期望进来然后骂娘。
WSL毕竟不是一台完整的物理机,它的systemd支持在WSL 2较新版本中虽然已经默认可用,但还是有些早期版本的发行版需要手动开启。如果你需要测试内核模块、需要硬件直通、需要USB设备透传,WSL做起来会很别扭——虽然USB可以配合usbipd工具用,但体验远不如虚拟机原生支持。
另外WSL跑图形界面应用虽然支持WSLg,但Windows 10上的WSLg默认可用性不如Windows 11,所以日常如果重度依赖Linux图形程序,还是老老实实开虚拟机。WSL适合的是命令行为主的开发场景,不是我全都要的万能方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 装之前先看这几个条件,否则后面全是坑
2.1 Windows版本和系统功能的硬要求
WSL对Windows 10的版本有硬性要求,这可能是很多人在安装时遇到莫名问题的根源。
WSL 2要求Windows 10版本在2004(build 19041
