大家好,我是冯哥的缓存。如果你一直想试试Linux,但不想折腾双系统、不想装虚拟机,那WSL(Windows Subsystem for Linux)就是微软给你准备的"后悔药"——在Windows里直接跑Linux,不用重启,不用分区,开个窗口就能用。
一、WSL是什么——从WSL1到WSL2的进化
WSL1:翻译官模式
2016年,微软推出了WSL1。它的原理是在Windows内核上搞了一层"翻译",把Linux系统调用实时转成Windows系统调用。听起来很美好,但问题是:
·翻译不完整,很多Linux程序跑不了
·没有真正的Linux内核,Docker等依赖内核特性的软件无法运行
·文件系统性能奇差,跨系统读写文件慢得让人抓狂
WSL2:真内核模式
2019年,微软来了个大招——WSL2。它不再"翻译",而是在Windows里跑了一个真正的Linux内核。这个内核是微软从Linux官方内核裁剪而来的,运行在一个轻量级虚拟机中。
对比项 | WSL1 | WSL2 |
Linux内核 | 模拟(翻译层) | ✅ 真实内核 |
Docker支持 | ❌ 不支持 | ✅ 完美支持 |
Linux原生程序兼容性 | 部分兼容 | 几乎100% |
Linux文件系统性能 | 慢 | 极快(ext4原生) |
跨系统文件访问 | 快 | 稍慢(网络映射) |
启动速度 | 极快 | 快(首次稍慢) |
内存占用 | 低 | 较高(按需分配) |
systemd支持 | ❌ | ✅(2022年起) |
小知识 WSL2的Linux内核是微软自己维护的,代码完全开源(github.com/microsoft/WSL2-Linux-Kernel)。微软甚至把代码贡献回了Linux主线内核——曾经视Linux为"毒瘤"的微软,现在成了Linux内核的重要贡献者之一。
二、WSL2能干什么——6大核心能力
别以为WSL2只是个"命令行玩具",它的能力远超你的想象:
能力 | 说明 | 典型场景 |
命令行开发 | 完整的Bash/Zsh环境,grep/sed/awk等工具齐全 | 脚本编写、日志分析、文本处理 |
Docker容器 | 原生运行Docker Engine,性能接近原生Linux | 容器化开发、微服务测试 |
文件互通 | Windows和Linux文件系统双向访问 | 在Windows编辑、Linux编译 |
网络穿透 | Linux服务端口自动映射到Windows | Web开发、API调试 |
图形界面 | WSLg支持Linux GUI程序直接显示 | 运行GIMP、VS Code Linux版 |
GPU加速 | 支持CUDA/OpenCL,直通NVIDIA显卡 | 机器学习、GPU计算 |
✅ 适合谁? - 想学Linux但不想折腾安装的初学者 - 需要Linux开发环境的程序员 -想在Windows上用Docker的开发者 - 需要跑Linux命令行工具的数据分析师
三、安装前的准备——系统要求与检查
WSL2不是所有Windows都能跑,先检查你的"入场券":
硬件要求
项目 | 最低要求 | 推荐 |
Windows版本 | Windows 10 1903(内部版本18362) | Windows 10 21H2+ 或 Win11 |
系统架构 | x64 | x64(ARM也可但发行版较少) |
内存 | 4GB | 8GB+(虚拟机要吃内存) |
硬盘 | 1GB空闲 | 10GB+(装软件后增长快) |
CPU虚拟化 | 必须开启 | BIOS中确认VT-x/AMD-V已启用 |
快速检查你的系统
按 Win+R,输入 winver,回车。确认:
·版本 ≥ 1903(Win10)或任意Win11
·系统类型为"x64"(设置→系统→关于)
⚠ 关键前提:CPU虚拟化必须开启 WSL2依赖Hyper-V虚拟机,如果你的CPU虚拟化(Intel VT-x / AMD-V)没开,安装会报错。开机进BIOS,在CPU设置中找到"Intel Virtualization Technology"或"SVM Mode",设为Enabled。大部分电脑默认已开启,但部分品牌机或老主板可能关闭了。
四、WSL2安装全流程——三种安装方式
微软在2022年简化了安装流程,现在一条命令就能搞定。但不同情况有不同选择:
安装方式 | 适合谁 | 难度 | 耗时 |
方式一:wsl --install(推荐) | Win10 21H2+ / Win11 | ⭐ | 5-10分钟 |
方式二:Microsoft Store安装 | 喜欢图形界面操作 | ⭐⭐ | 10-15分钟 |
方式三:手动启用功能 | 老版本Win10 / 企业版受限 | ⭐⭐⭐ | 15-30分钟 |
方式一:一条命令安装(推荐)
以管理员身份打开PowerShell或命令提示符,输入:
Wsl --install
这条命令会自动完成:
1.启用"适用于Linux的Windows子系统"功能
2.启用"虚拟机平台"功能
3.下载并安装WSL2 Linux内核更新包
4.默认安装Ubuntu发行版
5.安装完成后提示重启
注意 重启后,系统会自动弹出Ubuntu的初始化窗口,要求你设置Linux用户名和密码。这个密码不会显示任何字符(连星号都没有),这是Linux的常态,盲打后回车即可。务必记住这个密码,后面sudo要用!
方式二:Microsoft Store安装
1.打开Microsoft Store(微软商店)
2.搜索"WSL"或直接搜索你想用的发行版(如"Ubuntu")
3.点击"获取"或"安装"
4.如果系统提示需要启用相关功能,按提示操作并重启
Store安装的优势- 发型版独立更新,不依赖Windows更新 - 可以同时安装多个发行版 - 卸载重装更方便
方式三:手动启用功能
如果你的Windows版本较老,或者企业版策略限制了自动安装,可以手动操作:
第一步:启用WSL功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
第二步:启用虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
第三步:重启电脑
第四步:下载并安装WSL2内核更新包
浏览器访问:https://aka.ms/wsl2kernel,下载安装。
第五步:将WSL2设为默认版本
wsl --set-default-version 2
第六步:安装发行版
wsl --install -d Ubuntu
⚠ Win10家庭版用户注意 Win10家庭版没有Hyper-V管理器,但WSL2用的轻量虚拟机不需要完整的Hyper-V。只要"虚拟机平台"功能启用了就行,不用担心家庭版限制。
五、发行版安装与管理——Ubuntu/Debian/Kali
WSL2只是一个"平台",你得装一个Linux发行版才能用。就像买了手机还得装系统一样。
可用发行版一览
发行版 | 特点 | 适合谁 | 大小 |
Ubuntu | 最流行,社区最大,教程最多 | 🌟初学者首选 | ~400MB |
Ubuntu 22.04 LTS | 长期支持版,稳定性好 | 生产环境/保守用户 | ~400MB |
Debian | 超稳定,Ubuntu的"祖宗" | 追求稳定的用户 | ~300MB |
Kali Linux | 安全渗透工具箱 | 网络安全学习者 | ~1.5GB |
openSUSE Leap | 欧洲流行,YaST管理工具 | 企业用户 | ~500MB |
SUSE SLES | 企业级服务器发行版 | 企业开发 | ~500MB |
Arch Linux | 极简,滚动更新,DIY | 高级玩家 | ~200MB |
常用管理命令:
#列出可安装的发行版wsl --list --online
# 安装指定发行版 wsl --install -d Debian
#列出已安装的发行版 wsl --list --verbose
# 设置默认发行版 wsl --set-default Ubuntu
# 将某个发行版转为WSL2 wsl --set-version Ubuntu 2
# 启动指定发行版 wsl -d Debian
# 关闭所有WSL实例 wsl --shutdown
# 注销(删除)某个发行版 wsl --unregister Kali-Linux
重要提醒wsl
--unregister会永久删除该发行版的所有数据,不可恢复!操作前务必备份重要文件。
多发行版并行
WSL2支持同时安装多个发行版,它们共享同一个WSL2虚拟机内核,但各自有独立的文件系统。你可以:
·日常用Ubuntu,学安全时切到Kali
·开发用Debian(稳定),测试用Arch(最新)
·不同项目用不同发行版,互不干扰
六、WSL2基本使用——命令行操作入门
装好了WSL2,接下来就是实际使用了。别怕命令行,跟着我来。
启动与退出
#方式1:开始菜单点击Ubuntu图标
# 方式2:在PowerShell/CMD中输入 wsl
# 方式3:指定发行版启动 wsl -d Ubuntu-22.04 # 退出Linux exit
首次启动Ubuntu后,建议先做两件事:
1. 更新系统(相当于Windows Update) sudo apt update && sudo apt upgrade -y
2. 查看系统信息 uname -a lsb_release -a
必学20条命令
不需要背,用到的时候来查就行:
命令 | 作用 | 示例 |
pwd
| 显示当前目录 | pwd → /home/yourname |
ls
| 列出文件 | ls -la(显示隐藏文件+详细信息) |
cd
| 切换目录 | cd /etc(进入/etc目录) |
cp
| 复制文件 | cp file1.txt file2.txt |
mv
| 移动/重命名 | mv old.txt new.txt |
rm
| 删除文件 | rm file.txt(谨慎使用!) |
mkdir
| 创建目录 | mkdir myproject |
cat
| 查看文件内容 | cat /etc/os-release |
grep
| 搜索文本 | grep "error" log.txt |
sudo
| 以管理员身份执行 | sudo apt install vim |
apt
| 安装/管理软件 | sudo apt install git |
top
| 查看进程/资源 | top(按q退出) |
df -h
| 查看磁盘使用 | df -h |
free -h
| 查看内存使用 | free -h |
find
| 查找文件 | find / -name "config" |
chmod
| 修改权限 | chmod +x script.sh |
wget
| 下载文件 | wget https://example.com/file.zip |
curl
| HTTP请求工具 | curl https://api.example.com |
history
| 查看命令历史 | history | tail -20 |
man
| 查看命令手册 | man ls(按q退出) |
小技巧 - 按键盘 ↑方向键可以调出上一条命令,不用反复输入 - 输入命令前几个字母后按 Tab键可以自动补全 - Ctrl+C中断当前命令,Ctrl+L清屏 - Ctrl+R然后输入关键词可以搜索历史命令
安装常用软件
#安装Git sudo apt install git -y
# 安装Python开发环境 sudo apt install python3 python3-pip -y
# 安装Node.js(通过NodeSource) curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install nodejs -y
# 安装vim编辑器 sudo apt install vim -y
# 安装htop(比top好看的进程查看器) sudo apt install htop -y
在Windows中直接调用Linux命令
一个超方便的特性——在PowerShell中直接用wsl前缀执行Linux命令:
#在PowerShell中执行 wsl ls -la wsl cat /etc/os-release wsl grep "error" /var/log/syslog
# 管道也能用 dir | wsl grep ".txt" wsl find /tmp -name "*.log" | Select-String "error"
七、文件系统互操作——Windows与Linux互通
WSL2最实用的功能之一,就是Windows和Linux文件系统双向互通。你在Windows资源管理器里能直接看到Linux文件,在Linux里也能直接读写Windows文件。
从Windows访问Linux文件
在资源管理器地址栏输入:
\\wsl$
你会看到所有已安装的发行版文件夹,进入Ubuntu后就能像操作普通文件夹一样操作Linux文件。
也可以直接访问特定路径:
\\wsl$\Ubuntu\home\yourname\documents
✅ 推荐:在资源管理器左侧"快速访问"中固定 \\wsl$,以后一键就能进Linux文件系统。也可以在Linux终端中输入 explorer.exe .直接用资源管理器打开当前目录。
从Linux访问Windows文件
Windows的C盘、D盘等挂载在 /mnt/下:
# C盘 cd /mnt/c/Users/yourname/Desktop
# D盘 cd /mnt/d/Projects
#查看Windows桌面上的文件 ls /mnt/c/Users/yourname/Desktop/
⚠ 性能陷阱——文件操作速度差异巨大
这是WSL2最需要注意的性能问题:
操作场景 | 速度 | 说明 |
Linux程序读写Linux文件系统 | 🟢极快 | ext4原生性能,SSD可达数百MB/s |
Windows程序读写Linux文件(\\wsl$) | 🟡尚可 | 经过9P协议转换,略有损耗 |
Linux程序读写Windows文件(/mnt/c) | 🔴很慢 | 跨文件系统+DrvFS转换,可能慢10-50倍 |
Windows程序读写Windows文件 | 🟢极快 | NTFS原生性能 |
⚠ 性能黄金法则 - Linux项目文件一定要放在Linux文件系统里(~/projects/) - 不要把Git仓库、node_modules放在/mnt/c/下,npm install可能慢到让你怀疑人生 - 需要两边共享的文件,用Linux访问Windows路径来读取,或用Windows访问\\wsl
文件权限映射
Windows的NTFS没有Linux那样的权限体系(rwx),WSL2通过元数据来模拟:
#在/etc/wsl.conf中配置默认权限 [automount] enabled = true options = "metadata,umask=22,fmask=11"
# metadata:启用Linux权限元数据
# umask=22:文件默认权限755 # fmask=11:文件默认权限644
八、网络与开发环境——端口转发与Docker
WSL2的网络架构和WSL1不同,理解这一点对开发调试很重要。
网络架构
对比项 | WSL1 | WSL2 |
网络模式 | 与Windows共享网络 | NAT模式(独立虚拟网卡) |
IP地址 | 和Windows相同 | 独立内网IP(172.x) |
端口转发 | 不需要 | 自动转发(大部分情况) |
访问Windows服务 | 直接localhost | 需获取宿主机IP |
端口自动转发
好消息是,大部分情况下你不需要手动配置。WSL2会自动把Linux的端口转发到Windows:
#在WSL2中启动一个Web服务 python3 -m http.server 8080
# 在Windows浏览器中直接访问 http://localhost:8080 ← 自动转发,无需额外配置
从WSL2访问Windows服务
反过来,WSL2访问Windows上的服务(比如Windows上的数据库)需要获取宿主机IP:
#获取Windows宿主机IP cat /etc/resolv.conf | grep nameserver | awk '{print }' # 用这个IP连接Windows上的服务
# 例如连接Windows上运行的MySQL mysql -h 172.x.x.1 -u root -p
新版WSL2的改进(2024+)微软在新版WSL2中加入了"镜像网络模式"(mirrored),启用后WSL2和Windows共享同一个IP,不再需要端口转发。在 %USERPROFILE%\.wslconfig 中添加:
[wsl2]
networkingMode=mirrored
Docker on WSL2
Docker Desktop已经原生支持WSL2后端,这是最简单的Docker安装方式:
1.安装Docker Desktop:从 docker.com 下载安装
2.启用WSL2后端:Docker Desktop → Settings → General → 勾选"Use the WSL 2 based engine"
选择集成发行版:Settings → Resources → WSL Integration → 勾选你的Ubuntu
#验证Docker安装 docker --version docker run hello-world
# 在WSL2中直接使用docker命令 docker ps docker compose up -d
✅ Docker + WSL2 = 最佳拍档 WSL2后端比传统Hyper-V后端启动更快、内存占用更少、文件性能更好。如果你在Windows上做开发,强烈推荐这个组合。
九、WSL2图形界面——WSLg让Linux可视化
很多人以为Linux只能用命令行,其实在WSL2里,Linux的图形界面程序也能直接在Windows上弹出来!这要归功于WSLg(Windows Subsystem for Linux GUI)。
WSLg的工作原理
WSLg在WSL2里内置了一套Wayland合成器+X11兼容层+音频/视频管线,Linux GUI程序的画面通过这个管线直接呈现在Windows桌面上,就像运行Windows程序一样——没有虚拟机窗口边框,不需要VNC或RDP。
前提条件
要求 | 说明 |
Windows版本 | Win10 21H2+(内部版本19044+)或 Win11 |
WSL版本 | WSL2(WSL1不支持图形界面) |
GPU驱动 | 需要安装最新的GPU驱动(Intel/NVIDIA/AMD均可) |
WSLg组件 | Win11自带;Win10可能需要手动更新WSL |
试试看
#安装一个简单的图形程序 sudo apt install x11-apps -y
# 运行经典小眼睛xeyes
# 运行时钟 xclock
# 安装GIMP图像编辑器 sudo apt install gimp -y gimp &
💡小技巧命令末尾加 &可以让程序在后台运行,不会占住终端窗口。关闭图形窗口等于关闭程序。
音频支持
WSLg也支持音频——Linux程序发出的声音会通过Windows音频栈播放出来。你可以:
#安装并播放音频
sudo apt install sox -y play /usr/share/sounds/alsa/Front_Center.wav
实用GUI程序推荐
程序 | 用途 | 安装命令 |
VS Code(Remote-WSL) | 代码编辑器 | 在WSL中输入 code . |
GIMP | 图像编辑 | sudo apt install gimp |
Firefox | 浏览器 | sudo apt install firefox |
LibreOffice | 办公套件 | sudo apt install libreoffice |
Audacity | 音频编辑 | sudo apt install audacity |
Remmina | 远程桌面 | sudo apt install remmina |
VS Code + WSL 的正确用法 不要在WSL里用apt安装VS Code!正确做法是:在Windows安装VS Code,然后安装"Remote - WSL"扩展。在WSL终端中输入 code
.,VS Code会自动以远程模式连接WSL,体验和在本地一样流畅。
十、常见问题排查——10个高频故障
WSL2虽然好用,但偶尔也会"闹脾气"。以下是用户最常遇到的10个问题:
编号 | 问题现象 | 原因 | 解决方案 |
1 | wsl --install报错"0x80070003" | Windows版本太老 | 更新Windows到最新版本 |
2 | "参考的对象类型不支持尝试的操作" | CPU虚拟化未开启 | 进BIOS开启VT-x/AMD-V |
3 | WSL2启动报错0x80370102 | Hyper-V/虚拟机平台未启用 | 控制面板→启用Windows功能→勾选"虚拟机平台" |
4 | 网络连接失败,ping不通 | DNS配置问题 | 在/etc/wsl.conf中添加nameserver,或重启WSL |
5 | 内存占用过高 | WSL2默认可用全部内存 | 在.wslconfig中限制内存 |
6 | /mnt/c访问速度极慢 | 跨文件系统性能损耗 | 项目文件放Linux文件系统中 |
7 | GUI程序无法启动 | WSLg未安装或GPU驱动旧 | wsl --update更新WSL,更新GPU驱动 |
8 | Docker启动失败 | WSL2后端未启用 | Docker Desktop设置中勾选WSL2后端 |
9 | 忘记Linux密码 | 太久没登录 | wsl -d Ubuntu -u root,然后passwd重置 |
10 | WSL2占用C盘空间太大 | 虚拟磁盘不断增长 | 定期清理+压缩vhdx文件 |
重点问题详解
问题5:限制WSL2内存占用
在Windows用户目录下创建%USERPROFILE%\.wslconfig文件:
[wsl2] memory=4GB # 限制最大内存
processors=4 # 限制CPU核心数
swap=2GB # 交换空间大小
localhostForwarding=true
修改后需要 wsl --shutdown重启WSL生效。
问题10:压缩WSL2虚拟磁盘
1. 先关闭WSL wsl --shutdown #
2. 打开diskpart(管理员PowerShell) diskpart #
3. 在diskpart中操作 select vdisk file="C:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu79rh1fv1nd2sc\LocalState\ext4.vhdx" compact vdisk detach vdisk exit
问题9:重置Linux密码
1、以root身份进入WSL wsl -d Ubuntu -u root
2、重置你的用户密码 passwd yourname
3、退出 exit
十一、WSL2 vs 虚拟机 vs 双系统——三路线对比
体验Linux有三条路,各有优劣。上一篇文章我们简单比较过,这里展开细说:
对比项 | WSL2 | 虚拟机(VMware/VBox) | 双系统 |
安装难度 | ⭐一条命令 | ⭐⭐下载镜像+配置 | ⭐⭐⭐分区+引导 |
风险程度 | 零风险 | 零风险 | 有分区风险 |
性能表现 | 命令行快,GUI一般 | 中等(有虚拟化损耗) | 原生性能 |
GPU直通 | ✅ 部分支持 | ❌ 通常不支持 | ✅ 完全支持 |
Linux桌面体验 | WSLg有限 | ✅ 完整桌面 | ✅ 完整桌面 |
与Windows协同 | 无缝 | 需共享文件夹 | 重启切换 |
资源占用 | 按需分配 | 预先分配 | 各用各的 |
Docker支持 | 原生支持 | 需嵌套虚拟化 | 原生支持 |
外设支持 | 有限 | 部分直通 | 全部支持 |
学习门槛 | 低 | 中 | 高 |
可逆性 | 随时卸载 | 删除虚拟机 | 需修复引导 |
适用阶段 | 入门体验/日常开发 | 学习桌面/测试环境 | 深度使用/长期工作 |
✅ 建议:
入门阶段:先用WSL2体验命令行 → 感觉不够用?
进阶阶段:上虚拟机体验完整桌面 → 需要性能?
深入阶段:装双系统获得原生体验
三条路不是互斥的——你可以WSL2做日常开发,虚拟机做测试,双系统做深度学习。很多老手三个都用。
十二、总结与下一步
WSL2是微软给Windows用户的一份厚礼——让你不用离开Windows舒适区,就能享受到Linux的强大。它不是Linux的"替代品",而是通往Linux世界的一扇最方便的门。如果你觉得WSL2还不够"真实",想要完整桌面、原生性能、GPU全速运行,那就要装双系统了。下一篇教你制作U盘启动盘、分配磁盘空间、安装Ubuntu并与Windows并存。
下一步行动
1.打开管理员PowerShell,输入 wsl --install,5分钟后就能用上Linux
2.熟悉基本命令,安装常用软件(git/python3/vim)
3.试试Docker Desktop + WSL2,体验容器化开发
4.如果WSL2满足不了你,下一篇我们讲虚拟机安装
U盘安装Linux双系统——Windows和Ubuntu并存实战