我跟着这使用 pci 直通设置 vm 的指南。
我的设置:
MSI Z170 游戏 M7
i7-6700K
GTX1080[主机]
RX580[嘉宾]
主机操作系统 Manjaro KDE 5.4
客户操作系统 Win10
我可以确认 GPU 已正确隔离并使用 vfio。当我通过 virt-manager 启动机器时,它似乎启动了(分配 RAM 和 CPU 使用率),但当我将显示器切换到 HDMI 源时,我收到无信号消息。
类似使用此脚本
#!/bin/bash cp /usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd /tmp/my_vars.fd qemu-system-x86_64 \ -enable-kvm \ -m 2048 \ -cpu host,kvm=off \ -vga none \ -device vfio-pci,host=02:00.0,multifunction=on \ -device vfio-pci,host=02:00.1 \ -drive if=pflash,format=raw,readonly,file=/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd \ -drive if=pflash,format=raw,file=/tmp/my_vars.fd
打开主机上的 qemu 控制台。非常感谢您的帮助!
答案1
我最近遇到了同样的问题,但是设置完全不同:
- 采用 X470 芯片组的 AMD Ryzen 7 2700X
- 主机:Kubuntu 19.04,搭载 Radeon HD 7770
- 访客:Windows 10,配备 GeForce GTX 970
VM 启动并且 GTX 970 上的风扇开始旋转,但是没有视频输出并且 Windows 无法检测到 GTX 970。
大多数谷歌搜索都指向各种 Reddit 帖子,这些帖子表明,当 GPU 安装在主 PCI-E 插槽中时,即使 VFIO 在视频驱动程序之前初始化卡,Linux 内核也会以某种方式污染其 BIOS,并且虚拟机管理程序将无法稍后启动它。
我找到的解决方案:
- 暂时将客户 GPU 安装到第二个 PCI-E 插槽,转储干净版本的 vBIOS,然后按照说明将其传递给 libvirt这里
- 或者,对于 Nvidia GTX 10 系列显卡,有人想出了一个脚本,该脚本采用完整的 ROM(您可以在 TechPowerUp 上下载或在 Windows 上使用 nvflash 转储)并将其转换为可以传递给 libvirt 的 vBIOS。它描述为这里。由于您有一个 Radeon GPU,因此这对您不起作用,但由于这个问题是在谷歌搜索问题时出现的,所以其他人可能会发现它很有用。
- 就我而言,我只是交换了两张卡。现在我的主要 PCI-E 插槽被功能较弱的 Radeon HD 7770 占用,而 GTX 970 位于第二个插槽。根据我的主板手册,如果两个插槽都使用,我的主 PCI-E 插槽无论如何都会从 x16 切换到 x8,因此保留直通卡对我来说没有真正的好处。问题已解决,GTX 970 现在工作正常。
注意:我之前在 B350 主板上用过相同的主机和客户系统,主板上装有 Ryzen 3 2200G。该 CPU 有自己的集成显卡,我将其用作主机。尽管 GTX 970 安装在主插槽中,但问题并没有发生。由于您的 CPU 也有内置显卡,您可以尝试启用 iGPU,在 UEFI 中将其设置为主显卡,然后将显示器连接到主板本身。这可能会导致您的 iGPU 而不是客户 GPU 受到攻击。
请记住,在所有这些 Reddit 帖子中,客户 GPU 均来自 Nvidia。我的设置也是如此。您的问题可能具有完全不同的根源。