WSL¶
约 872 个字 107 行代码 4 张图片 预计阅读时间 5 分钟
安装 ¶
安装系统 ¶
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
访问 程序和功能 子菜单 打开或关闭Windows功能
,勾选适用于Linux的Windows子系统
和虚拟机平台
wsl --update
wsl --set-default-version 2
wsl --set-version <distro> <version>
Ubuntu 20.04.6 LTS - Windows 官方下载 | 微软应用商店 | Microsoft Store
点击安装,等待安装完成
打开 cmd,打开 ubuntu 的标签,设置用户名和密码,可以进入子系统
系统换源 ¶
SSH - wsl 基础配置 ¶
sudo apt update
sudo apt install openssh-server -y
sudo apt install net-tools
sudo vim /etc/ssh/sshd_config
搜索下面的内容,更改或取消注释
这样设置可以同时监听 22 和 2222 端口,方便使用
Port 22
Port 2222
ListenAddress 0.0.0.0
PasswordAuthentication yes
PermitRootLogin yes
sudo systemctl start ssh
sudo systemctl restart ssh
systemctl status ssh
sudo ss -tlnp | grep ssh
netstat -tlnp | grep ssh
你应该能看到 0.0.0.0:2222
或 [::]:2222
。
ssh -p 2222 <user>@<host>
ssh-copy-id -p 2222 <user>@<host>
开机自启
如果不配置开机自启动的话,需要手动启动 ssh 服务
sudo systemctl enable ssh
免密登陆
下面是配置免密登陆的步骤
ssh-keygen -t ed25519 -C "wsl-ssh-key"
cat ~\.ssh\id_ed25519.pub
复制输出的内容(以 ssh-ed25519
开头的一行)
在 WSL2 中粘贴到 ~/.ssh/authorized_keys
:
mkdir ~/.ssh
echo "粘贴的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
SSH - windows 转发 ¶
- WSL IP
在 WSL 里执行:
ip addr show eth0
你会看到类似:
inet 172.22.183.12/20 brd 172.22.191.255 scope global eth0
这里的 172.22.183.12
就是 WSL 的内部 IP。
⚠️ 注意:WSL 重启后,这个 IP 会变化。
确认 Windows 主机 IP, 在 Windows PowerShell 里运行:
ipconfig
找到你要让别人访问的网络接口(例如 Wi-Fi 或 Ethernet192.168.1.100
。
- Windows 上配置端口转发
在 Windows PowerShell(管理员权限)里执行:
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=2222 connectaddress=<WSL_IP>
替换 <WSL_IP>
为上一步查到的 WSL IP(例如 172.22.183.12
这个命令意思是:当别人访问 Windows_IP:2222
,流量会被转发到 WSL_IP:2222
。
也可以使用 defender 防火墙添加规则
- 开放防火墙
netsh advfirewall firewall add rule name="OpenSSH WSL 2222" dir=in action=allow protocol=TCP localport=2222
- 测试连接
在另一台机器上执行:
ssh -p 2222 user@192.168.1.100
这里 192.168.1.100
是 Windows 主机的局域网 IP。
后台自动运行的 PowerShell 脚本,它会定时检查 WSL 的 IP 是否变化,如果变了就自动更新 Windows 的端口转发规则
# WSL 端口转发后台守护脚本
# 保存为 wsl-portproxy-daemon.ps1 并用 PowerShell 管理员身份运行
$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
}
-
将脚本保存为
wsl-portproxy-daemon.ps1
。 -
用 管理员权限 启动 PowerShell。
-
运行它会在后台循环运行,每隔 30 秒检查一次 WSL IP,若变化就自动更新转发规则。
powershell.exe -ExecutionPolicy Bypass -File .\wsl-portproxy-daemon.ps1
安装 cuda ¶
Limitations&Banned Features
首先查看电脑支持的 CUDA 版本
nvidia-smi
右上角是支持的 cuda 版本
根据 CUDA Toolkit 12.9 Downloads | NVIDIA Developer,选择对应的版本
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
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
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
export PATH="/usr/local/cuda-12.9/bin:$PATH"
添加路径
CUDA Installation Guide for Linux — Installation Guide for Linux 13.0 documentation
In addition, when using the runfile installation method, the LD_LIBRARY_PATH
variable needs to contain /usr/local/cuda-13.0/lib64
on a 64-bit system and /usr/local/cuda-13.0/lib
for the 32 bit compatibility:
$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda-13.0/lib64
Note that the above paths change when using a custom install path with the runfile installation method.
V13.0
如果是 13.0,则可以安装 13.0,参考 NVIDIA 官方文档 CUDA on WSL User Guide — CUDA on WSL 13.0 documentation
可以前往 CUDA Toolkit 13.0 Downloads | NVIDIA Developer 这个网页查看具体教程,这里截取使用的命令(2025-8-16)
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
wget https://developer.download.nvidia.com/compute/cuda/13.0.0/local_installers/cuda-repo-wsl-ubuntu-13-0-local_13.0.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-13-0-local_13.0.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-13-0-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-13-0
像 lz 就不小心装错了,在第三步的时候发现,
sudo dpkg -r cuda-repo-wsl-ubuntu-13-0-local
sudo dpkg --purge cuda-repo-wsl-ubuntu-13-0-local
nsight-systems¶
在官网上进行下载
chmod a+x NsightSystems-linux-public-2025.5.1.121-3638078.run
sudo ./NsightSystems-linux-public-2025.5.1.121-3638078.run
export PATH="/opt/nvidia/nsight-systems/2025.5.1/bin/:$PATH"
这里要注意 PATH 的先后顺序,在前面路径下的文件会优先被调用
比如/usr/local/cuda-12.9/bin
和/usr/local/cuda-13.0/bin
,如果/usr/local/cuda-12.9/bin
在前面,那么nvcc
会优先使用/usr/local/cuda-12.9/bin
下的文件,而不是/usr/local/cuda-13.0/bin
下的文件。
比如我有两个版本的 Nsight-systems,一个在/opt/nvidia/nsight-systems/2025.5.1
,一个在/opt/nvidia/nsight-systems/2025.3.0
,如果/opt/nvidia/nsight-systems/2025.5.1
的 PATH 路径/opt/nvidia/nsight-systems/2025.5.1/bin
在前面,那么nsight-systems
会优先使用/opt/nvidia/nsight-systems/2025.5.1/bin
下的文件,而不是/opt/nvidia/nsight-systems/2025.3.0/bin
下的文件。
注意版本问题
高版本的 nsight-system 生成的文件,低版本的 nsight-system 无法打开。
nsight-compute¶
chmod a+x nsight-compute-linux-2025.3.0.19-36273991.run
sudo ./nsight-compute-linux-2025.3.0.19-36273991.run
export PATH="/usr/local/NVIDIA-Nsight-Compute/:$PATH"
问题 ¶
不要设置 windows 环境变量 ¶
在 wsl 的 ubuntu 中编辑/etc/wsl.conf
,输入:
vi /etc/wsl.conf
[interop]
enabled = false
appendWindowsPath = false
wsl --shutdown