WSL (Windows Subsystem for Linux)
WSL (Windows Subsystem for Linux)
WSL 让你在 Windows 上运行 Linux 环境,无需虚拟机开销。
安装 WSL
1️⃣ 启用 WSL 功能
PowerShell 命令
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatformDISM 命令
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestartGUI 方式
- Win + R 输入
optionalfeatures - 勾选「适用于 Linux 的 Windows 子系统」
- 勾选「虚拟机平台」
- 点击确定,重启电脑
2️⃣ 更新 WSL
# 更新到最新版本
wsl --update
# 设置默认版本为 WSL 2
wsl --set-default-version 23️⃣ 安装 Linux 发行版
从 Microsoft Store 安装 Ubuntu 20.04.6 LTS
安装完成后首次启动,设置用户名和密码。
系统配置
换源(国内镜像加速)
# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑源列表
sudo vim /etc/apt/sources.list替换为阿里云/清华源(根据 Ubuntu 版本选择)
# 更新软件包
sudo apt update && sudo apt upgrade -y禁用 Windows PATH
默认 WSL 会继承 Windows 的 PATH,可能导致命令冲突。
编辑 /etc/wsl.conf:
sudo vi /etc/wsl.conf添加以下内容:
[interop]
enabled = false
appendWindowsPath = false重启 WSL:
wsl --shutdownSSH 配置
方案一:基础配置
适合本地开发使用。
1. 安装 SSH 服务
sudo apt update
sudo apt install openssh-server net-tools -y2. 编辑配置文件
sudo vim /etc/ssh/sshd_config修改以下配置:
Port 22
Port 2222 # 额外端口,方便使用
ListenAddress 0.0.0.0
PasswordAuthentication yes
PermitRootLogin no # 安全起见禁用 root 登录3. 启动服务
# 启动 SSH
sudo systemctl start ssh
# 开机自启
sudo systemctl enable ssh
# 查看状态
sudo systemctl status ssh
# 验证端口
sudo ss -tlnp | grep ssh应该看到 0.0.0.0:22 和 0.0.0.0:2222
4. 免密登录
# 生成密钥对
ssh-keygen -t ed25519 -C "wsl-ssh-key"
# 查看公钥
cat ~\.ssh\id_ed25519.pub复制公钥内容,在 WSL 中添加:
# 创建并配置 authorized_keys
mkdir -p ~/.ssh
echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys5. 连接测试
ssh -p 2222 username@localhost方案二:镜像网络模式(推荐)
WSL2 新版本支持镜像网络模式,WSL 与宿主机共用 IP。
1. 配置 .wslconfig
notepad $env:USERPROFILE\.wslconfig添加以下内容:
[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
[experimental]
hostAddressLoopback=truenetworkingMode=mirrored- WSL2 与宿主机共用 IPhostAddressLoopback=true- 局域网可访问 WSL2 服务firewall=true- 启用 Hyper-V 防火墙
2. 重启 WSL
wsl --shutdown
wsl验证版本:
wsl --version确保为 2.0.0+,推荐 2.0.14.0 以上。
3. 配置 SSH 服务
# 安装
sudo apt install openssh-server -y
# 编辑配置
sudo vi /etc/ssh/sshd_config修改端口(避免与 Windows 冲突):
Port 8022
PasswordAuthentication yes启动服务:
sudo service ssh restart4. 开放防火墙
镜像模式下需要手动开放 Hyper-V 防火墙。
# 查看虚拟机 ID
Get-NetFirewallHyperVVMSetting
# 允许入站连接(替换为你的 VM ID)
Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow5. 测试连接
ssh username@localhost -p 8022ssh username@<Windows_IP> -p 8022
# 例如:ssh user@192.168.1.100 -p 8022方案三:端口转发模式
适用于旧版本 WSL2 或 NAT 模式。
1. 查找 WSL IP
ip addr show eth0 | grep inet输出示例:inet 172.22.183.12/20
⚠️ 注意:WSL 重启后 IP 会变化。
2. Windows 端口转发
# 配置端口转发
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=2222 connectaddress=<WSL_IP>
# 开放防火墙
netsh advfirewall firewall add rule name="WSL SSH 2222" dir=in action=allow protocol=TCP localport=22223. 自动更新转发脚本
WSL IP 变化时自动更新转发规则:
# WSL 端口转发后台守护脚本
# 保存为 wsl-portproxy-daemon.ps1 并以管理员身份运行
$listenPort = 2222 # Windows 对外暴露的端口
$connectPort = 2222 # WSL 内部 sshd 端口
$interval = 30 # 检查间隔(秒)
function Get-WslIP {
try {
$ip = wsl hostname -I 2>$null
if ($ip) {
return $ip.Trim().Split(" ")[0]
}
} catch {
return $null
}
return $null
}
$lastIP = ""
Write-Host "🚀 WSL 端口转发守护进程启动 (每 $interval 秒检查一次)" -ForegroundColor Cyan
while ($true) {
$wslIP = Get-WslIP
if ($wslIP -and $wslIP -ne $lastIP) {
Write-Host "✅ 检测到 WSL IP: $wslIP"
# 删除旧规则
netsh interface portproxy delete v4tov4 listenport=$listenPort listenaddress=0.0.0.0 2>$null | Out-Null
# 添加新规则
netsh interface portproxy add v4tov4 listenport=$listenPort listenaddress=0.0.0.0 connectport=$connectPort connectaddress=$wslIP
Write-Host "🔄 已更新端口转发规则: Windows:0.0.0.0:$listenPort → WSL:$wslIP:$connectPort" -ForegroundColor Green
$lastIP = $wslIP
}
Start-Sleep -Seconds $interval
}运行:
powershell.exe -ExecutionPolicy Bypass -File .\wsl-portproxy-daemon.ps1CUDA 安装
前置检查
nvidia-smi右上角 CUDA Version 显示支持的最高版本。

限制

不支持的功能

安装 CUDA Toolkit
以 CUDA 12.9 为例(从 NVIDIA 官网 获取):
# 1. 添加仓库
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
# 2. 下载安装包
wget https://developer.download.nvidia.com/compute/cuda/12.9.0/local_installers/cuda-repo-wsl-ubuntu-12-9-local_12.9.0-1_amd64.deb
# 3. 安装
sudo dpkg -i cuda-repo-wsl-ubuntu-12-9-local_12.9.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-9-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-9配置环境变量
# 添加到 PATH
echo 'export PATH="/usr/local/cuda-12.9/bin:$PATH"' >> ~/.bashrc
# 添加库路径
echo 'export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-12.9/lib64' >> ~/.bashrc
# 重新加载
source ~/.bashrc验证安装:
nvcc --version多版本管理
PATH 中靠前的路径优先级更高。
例如同时安装 CUDA 12.9 和 13.0:
# 优先使用 12.9
export PATH="/usr/local/cuda-12.9/bin:/usr/local/cuda-13.0/bin:$PATH"
# 优先使用 13.0
export PATH="/usr/local/cuda-13.0/bin:/usr/local/cuda-12.9/bin:$PATH"Nsight 工具
Nsight Systems
性能分析工具。
# 安装
chmod a+x NsightSystems-linux-public-2025.5.1.121-3638078.run
sudo ./NsightSystems-linux-public-2025.5.1.121-3638078.run
# 添加到 PATH
echo 'export PATH="/opt/nvidia/nsight-systems/2025.5.1/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcNsight Compute
GPU 核分析工具。
# 安装
chmod a+x nsight-compute-linux-2025.3.0.19-36273991.run
sudo ./nsight-compute-linux-2025.3.0.19-36273991.run
# 添加到 PATH
echo 'export PATH="/usr/local/NVIDIA-Nsight-Compute/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc高版本 Nsight 生成的文件,低版本无法打开。团队使用时请保持版本一致。
常见问题
WSL 无法启动
# 完全重启 WSL
wsl --shutdown
# 检查 WSL 状态
wsl --status网络无法访问
# WSL 中重启网络
sudo service networking restart
# 检查 DNS
cat /etc/resolv.conf磁盘空间不足
# 压缩 VHDX 磁盘文件
wsl --manage <distro> --set-sparse true恢复 Windows PATH
编辑 /etc/wsl.conf:
[interop]
appendWindowsPath = true然后重启 WSL。