QEMU GPU直通失效求助:Ubuntu 17.10下Windows虚拟机无法启动
排查Ubuntu 17.10下QEMU GPU直通虚拟机无法启动的问题
兄弟,我之前也踩过QEMU GPU直通的坑,看你描述的情况——昨天还能跑Lubuntu虚拟机,今天连ISO启动都不行,副屏连BIOS界面都没输出,大概率是直通配置或者硬件状态出了问题,给你列几个排查方向:
1. 先确认IOMMU和GPU直通的基础配置没崩
- 先检查IOMMU是否还正常启用:在终端跑
dmesg | grep -i iommu,看输出里有没有IOMMU enabled的字样,如果没有,说明内核参数里的intel_iommu=on(或者amd_iommu=on)可能没生效,得去/etc/default/grub里确认,然后更新grub重启。 - 再看GPU的IOMMU组是不是独立的:跑
find /sys/kernel/iommu_groups/ -type l,找到04:00.0对应的组,确保组里只有这个GPU(如果是带音频输出的显卡,同组的音频控制器04:00.1也没问题),要是混了其他设备,直通肯定会出问题。
2. 检查VFIO驱动是否正确绑定到GPU上
- 用
lspci -nnk -s 04:00.0查看当前驱动,正常应该显示vfio-pci,如果还是原来的显卡驱动(比如nvidia、amdgpu),说明驱动被系统重新绑定回去了,得手动重新绑定:# 先解绑原有驱动,替换成你的显卡实际驱动名 echo 0000:04:00.0 > /sys/bus/pci/drivers/[原有驱动名]/unbind # 绑定到vfio-pci,替换成你的GPU的vendor和device ID(lspci输出里的[xxxx:yyyy]) echo xxxx:yyyy > /sys/bus/pci/drivers/vfio-pci/new_id - 要是不知道原有驱动名,看
lspci输出里的Kernel driver in use:那一行就行。
3. 检查虚拟机启动脚本的参数有没有问题
- 确认GPU直通的参数:脚本里应该有类似
-device vfio-pci,host=04:00.0,multifunction=on的行,要是显卡带音频,还要加上-device vfio-pci,host=04:00.1,参数里的multifunction=on不能少。 - 试试简化启动参数:先去掉virtio相关的磁盘配置(毕竟之前是装Win10到virtio驱动时中断的,可能参数冲突),只用普通IDE模式加载Win10 ISO,甚至暂时换成Legacy BIOS启动(如果之前用的是UEFI),看能不能正常显示BIOS界面。
- 确认UEFI固件路径:如果用UEFI启动,脚本里的
-bios /usr/share/OVMF/OVMF_CODE.fd路径要正确,要是OVMF包没装,得先装sudo apt install ovmf。
4. 排查硬件状态问题
- 先重启主机:GPU直通后有时候会残留硬件状态,重启后重新绑定VFIO驱动,很多时候能解决奇怪的启动问题。
- 检查GPU和线缆:确认副屏的线缆插紧了,独立显卡的供电线有没有插好,甚至可以把GPU拔下来重新插一遍,排除接触不良的可能。
- 临时切换到集成显卡:把副屏插回主机的集成显卡,确认主机本身能正常输出,排除显示器或者线缆的问题。
5. 看日志找具体报错
- 启动虚拟机时加上日志参数,比如
-d guest_errors,pcidev,这样能输出详细的启动日志,看看有没有VFIO初始化失败、PCI设备分配错误之类的信息,顺着报错找问题更精准。
内容的提问来源于stack exchange,提问作者a rad white lad
相关产品推荐
相关产品推荐

