ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

在 Linux 虚拟机里跑 GPU:ExHyperV SSH 自动化部署 GPU-PV 全流程

2026/9/2 23:12:15 拓冰建站 浏览量
在 Linux 虚拟机里跑 GPU:ExHyperV SSH 自动化部署 GPU-PV 全流程 在 Linux 虚拟机里跑 GPUExHyperV SSH 自动化部署 GPU-PV 全流程【免费下载链接】ExHyperVThe Excalibur of Hyper-V / Hyper-V 神器项目地址: https://gitcode.com/gh_mirrors/ex/ExHyperV在 Hyper-V 的 Linux 虚拟机里用上物理显卡一直是折腾党的高难度副本要改 MMIO 间隙、要准备 dxgkrnl 内核模块、还要手动上传整包驱动。而ExHyperVHyper-V 神器把这一切封装成了一条 SSH 自动化流水线——你在图形界面里选好显卡和脚本、填好 SSH 密码剩下的驱动解析、SFTP 上传、脚本执行、重启续跑全部由程序代劳。本文带你走一遍 ExHyperV 部署 Linux GPU-PV 的完整流程零基础也能照着做。一、GPU-PV 是什么为什么 Linux 能用上显卡Hyper-V 的 GPU 直通并非物理直通而是GPU 分区GPU Partition WDDM 半虚拟化主机侧的物理驱动负责渲染虚拟机内通过 VMBus 通道与一个虚拟显卡设备对话Linux 里则由dxgkrnl内核模块扮演翻译官让 Mesa / Dozen 等用户态栈把 OpenGL、Vulkan、D3D12 请求转发到主机。这套机制的关键在于Linux 部署 主机驱动包 dxgkrnl 内核模块 WSL 运行时库三样缺一不可。手动做非常繁琐而这正是 ExHyperV 自动化的价值所在。二、部署前的两个前置条件在打开 ExHyperV 之前先确认两件事GPU 可分区NVIDIA 30/40/50 系、AMD 部分独显支持Msvm_PartitionableGpu分区Intel 核显走的是另一条 WDDM 直通路线本文不展开。虚拟机满足 GPU 要求需要开启「来宾控制缓存类型」GuestControlledCacheTypes并放大高位 MMIO 间隙通常 64GB 起步。好消息是这两项ExHyperV 都会自动检查与优化检查逻辑VmGpuService.cs 中的CheckVmForGpuAsync直接读 WMI 的HighMmioGapSize与GuestControlledCacheTypes不达标时调用OptimizeVmForGpuAsync自动改写配置。主机策略HyperVGpuPolicyService.cs 负责放开不支持 GPU 分配的拦截让非官方显卡也能上机。⚠️ 小提示如果虚拟机里还装着 NVIDIA 官方驱动建议先卸载——它会和dxgkrnl抢占 GPU 访问权导致nvidia-smi报GPU access blocked by the operating system。三、开始部署图形界面四步走1️⃣ 打开 GPU 设置选择脚本进入目标 Linux 虚拟机的显卡设置页点击「添加 GPU」。程序会列出主机所有显卡选中要分配的显卡后Linux 部署面板会让你选择部署脚本。内置脚本清单来自 src/Linux/script/index.json目前有脚本特性Ubuntu-22.04-OfficialCUDA ✅ / Mesa ✅版本 1.1.0Ubuntu-24.04-OfficialCUDA ✅ / Mesa ❌版本 1.0.2fnOS-HyperV-GPU-PVfnOS 定制版Win10 22H2 实测可用脚本本体在 src/Linux/script/ 目录例如 Ubuntu-22.04-Official.sh 会自动识别 x64/arm64 架构、安装依赖、带 5 次重试机制并支持传入代理参数。2️⃣ 填写 SSH 凭据填入虚拟机的SSH 用户名 / 密码并决定安装 OpenGL/Vulkan 图形驱动勾选后额外执行图形栈配置Mesa/Vulkan ICD 都会配好代理设置可选国内下载脚本和依赖时可填 HTTP 代理程序会注入http_proxy环境变量虚拟机可以处于关机状态ExHyperV 会自动开机。3️⃣ 一键启动全程无需手动干预点击部署后程序在 VmGpuService.cs 的ProvisionLinuxGpuAsync中按四阶段状态机执行阶段动作实现① 准备开机如需、按 MAC 嗅探 IP、探测 SSH 端口就绪VmIpService.cs 端口轮询② 上传把主机 GPU 驱动的完整 FileRepository WSL 运行库libd3d12等经 SFTP 推到/tmp/exhyperv_deploy/SshService.cs 的UploadDirectoryAsyncWSL 库见 src/Linux/lib/x64/③ 脚本在虚拟机内wget/curl下载所选脚本并chmod x可走代理同 SSH 会话内执行④ 执行sudo运行脚本解析[STATUS: SUCCESS]/[STATUS: REBOOT_REQUIRED]信号最多 3 轮「执行 → 重启 → 重连 → 续跑」其中最巧妙的就是重启循环dxgkrnl内核模块编译安装后需要重启才生效脚本会打印REBOOT_REQUIREDExHyperV 捕获该信号后自动重启虚拟机、等待 SSH 恢复、再执行同一脚本直到SUCCESS——全程你只需要看着日志滚。 驱动包如何精确解析GpuDriverPackageResolver.cs 会从注册表定位所选显卡的 INF在 DriverStore 的 FileRepository 中精确匹配主包及 AMD 的 OpenCL/AMDWIN 伴生包防止同名文件链接到别的显卡版本——这也是整目录上传 精确链接策略的由来。4️⃣ 验证在 Ubuntu 里跑 CUDA部署完成后登录虚拟机lsmod | grep dxgkrnl、/dev/dxg存在即代表 dxg 通道就绪Vulkan 用户运行vulkaninfo --summary看到driverName Dozen、deviceName Microsoft Direct3D12 (...)就是大功告成。最终效果Ubuntu 22.04 虚拟机内Blender 的 CUDA 渲染设备里赫然出现物理显卡 RTX 4080 SUPER——这就是 GPU-PV 的威力部署完成后虚拟机仪表盘还会实时展示显卡的 3D 渲染、视频编解码负载四、常见问题速查症状原因与处理nvidia-smi报 GPU access blocked检查/dev/dxg与load-dxg-late.service是否就绪先卸载 NVIDIA 官方驱动SDDM 报 Failed to read display numberXorgkmsdev选错脚本在 Arch 图形模式下会自动写入 modesetting 配置Vulkan 报 Found no driversICD 选错检查VK_ICD_FILENAMES是否指向 Dozen 的dzn_icd.jsonSSH 下glxinfo报 unable to open display无图形会话DISPLAY未设置属正常现象不影响 Vulkan/D3D12更完整的手动部署对照、主机侧 PowerShell 命令与验证方法可查阅项目内的 doc/Linux.md内核补丁参考 src/Linux/script/patches/ 下的 WSL 5.15 / 6.6 GPU-PV 支持补丁。五、写在最后ExHyperV 把GPU 分区 → MMIO 优化 → 驱动解析 → SFTP 上传 → SSH 脚本执行 → 重启续跑这条原本要写几十行脚本的链路压缩成了图形界面的几次点击。对新手而言你只需要记住三句话选显卡、填 SSH、看日志然后享受在 Linux 虚拟机里跑 CUDA 和 Vulkan 的乐趣吧 【免费下载链接】ExHyperVThe Excalibur of Hyper-V / Hyper-V 神器项目地址: https://gitcode.com/gh_mirrors/ex/ExHyperV创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考