作为一名开发者,我们常常面临两难的选择:Windows 拥有最广泛的软件生态和游戏支持(尤其对于拥有 RTX 显卡的同学),而 Linux 则是编程、服务器部署和 AI 训练的原生乐土。
双系统切换太繁琐,虚拟机(VMware/VirtualBox)又太笨重。微软的 WSL2 (Windows Subsystem for Linux 2) 完美解决了这个痛点。它允许你在 Windows 上原生运行 Linux 二进制文件,且拥有完整的系统调用兼容性和接近原生的性能。
WSL2 vs WSL1: WSL2 使用真实的 Linux 内核(通过轻量级 Hyper-V 虚拟机),系统调用兼容性达到 100%,I/O 性能大幅提升,是目前的推荐版本。WSL1 则通过翻译层实现兼容,性能和兼容性均不如 WSL2。
本文将带你从零开始,打造一个让生产力起飞的 WSL2 开发环境。
现在 Windows 10 (2004+) 和 Windows 11 的安装非常简单。
打开 PowerShell (管理员),输入以下命令:
wsl --install
这个命令会自动执行以下操作:
重启电脑后,Ubuntu 的终端窗口会自动弹出,要求你设置用户名和密码(输入密码时不会显示字符,这是正常的,输完回车即可)。
注意:如果出现
0x80370102等错误,请检查 BIOS 中是否开启了 Virtualization Technology (虚拟化技术)。Intel 平台找 “Intel VT-x”,AMD 平台找 “AMD-V” 或 “SVM Mode”。
如果你不想用 Ubuntu,可以先查看可用列表:
wsl --list --online
然后安装指定版本:
wsl --install -d Debian
# 或
wsl --install -d kali-linux
国内网络环境下,Ubuntu 官方源速度较慢,第一步必须更换为国内镜像源(如清华源或阿里云)。
进入 Ubuntu 终端,执行以下命令备份原文件并替换为清华源(以 Ubuntu 22.04 为例):
# 备份源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 使用 sed 命令批量替换
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
# 更新软件列表
sudo apt update
sudo apt upgrade -y
Ubuntu 24.04 注意: 24.04 使用新的 DEB822 格式,源文件位于
/etc/apt/sources.list.d/ubuntu.sources,直接将文件中的archive.ubuntu.com替换为mirrors.tuna.tsinghua.edu.cn即可。
在 Windows 的 PowerShell 中管理你的 Linux 子系统。
| 目标 | 命令 | 说明 |
|---|---|---|
| 查看状态 | wsl -l -v |
查看已安装发行版及 WSL 版本 |
| 进入系统 | wsl |
进入默认发行版 |
| 关闭系统 | wsl --shutdown |
彻底关闭所有 WSL 实例(释放内存) |
| 指定版本 | wsl -d Ubuntu-22.04 |
启动特定版本 |
| 设置默认 | wsl --set-default <名称> |
设置默认发行版 |
| 注销/删除 | wsl --unregister <名称> |
慎用! 会删除该系统及所有文件 |
| 更新内核 | wsl --update |
更新 WSL2 Linux 内核 |
WSL2 打通了任督二脉,文件访问非常自由:
/mnt/ 下。
cd /mnt/d\\wsl$explorer.exe .性能提示: 跨文件系统操作(如在
/mnt/c下运行npm install)会有明显性能损耗。建议将项目文件放在 Linux 文件系统内(~/projects/),而非 Windows 分区下。
这是 WSL 的灵魂所在。
code .。VS Code 会自动在 Windows 端启动 UI,但后端服务器运行在 Linux 中。你可以直接使用 Linux 的 GCC、Python 环境,且拥有完整的代码补全体验。
从 Microsoft Store 安装 Windows Terminal,它会自动识别所有已安装的 WSL 发行版,提供标签页、分屏、自定义主题等功能,是管理多个 Linux 环境的最佳终端。
WSL 默认安装在 C 盘,随着开发环境膨胀,C 盘不仅容易红,还可能影响系统速度。我们可以将其”搬家”。
步骤:
停止 WSL: wsl --shutdown
导出镜像:
# 导出到 D 盘备份目录
wsl --export Ubuntu D:\wsl_backup\ubuntu.tar
注销原系统:
wsl --unregister Ubuntu
导入到新位置:
# 格式:wsl --import <新名称> <安装路径> <镜像路径>
wsl --import Ubuntu D:\WSL\Ubuntu D:\wsl_backup\ubuntu.tar
恢复默认用户: 导入后默认是 root 用户,需要改回你的用户名:
ubuntu config --default-user <你的用户名>
WSL2 的网络经过了 NAT 转换,它和 Windows 主机不在同一个网段。要在 WSL2 中使用 Windows 的代理软件(Clash/v2ray 等),需要获取主机的 IP。
在 ~/.bashrc 或 ~/.zshrc 中添加以下脚本:
# 获取 Windows 主机 IP
export hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
# 配置代理 (假设 Windows 代理端口为 7890,请根据实际情况修改)
export https_proxy="http://${hostip}:7890"
export http_proxy="http://${hostip}:7890"
export all_proxy="socks5://${hostip}:7890"
# 这是一个别名函数,方便开关
proxy() {
export http_proxy="http://${hostip}:7890"
export https_proxy="http://${hostip}:7890"
echo "Proxy Enabled: ${hostip}:7890"
}
unproxy() {
unset http_proxy
unset https_proxy
echo "Proxy Disabled"
}
保存后执行 source ~/.bashrc,输入 proxy 即可开启代理加速。
WSL2 镜像网络模式(Windows 11 新特性): 在
.wslconfig中设置networkingMode=mirrored,WSL2 将与 Windows 享同一网络接口,可直接使用 Windows 的代理,无需上述脚本。
WSL2 可能会吃掉你所有的内存。在 Windows 用户主目录(C:\Users\你的用户名\)下创建一个 .wslconfig 文件,写入:
[wsl2]
memory=8GB # 限制最大内存
swap=2GB # 限制交换空间
processors=4 # 限制使用的 CPU 核心数
重启 WSL (wsl --shutdown) 生效。
如果你做深度学习,WSL2 支持直接调用 NVIDIA 显卡。
关键点:
安装 CUDA Toolkit(以 CUDA 12.x 为例):
# 添加 NVIDIA 包仓库
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
# 安装 CUDA Toolkit(不含驱动)
sudo apt install -y cuda-toolkit-12-4
安装好 PyTorch 后,验证是否成功:
import torch
print(torch.cuda.is_available()) # 输出 True 即为成功
print(torch.cuda.get_device_name(0)) # 输出显卡型号
| 问题 | 原因 | 解决方案 |
|---|---|---|
0x80370102 安装失败 |
BIOS 未开启虚拟化 | 进入 BIOS 开启 Intel VT-x / AMD-V |
0x80004005 错误 |
Hyper-V 未启用 | 以管理员运行 dism /online /enable-feature /featurename:VirtualMachinePlatform /all |
| WSL 内存占用过高 | 默认无内存上限 | 配置 .wslconfig 限制内存(见 5.3 节) |
code . 无法打开 VS Code |
VS Code 未加入 PATH | 重新安装 VS Code 并勾选”添加到 PATH” |
| Git clone 速度极慢 | 未配置代理 | 参考 5.2 节配置代理 |
| 文件操作性能差 | 跨文件系统访问 | 将项目移至 Linux 文件系统(~/)下 |
配置好 WSL2 后,你相当于同时拥有了 Windows 的舒适 UI 和 Linux 的强大内核。无论是 Web 开发、系统编程还是炼丹(Deep Learning),这都是目前最高效的方案。
Happy Coding!
提示:鼠标移动会产生拖尾并影响周围粒子;按住 Alt 可切换吸引(Alt)/排斥(默认)效果。