当我们搭建好PVE下的软路由,NAS系统后还能怎样进一步利用(压榨)主机的性能呢,当然是套娃个Windows/黑苹果系统,将它作为多媒体播放中心,小生活美滋滋的。假如你的是itx主板,唯一的PCIe插槽让给万兆网卡了,就只能依靠CPU自带的核显了。但是PVE下直通核显需要一定技巧,本文就教你实现核显直通给虚拟机并且HDMI输出的详细步骤。
2022年2🈷️2日更新
各位看官新年快乐,经测试,此文章方法适用于Proxmox 5.0老版本,
新版本的方法先鸽了,待过完年有空再写写pve 7.0直通核显的方法,撒花。🎉
——————————————————————————————————————————————————————————————————————————————————————————————————————
请勿用做生产机器,仅供胆大的测试~不然ALL IN BOOM概不负责!
本文配置:
CPU:Intel Xeon E3-1235L V5(核显:P530)注意:没有核显的CPU就没搞头了。
主板:Fatal1ty Z170 Gaming-ITX/ac
内存:16GB(内存不够大会影响体验)
网卡:82599ES 10-Gigabit SFI/SFP+
一、先决条件:
到以下网址查找你的CPU是否支持虚拟化,有如框内的选项才能开启直通。
https://ark.intel.com/content/www/cn/zh/ark.html

二、开启PVE核显直通
编辑/etc/default/grub,开启iommu
vim /etc/default/grub
#将GRUB_CMDLINE_LINUX_DEFAULT="quiet"修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off,vesafb:off"
修改完成之后更新grub
update-grub
加载内核模块
vim /etc/modules
#添加以下模块
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
添加驱动到PVE黑名单
vim /etc/modprobe.d/blacklist.conf
#添加驱动
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915
更新内核
update-initramfs -u
查找核显和声卡id,我的就是
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics P530 [8086:191d] (rev 06)
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)
lspci -nn
00:00.0 Host bridge [0600]: Intel Corporation Skylake Host Bridge/DRAM Registers [8086:1918] (rev 07)
00:01.0 PCI bridge [0604]: Intel Corporation Skylake PCIe Controller (x16) [8086:1901] (rev 07)
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics P530 [8086:191d] (rev 06)
00:14.0 USB controller [0c03]: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)
00:14.2 Signal processing controller [1180]: Intel Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)
00:17.0 SATA controller [0106]: Intel Corporation Sunrise Point-H SATA controller [AHCI mode] [8086:a102] (rev 31)
00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [8086:a110] (rev f1)
00:1c.4 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #5 [8086:a114] (rev f1)
00:1c.6 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #7 [8086:a116] (rev f1)
00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [8086:a118] (rev f1)
00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise Point-H LPC Controller [8086:a145] (rev 31)
00:1f.2 Memory controller [0580]: Intel Corporation Sunrise Point-H PMC [8086:a121] (rev 31)
00:1f.3 Audio device [0403]: Intel Corporation Sunrise Point-H HD Audio [8086:a170] (rev 31)
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H SMBus [8086:a123] (rev 31)
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection (2) I219-LM [8086:15b7] (rev 31)
01:00.0 Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
03:00.0 USB controller [0c03]: ASMedia Technology Inc. ASM1142 USB 3.1 Host Controller [1b21:1242]
04:00.0 SATA controller [0106]: ASMedia Technology Inc. ASM1062 Serial ATA Controller [1b21:0612] (rev 01)
对应硬件ID
lspci -n -s 00:02
00:02.0 0300: 8086:191d (rev 06)
lspci -n -s 00:1f
00:1f.0 0601: 8086:a145 (rev 31)
00:1f.2 0580: 8086:a121 (rev 31)
00:1f.3 0403: 8086:a170 (rev 31)#声卡选择0403这组
00:1f.4 0c05: 8086:a123 (rev 31)
00:1f.6 0200: 8086:15b7 (rev 31)
填上以上ID,添加直通组。多个设备,ids后面每个设备之间用,
隔开
vim /etc/modprobe.d/vfio.conf
options vfio-pci ids=8086:191d,8086:a170
添加options防止VM死机,然后重启
echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
update-initramfs -u
reboot
重启后检查模块是否加载成功
lsmod | grep vfio
三、虚拟机设置显卡直通
首先创建一个虚拟机,上传Windows安装镜像,类别选择Microsoft Windows,版本选择10/2016/2019


BIOS保持默认即可,机器类型选择q35,显卡改为无

硬盘随意,CPU 类别选择host,选择启用NUMA

网络选择VirtIO

其余的默认即可
设置好虚拟机后先不要着急启动虚拟机,在虚拟机的硬件中添加PCI设备,添加要直通的显卡和声卡


核显要不勾选主GPU和PCI-Express

编辑虚拟机config配置文件
# 102换成具体的虚拟机ID
vim /etc/pve/qemu-server/102.conf
在第一行添加
# if your processor > broadewell then, (upt mode)
args: -device vfio-pci,host=00:02.0,addr=0x18,x-igd-opregion=on,x-igd-gms=1
vga: std
不同的值(未测试)
args: -device vfio-pci,host=00:02.0,addr=0x18,x-vga=on,x-igd-opregion=on
# if your processor >= sandy then, (legacy mode)
machine:pc-i440fx-2.2
args: -device vfio-pci,host=00:02.0,addr=0x02
vga: none
四、声卡、USB鼠标等其他设备直通


打开虚拟机,插上主板的HDMI或者DP接口,你应该就能查看到虚拟机的显卡输出画面了。

安装完成后,记得安装VirtIO 驱动
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
