windows中用wsl使用cuda

windows11 安装WSL2全流程_wsl2安装-CSDN博客lhttps://blog.csdn.net/u011119817/article/details/130745551?fromshare=blogdetail&sharetype=blogdetail&sharerId=130745551&sharerefer=PC&sharesource=babytiger&sharefrom=from_link

WSL(Windows Subsystem for Linux)可以安装多种 Linux 发行版 ,而且支持从 Microsoft Store 、命令行、甚至手动导入 .tar 镜像进行安装。下面是完整的可选类型与方式说明 👇


🧩 一、常见可直接安装的 Linux 发行版(Microsoft Store 官方提供)

发行版名称 安装命令(PowerShell) 说明
Ubuntu 24.04 LTS wsl --install -d Ubuntu-24.04 最新长期支持版,推荐主力使用
Ubuntu 22.04 LTS wsl --install -d Ubuntu-22.04 稳定性最高,兼容性好
Ubuntu 20.04 LTS wsl --install -d Ubuntu-20.04 适合旧项目、TensorFlow 1.x 等
Debian GNU/Linux wsl --install -d Debian 小巧干净,几乎无预装包
Kali Linux wsl --install -d Kali-Linux 安全渗透测试工具集成版
openSUSE Leap 15.6 wsl --install -d openSUSE-Leap-15.6 稳定企业级版本
Fedora Remix for WSL wsl --install -d Fedora-Remix 由 Whitewater Foundry 发布,接近 Fedora 原版
AlmaLinux 9 wsl --install -d AlmaLinux-9 CentOS 替代方案之一
Rocky Linux 9 wsl --install -d RockyLinux-9 企业服务器兼容 RHEL
Oracle Linux 9 wsl --install -d OracleLinux-9 Oracle 官方维护
Pengwin(付费) wsl --install -d Pengwin 专为 WSL 优化的商业发行版
Arch Linux wsl --install -d Arch 或通过 wsldl 项目 手动安装 适合高阶用户
Alpine Linux wsl --install -d Alpine 超轻量(只有几十 MB),非常适合容器或测试

💡 提示:执行 wsl --list --online 可以直接查看系统当前支持的所有官方发行版列表。


🧰 二、命令行查看和安装发行版

查看可用发行版:

复制代码
wsl --list --online

输出示例:

复制代码
以下是可安装的有效分发:
NAME                   FRIENDLY NAME
Ubuntu-24.04           Ubuntu 24.04 LTS
Ubuntu-22.04           Ubuntu 22.04 LTS
Debian                 Debian GNU/Linux
Kali-Linux             Kali Linux
openSUSE-Leap-15.6     openSUSE Leap 15.6
Fedora-Remix           Fedora Remix for WSL
Alpine                 Alpine Linux

安装发行版:

复制代码
wsl --install -d <NAME>

例如:

复制代码
wsl --install -d Debian

💾 三、安装第三方 / 自定义发行版(离线导入)

你可以下载 .tar 根文件系统镜像(RootFS),然后导入为 WSL 实例:

复制代码
wsl --import MyLinux D:\WSL\MyLinux rootfs.tar
  • MyLinux → 自定义发行版名称

  • D:\WSL\MyLinux → 安装位置

  • rootfs.tar → 从 Docker Hub 或官方仓库导出的根文件系统镜像

示例资源:


🧠 四、查看当前安装的发行版与状态

复制代码
wsl --list --verbose

示例输出:

复制代码
  NAME             STATE           VERSION
* Ubuntu-24.04     Running         2
  Debian           Stopped         2
  docker-desktop   Running         2

💡 五、推荐使用场景

场景 推荐发行版
普通开发 / AI 研究 Ubuntu 24.04 / 22.04
安全渗透测试 Kali Linux
企业部署 / 稳定环境 Debian / AlmaLinux / Rocky
极简容器测试 Alpine
自定义极客环境 Arch Linux

复制代码
wsl --list --online
以下是可安装的有效分发的列表。
使用"wsl.exe --install <Distro>"安装。

