一次失败的 KVM 虚拟化 GPU 穿透案例

了解到 KVM 虚拟化技术,可以直接将宿主机的物理硬件穿透到客户机,让客户机独占硬件,所以我尝试在自己的笔记本上做实验。

场景说明:

  • 笔记本:拯救者 Y7000P 2018版 GTX 1060(这个版本的电脑一言难尽,首先它是双显卡,电脑显示器与 Intel 核显直连,而电脑的 HDMI 接口和独显直连。这个奇怪的结构让我没办法完美安装 nvidia 驱动,我尝试了交火驱动和单独nvidia驱动都有各种毛病。后来放弃折腾了,就只装了一个 nouveau 驱动勉强凑活着。
  • 操作系统:Manjaro Linux 5.8

因为笔记本上的 linux 本身就没办法使用 NIVIDA 的独显,所以安装一个虚拟机,把 NVIDIA 独显穿透过去,岂不美哉?

不过,经过了一整天的折腾,我都没有成功。

KVM 硬件穿透的思路

经过资料搜集,我理解的 kvm 硬件穿透的流程如下:

  1. 首先硬件上要支持,主要是 cpu 和主板都支持硬件穿透才可以;
  2. 配置好 kvm 相关的软件包,可以基于 kvm 安装虚拟机,大约需要先安装 kvm 和 kvm_intel 内核模块,再安装 qemu libvirt virt-manager 等相关软件包;
  3. 在宿主机上屏蔽掉想要穿透的硬件,为他强行绑定一个do nonthing 的驱动 vfio,避免宿主机和客户机同时对硬件访问造成冲突;
  4. 安装 OVMF ,其作用是提供 UEFI 的虚拟机引导方式;
  5. 在 virt-manager 中设置客户机的配置时,将 PCI 设备分配给客户机;
  6. 在客户机上为对应的设备安装驱动,完成使用。

Manjaro 的 KVM 硬件传统教程在PCI passthrough via OVMF (简体中文)一文中讲的非常详细,我是参照这篇文章进行解决的。

碰到问题的地方

NVIDIA 驱动的反虚拟机问题

首先我没想到的是,NVIDIA 的显卡驱动居然会检查是否在虚拟机环境,如果它认为自己在虚拟机环境,就不会工作。。其他人表现为:

  • Windows 下安装驱动报 43 错误
  • Linux 安装驱动后,运行 nvidia-smi 无法找到显卡

实验中实际表现为:

~ >>> nvidia-smi
Unable to determine the device handle for GPU 0000:07:00.0: Unknown Error

需要编辑 libvirt 虚拟机的 xml 文件,添加下面参数 到 <features></features>位置,value 为任意12位即可。

<hyperv>
    
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值