技术解析

配置 KVM 显卡直通,无法读取 vBIOS ROM
0
2021-06-18 19:42:48
idczone

正确配置 vfio-pci 并移除 i915 模块后添加 -device vfio-pci,host=00:02.0 启动虚拟机,报错:

qemu-system-x86_64: vfio-pci: Cannot read device rom at 0000:00:02.0
Device option ROM contents are probably invalid (check dmesg).
Skip option ROM probe with rombar=0, or load from file with romfile=

dmesg 的错误信息:

[ 1271.531853] vfio-pci 0000:00:02.0: enabling device (0400 -> 0403)
[ 1271.639246] vfio_ecap_init: 0000:00:02.0 hiding ecap [email protected]
[ 1272.865197] vfio-pci 0000:00:02.0: Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff

添加 rombar=0 参数后虚拟机可启动,但显卡直通不工作。按照一些英文资料中的说法,在显卡在主机上工作时,dump 显卡的 vBIOS ROM:

# cd /sys/bus/pci/devices/0000\:00\:02.0
# echo 1 > rom
# cat rom > /tmp/rom
cat: rom: Input/output error

此时 dmesg 的输出与上述类似。搜索了这些错误信息后发现,又多例使用 UEFI 引导无法读取,但使用 Legacy 引导成功读取的例子,但我的机器并不支持 Legacy 引导。如何解决?

显卡型号是 HD520。


内核启动参数,GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"
内核模块 /etc/modules 加上
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
显卡驱动全部加到黑名单(提前开好 ssh 等远程连接):
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
update-initramfs -u
剩下的就是常规操作,确定设备 ID,设置直通,UEFI 下核显不支持,没戏,核显 vbios 写在主板 BIOS 里面的

但我的机器并不支持 Legacy 引导。如何解决?别折腾了,直接用 virtio-gpu (有性能损耗仅限基础使用),或者买张独显

买张独显

集显用 intel-gt 吧,独显把 vbios 导出来,其余动作和一楼说的一样的,最好系统是 uefi 引导的

集顯的 Video BIOS 是儲存在主板 BIOS 裡的,用 UEFITool 打開主板 BIOS,把 GOP(Graphics Output Protocol 縮寫)模塊提取出來,這就是 UEFI Video Driver,QEMU 可以用命令列 Load OpROM。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服