当前位置: 首页 > news >正文

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 LTSwsl --install -d Ubuntu-24.04最新长期支持版,推荐主力使用
Ubuntu 22.04 LTSwsl --install -d Ubuntu-22.04稳定性最高,兼容性好
Ubuntu 20.04 LTSwsl --install -d Ubuntu-20.04适合旧项目、TensorFlow 1.x 等
Debian GNU/Linuxwsl --install -d Debian小巧干净,几乎无预装包
Kali Linuxwsl --install -d Kali-Linux安全渗透测试工具集成版
openSUSE Leap 15.6wsl --install -d openSUSE-Leap-15.6稳定企业级版本
Fedora Remix for WSLwsl --install -d Fedora-Remix由 Whitewater Foundry 发布,接近 Fedora 原版
AlmaLinux 9wsl --install -d AlmaLinux-9CentOS 替代方案之一
Rocky Linux 9wsl --install -d RockyLinux-9企业服务器兼容 RHEL
Oracle Linux 9wsl --install -d OracleLinux-9Oracle 官方维护
Pengwin(付费)wsl --install -d Pengwin专为 WSL 优化的商业发行版
Arch Linuxwsl --install -d Arch 或通过 wsldl 项目 手动安装适合高阶用户
Alpine Linuxwsl --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 或官方仓库导出的根文件系统镜像

示例资源:

  • ArchWSL

  • Alpine WSL

  • Gentoo WSL


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

wsl --list --verbose

示例输出:

  NAME             STATE           VERSION
* Ubuntu-24.04     Running         2Debian           Stopped         2docker-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.6C:\Users\VISION16Pro>wsl --install -d Debian
无法从“https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json”提取列表分发。操作超时
错误代码: Wsl/InstallDistro/0x80072ee2C:\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-smiSSH 会话未继承 GPU 环境编辑 /etc/wsl.conf.bashrc 加载 /usr/lib/wsl/lib
nvidia-smi 报 driver not foundPATH/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 变化时执行这段脚本即可自动恢复连接。

http://www.dtcms.com/a/507299.html

相关文章:

  • 运维逆袭志·第3期 | 数据孤岛破局之战 :跨业务分析的难题攻坚
  • 《道德经》第二十一章
  • 第 14 章:Spring AI Alibaba — Nacos3实现动态Prompt
  • TableTime:将时序分类重构为表格理解任务,更有效对齐LLM语义空间
  • Java的main方法语法
  • 【Linux】 层层递进,抽丝剥茧:调度队列、命令行参数、环境变量
  • 火电厂VR安全培训系统怎么样?VR安全培训告别传统培训痛点!
  • 网站建设有哪些工作儿童教育网站源码
  • 开题报告之基于SpringBoot框架的路面故障信息上报系统设计与实现
  • rabbitmq服务端消费端实例(direct和fanout模式)
  • 橙色车队上的安全密码:嘉顺达蓝海的危险品运输专业之道
  • FPGA高频面试问题整理—附答案
  • html框架做网站创立个网站专业卖手机
  • 【设计模式】单例模式(Singleton)
  • 2025.10.18 TRAE HACKATHON WUHAN 黑客马拉松在武汉隆重举行[特殊字符]
  • php5 mysql网站开发实例精讲东莞保安公司联系电话
  • 怎么加入网站做微商城深圳广告设计与制作公司
  • App 上架 iOS 全流程指南,开发签名、IPA 上传与使用 开心上架 跨平台自动化上架实践
  • Learning Depth Estimation for Transparent and Mirror Surfaces
  • 基于知识图谱的智能会议纪要系统:从语音识别到深度理解
  • 网络通信中的POE PD详解:从核心概念到芯片选型指南
  • TensorFlow2 Python深度学习 - 生成对抗网络(GAN)实例
  • 利用jmeter完成简单的压力测试
  • 做网站用什么编程软件黄页88网能不能发免费的广告
  • 电子商务网站开发合同网页设计基础教程第二版课后答案
  • 基于Vite创建一个Vue2
  • 小皮面板的MySQL点击启动后马上又停止了
  • 【Python入门】第5篇:数据结构初探(列表、元组、字典、集合)​
  • Redis的List数据结构底层实现
  • 基于半桥结构的双极性脉冲电源的研究