我安装了 Arch(Antergos)来为 KVM Vms 启用 PCI 直通,但如果我启动 VM,它就会崩溃。我按照这个教程。
我的硬件:
- 主板:华擎 H97M Pro4
- 处理器:Intel® Core™ i5-4690 CPU @ 3.50GHz × 4
- 显卡 MSI GTX760 Twin Frozr
- 内存:16GB
- 操作系统:Antergos 64位
首先我
- 在 uefi 中启用 VT-d
- 在 /etc/default//grub 中将 intel_iommu="on" 添加到 GRUB_CMDLINE_LINUX_DEFAULT=""
- 更新 grub
我的 IOMMU 组:
00:00.0 Host bridge [0600]: Intel Corporation 4th Gen Core Processor DRAM Controller [8086:0c00] (rev 06)
00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06)
00:03.0 Audio device [0403]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller [8086:0c0c] (rev 06)
00:14.0 USB controller [0c03]: Intel Corporation 9 Series Chipset Family USB xHCI Controller [8086:8cb1]
00:16.0 Communication controller [0780]: Intel Corporation 9 Series Chipset Family ME Interface #1 [8086:8cba]
00:19.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I218-V [8086:15a1]
00:1a.0 USB controller [0c03]: Intel Corporation 9 Series Chipset Family USB EHCI Controller #2 [8086:8cad]
00:1b.0 Audio device [0403]: Intel Corporation 9 Series Chipset Family HD Audio Controller [8086:8ca0]
00:1c.0 PCI bridge [0604]: Intel Corporation 9 Series Chipset Family PCI Express Root Port 1 [8086:8c90] (rev d0)
00:1c.3 PCI bridge [0604]: Intel Corporation 82801 PCI Bridge [8086:244e] (rev d0)
00:1c.4 PCI bridge [0604]: Intel Corporation 9 Series Chipset Family PCI Express Root Port 5 [8086:8c98] (rev d0)
00:1d.0 USB controller [0c03]: Intel Corporation 9 Series Chipset Family USB EHCI Controller #1 [8086:8ca6]
00:1f.0 ISA bridge [0601]: Intel Corporation 9 Series Chipset Family H97 Controller [8086:8cc6]
00:1f.2 SATA controller [0106]: Intel Corporation 9 Series Chipset Family SATA Controller [AHCI Mode] [8086:8c82]
00:1f.3 SMBus [0c05]: Intel Corporation 9 Series Chipset Family SMBus Controller [8086:8ca2]
02:00.0 PCI bridge [0604]: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge [1b21:1080] (rev 03)
04:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK104 [GeForce GTX 760] [10de:1187] (rev a1)
04:00.1 Audio device [0403]: NVIDIA Corporation GK104 HDMI Audio Controller [10de:0e0a] (rev a1)
因此我的 GPU 包括:
- VGA 控制器:04:00.0(10de:1187)
- 音频控制器:04:00.1(10de:0e0a)
然后我创建了文件:/etc/modprobe.d/vfio.conf 并写道
options vfio-pci ids=10de:1187,10de:0e0a
然后我创建了 /etc/mkinitcpio.conf 并附加到 MODULES=""
vfio vfio_iommu_type1 vfio_pci vfio_virqfd
重新启动我的机器并检查 gpu 是否有 vfio 驱动程序
lspci -k
04:00.0 VGA compatible controller: NVIDIA Corporation GK104 [GeForce GTX 760] (rev a1)
Subsystem: Micro-Star International Co., Ltd. [MSI] Device 2847
Kernel driver in use: vfio-pci
Kernel modules: nouveau
04:00.1 Audio device: NVIDIA Corporation GK104 HDMI Audio Controller (rev a1)
Subsystem: Micro-Star International Co., Ltd. [MSI] Device 2847
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
安装了一些软件包:
pacman -S qemu libvirt virt-manager
yaourt -S ovmf-git
编辑 /etc/libvirt/qemu.conf
nvram = [
"/usr/share/ovmf/x64/ovmf_x64.bin:/usr/share/ovmf/x64/ovmf_vars_x64.bin"
]
已启动/启用 libvirt
systemctl enable --now libvirtd
systemctl enable virtlogd.socket
最后我创建了一个虚拟机:
- 固件:UEFI
- CPU:选中“复制主机 CPU 配置
- 插入 Windows 磁盘
现在它在虚拟控制台中启动,一切都很好!然后我添加了我的 GPU(PCI 设备)并再次启动它。现在它崩溃了,我不知道为什么!没有错误消息。
我希望你能帮助我,谢谢你的尝试
答案1
您没有链接您的 XML,但我假设您没有为您的视频卡加载 rom(假设您的视频卡支持 UEFI)。
- 验证你的显卡支持 UEFI
- 获取你的卡的视频 ROM
您可以使用https://www.techpowerup.com/vgabios/可以同时执行这两项操作。如果您的显卡未列出或 ROM 不可用,您可以直接在制造商论坛上提问。这就是我获得显卡 ROM 副本的方法,以解决您遇到的相同问题。
获得 rom 文件后,使用 virsh edit,尝试将以下内容添加到 xml 配置中
<hostdev>
...
<rom file='/etc/fake/boot.bin'/>
...
</hostdev>