0 前言
本文重点分析显卡直通的配置与使用方法。
1 配置
1.1 宿主机
(1)打开IOMMU
宿主机必须开启IOMMU,例如Intel平台的开启方式如下:
GRUB_CMDLINE_LINUX="intel_iommu=on"
# @file: /etc/default/grub
sudo update-grub
(2)禁用显卡驱动
宿主机必须禁用/卸载显卡驱动,使得显卡设备不被任何程序使用(vfio驱动除外)。
1.2 虚拟机
(1)分配PCI设备
显卡通常都属于PCI设备,可将其分配给虚拟机,其中virt-manager的配置如下:
图1.1 virt-manager显卡直通配置
上图“PCI 0000:01:00.0”设备对应的xml配置如下:
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
</hostdev>
<!-- @file: /etc/libvirt/qemu/ubuntu22.04.xml -->
注:PCI设备是以IOMMU组为单位进行直通的,同一组内有多个设备时,需要全部分配给虚拟机,否则会失败。
(2)安装显卡驱动
成功将显卡直通给虚拟机之后,对其使用方法类似于宿主机,需要安装显卡的驱动的。
2 使用
2.1 计算
可安装CUDA进行AI计算,和物理机类似。
2.2 图形
使用方法类似于物理机,难点在于获取其图形渲染结果,其中一个方法就是虚拟机内通过X11进行截屏,然后将相关结果传给客户端。
参考资料
[1]使用Linux vfio将Nvidia GPU透传给QEMU虚拟机(同时透传NVIDIA GPU和NVIDIA Audio设备)
[2]kvm+qemu显卡直通(含IOMMU分组问题解决)
[3]如何使用Linux vfio将Nvidia GPU透传给QEMU虚拟机?(同时透传NVIDIA GPU和NVIDIA Audio设备)
[5]NVIDIA单显卡直通保姆级教程: 手把手配置和调试(无需vfio)
[6]【SR-IOV】QEMU-KVM设备热插拔机制简析
[4]kvm 透传显卡至win10虚拟机的教程(pci-stub)
[7]KVM创建windows虚拟机,并设置显卡直通
[8]虚拟机显卡直通(initrd、nvram、/etc/initramfs-tools/modules)
[9](SOLVED) GPU PASSTHROUGH ERROR UNKNOWN PCI HEADER TYPE '127'
[10]一次失败的显卡硬件穿透实验
[11]KVM+显卡直通(passthrough)配置方法及问题说明(pci-stub)
[12]NVRM: failed to copy vbios to system memory.
[13]NVRM: RmInitAdapter failed! , failed to copy vbios to system memory
[14]Linux下显卡掉卡,报错提示: rm_init_adapter failed, device minor number 7 Failed to copy vbios to system memory
[15][SOLVED] Problem with NVIDIA Drivers not loading
[16]Video-nvidia-470xx fails on kernel 6.0
[17]GPU virtualization with QEMU/KVM
[18]NVIDIA Docs Hub > NVIDIA Networking > Networking Software > NVIDIA BlueField-3 SNAP for NVMe and Virtio-blk v4.2.1 > Advanced Features
[19]lateralblast/kvm-nvidia-passthrough
[20]PCI passthrough via OVMF(Archlinux)
[21]Ubuntu 22.04 GPU passthrough (QEMU)
[22]KVM/QEMU 虛擬機器設定 GPU Passthrough 記錄
[23]GPU passthrough with libvirt qemu kvm
[24][vfio-users] "Invalid PCI ROM header signature: expecting 0xaa55, got 0xffff" when attempting to dump PCI ROM
[25]How to dump video bios of Intel HD Graphic 630
[26]GPU Passthrough Windows Won't Work - Ubuntu VM works! (nvidia-smi) - stuck
[27]GVT-d iGPU Intel UHD 630 Boot Device Invalid PCI ROM header signature
[28]VM W/ GPU PASSTHROUGH NOT OUTPUTTING TO DISPLAY
[29]Ubuntu22.04.1 LTS系统上实现KVM虚拟机显卡直通(AMD/NVIDIA+板载显卡)
[30]KVM虚拟化win10显卡直通一例
[31]基于KVM的虚拟显卡透传技术
[32]KVM GPU直通vbios rom问题
[33]UEFI/BIOS——CSM 相关概念整理
[34]Vfio-pci driver bound to boot_vga - the monitor doesn’t go into sleep mode
[35]qubitrenegade/vfio-pci-override.sh
[36]Passing through boot_vga
[37][SOLVED] How to Read Out rMBP Mid-2014 Nvidia ROM?
[38]Nvidia Image/ROM Verification Linux
[39]Extracting the GeForce video BIOS ROM file
[41]PVE – PCI 设备的直通
[43]QEMU/Guest graphics acceleration