NAME                            FRIENDLY NAME
AlmaLinux-8                     AlmaLinux OS 8
AlmaLinux-9                     AlmaLinux OS 9
AlmaLinux-Kitten-10             AlmaLinux OS Kitten 10
AlmaLinux-10                    AlmaLinux OS 10
Debian                          Debian GNU/Linux
FedoraLinux-42                  Fedora Linux 42
SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6
SUSE-Linux-Enterprise-15-SP7    SUSE Linux Enterprise 15 SP7
Ubuntu                          Ubuntu
Ubuntu-24.04                    Ubuntu 24.04 LTS
archlinux                       Arch Linux
kali-linux                      Kali Linux Rolling
openSUSE-Tumbleweed             openSUSE Tumbleweed
openSUSE-Leap-16.0              openSUSE Leap 16.0
Ubuntu-20.04                    Ubuntu 20.04 LTS
Ubuntu-22.04                    Ubuntu 22.04 LTS
OracleLinux_7_9                 Oracle Linux 7.9
OracleLinux_8_10                Oracle Linux 8.10
OracleLinux_9_5                 Oracle Linux 9.5
openSUSE-Leap-15.6              openSUSE Leap 15.6

C:\Users\VISION16Pro>wsl --install -d Debian
无法从"https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json"提取列表分发。操作超时
错误代码: Wsl/InstallDistro/0x80072ee2

C:\Users\VISION16Pro>wsl --install -d Debian
正在下载: Debian GNU/Linux
正在安装: Debian GNU/Linux
已成功安装分发。可以通过 "wsl.exe -d Debian" 启动它
正在启动 Debian...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: user
New password:
Retype new password:
passwd: password updated successfully
usermod: no changes

Ubuntu 24.04 上安装 SSH 服务(即 OpenSSH Server)非常简单,按以下步骤即可:


✅ 一、安装 OpenSSH Server

复制代码
sudo apt update
sudo apt install -y openssh-server

✅ 二、查看 SSH 服务状态

安装完成后,SSH 服务通常会自动启动。

你可以用以下命令检查状态:

复制代码
sudo systemctl status ssh

如果看到类似:

复制代码
Active: active (running)

表示 SSH 正在运行。

若没启动,可手动启动:

复制代码
sudo systemctl start ssh

✅ 三、设置开机自启(可选)

复制代码
sudo systemctl enable ssh

✅ 四、确认端口监听

默认端口是 22,可以用以下命令确认:

复制代码
sudo ss -tlnp | grep ssh

复制代码
netstat -tlnp | grep ssh

应看到:

复制代码
LISTEN  0  128  0.0.0.0:22  ...

✅ 五、从其他设备连接

假设 Ubuntu 的 IP 是 192.168.1.88

则在其他机器上可以连接:

复制代码
ssh username@192.168.1.88

例如:

复制代码
ssh ubuntu@192.168.1.88

✅ 六、(可选)修改 SSH 配置

编辑配置文件:

复制代码
sudo nano /etc/ssh/sshd_config

常见修改项:

复制代码
Port 22                # 修改为其他端口增强安全性
PermitRootLogin no     # 禁止 root 直接登录
PasswordAuthentication yes  # 启用密码登录(若需要)

保存后重启服务:

复制代码
sudo systemctl restart ssh

✅ 七、防火墙放行(如果启用了 UFW)

复制代码
sudo ufw allow ssh
sudo ufw reload

可以连上 了,但是运行nvidia-smi报错,但是在wsl窗口中输入nvidia-smi正常运行

把下面两行 CUDA 环境变量加在 .bashrc 最底部 是正确

复制代码
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

这是因为 WSL 的 GPU 访问权限 只自动绑定到本地控制台会话(WSL 内核进程启动时的那一份环境),

而通过 SSH 进入时属于一个新的 login session,没有默认继承 GPU 设备访问映射。


🧩 现象重现

你 SSH 登录后执行:

复制代码
nvidia-smi

报错类似:

复制代码
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
Make sure that the latest NVIDIA driver is installed and running.

而在 WSL 控制台内执行是正常的。


✅ 解决方案 1:添加 GPU 权限映射(推荐)

1️⃣ 编辑 /etc/wsl.conf

复制代码
sudo nano /etc/wsl.conf

添加(如果没有则新建):

复制代码
[boot]
systemd=true

[automount]
enabled=true
options="metadata"

[interop]
appendWindowsPath=true

[gpu]
enabled=true

保存后退出。

2️⃣ 在 Windows PowerShell 执行:

复制代码
wsl --shutdown

然后重新进入 WSL:

复制代码
wsl

3️⃣ 测试

在本地和 SSH 方式下分别执行:

复制代码
nvidia-smi

现在两者都应正常输出 GPU 信息。


✅ 解决方案 2:通过 SSH 时显式导入 NVIDIA 环境变量

如果不想重启,可以直接让 SSH 会话加载 GPU 驱动路径。

1️⃣ 在 SSH 登录用户的 .bashrc 里添加:

复制代码
export PATH=/usr/lib/wsl/lib:$PATH
export LD_LIBRARY_PATH=/usr/lib/wsl/lib:$LD_LIBRARY_PATH

