正确配置 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 0x1b@0x100
[ 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。
1
geekvcn 2019-09-22 09:21:13 +08:00
内核启动参数,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 里面的 |
2
geekvcn 2019-09-22 09:24:28 +08:00
但我的机器并不支持 Legacy 引导。如何解决?别折腾了,直接用 virtio-gpu (有性能损耗仅限基础使用),或者买张独显
|
3
py2ex 2019-09-22 10:58:44 +08:00
买张独显
|
4
danchleo 2019-09-22 13:05:26 +08:00 via Android
集显用 intel-gt 吧,独显把 vbios 导出来,其余动作和一楼说的一样的,最好系统是 uefi 引导的
|
5
okudayukiko0 2019-09-22 13:28:57 +08:00 via iPhone 1
集顯的 Video BIOS 是儲存在主板 BIOS 裡的,用 UEFITool 打開主板 BIOS,把 GOP(Graphics Output Protocol 縮寫)模塊提取出來,這就是 UEFI Video Driver,QEMU 可以用命令列 Load OpROM。
|