2️⃣ 然后执行:

复制代码
source ~/.bashrc
nvidia-smi

这会强制让 SSH 会话加载 /usr/lib/wsl/lib 中的 GPU stub 库。


✅ 解决方案 3:确认驱动支持

在 Windows 中运行:

复制代码
nvidia-smi

并确认驱动版本 ≥ WDDM 3.0CUDA 11.8+

(即驱动版本 510+)。

WSL 仅支持这些新驱动用于 GPU 直通。


✅ 解决方案 4:验证 GPU 设备可见

在 SSH 会话中运行:

复制代码
ls /dev/dxg

若输出:

复制代码
/dev/dxg

说明 GPU 已被 WSL 映射。

如果没有,则说明当前 session 未加载 GPU 子系统(需要重启 wsl)。


✅ 一句话总结

现象 原因 解决方案
只能在本地 WSL 用 nvidia-smi SSH 会话未继承 GPU 环境 编辑 /etc/wsl.conf.bashrc 加载 /usr/lib/wsl/lib
nvidia-smi 报 driver not found PATH/LD_LIBRARY_PATH 不含 NVIDIA 库 .bashrc 添加路径
/dev/dxg 不存在 WSL GPU 未初始化 wsl --shutdown 后重启

user@3090PC:~$ ip addr | grep "inet " | grep eth0

inet 172.19.38.193/20 brd 172.19.47.255 scope global eth0

现在你已经找到了 WSL 的真实 IP:

复制代码
172.19.38.193

接下来只要让 Windows 的端口转发规则指向这个 IP 就可以彻底解决 Connection reset 问题。


✅ 操作步骤(请在 Windows PowerShell 管理员模式下执行)

1️⃣ 删除旧规则
复制代码
netsh interface portproxy delete v4tov4 listenport=2222 listenaddress=0.0.0.0
2️⃣ 建立新的映射(指向 WSL 的实际 IP)
复制代码
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=22 connectaddress=172.19.38.193
3️⃣ 放行防火墙(如果之前没有)
复制代码
netsh advfirewall firewall add rule name="WSL SSH (2222)" dir=in action=allow protocol=TCP localport=2222
4️⃣ 验证映射是否生效
复制代码
netsh interface portproxy show all

你应当看到:

复制代码
Listen on ipv4:             Connect to ipv4:
Address         Port        Address         Port
--------------- ----------  --------------- ----------
0.0.0.0         2222        172.19.38.193   22

✅ 测试连接

在局域网其他机器或本机测试:

复制代码
ssh user@内网IP -p 2222

💡 现在转发会直接进入 WSL 的 172.19.38.193:22 接口,

不再经过 127.0.0.1 环回层,因此不会再出现 "Connection reset"。


✅ (可选)设置自动刷新脚本

由于每次重启 WSL 时 IP 可能会变化,

你可以创建一个脚本自动更新 portproxy 规则:

复制代码
$wsl_ip = (wsl hostname -I).Trim()
netsh interface portproxy reset
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=22 connectaddress=$wsl_ip
Write-Host "WSL IP = $wsl_ip 已映射至端口 2222"

保存为 C:\Users\admin\fix-wsl-ssh.ps1

以后每次 WSL IP 变化时执行这段脚本即可自动恢复连接。

相关推荐
池塘游鱼20 分钟前
VMware虚拟机安装Windows 10系统 超详细图文教程
windows·vmware
易点云徐源3 小时前
(已解决)BOSS直聘 Windows 客户端一直“加载中,请稍候”怎么办?
windows
绮罗郁金香3 小时前
windows延迟更新
windows
苏生Susheng5 小时前
【软件实施】Windows 服务器运维实战
java·运维·服务器·windows·spring boot·javaweb·实施
方向研究5 小时前
UEFI/Windows启动流程
windows
ZnS_oscar6 小时前
不用下载字体,获得仿宋字体
windows·word
霸道流氓气质6 小时前
通义千问 Chat 模型高级用法:Function Calling / Structured Output / 多轮对话
linux·运维·windows
Boop_wu6 小时前
[LangGraph] 案例 2 : 支持搜索的智能代理系统
服务器·windows·python·langchain
每日出拳老爷子7 小时前
【AI】Ollama 更新后 skipping CUDA 掉回 CPU
gpu·nvidia·cuda·ollama·本地大模型
啦啦啦~~~2227 小时前
PC端+安卓端阅读器推荐!开源本地小说阅读器软件,
android·论文阅读·windows·开源软件·福昕阅读器