这台PVE用了好几年,跑了三台虚拟机,非常稳定。当中只有一台虚拟机直通了AMD R7240的亮机显卡,CPU的核显一直空着。这次突发奇想,想搞一台看视频的虚拟机(AMD R7240只有HDMI,4K最高30Hz),正好可以用得上核显的DP(4K最高60Hz),于是有了下面的经历,记录一下,下次备用。
直通成功主要参考末尾的两篇文章。
主要硬件:
主板:ASUS B460M-PLUS重炮手
CPU:INTEL I5-10400,核显UHD630
独显:AMD R7240
WIN11直通独显,网上很多教程,这个很容易。
WIN10直通核显,按照第1篇文章,直通成功。
后面看到第2篇文章,精减了很多参数,照着做了一遍,完全OK。
成功后配置如下,和第2篇文章几乎完全一样:
1. /etc/default/grub增加intel_iommu=on pcie_acs_override=downstream
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on pcie_acs_override=downstream"
pcie_acs_override=downstream 在PVE8.X中需要编译内核才会起作用,如果不准备编译内核,则不需要添加。
2. /etc/modprobe.d/pve-blacklist.conf增加3条
blacklist i915
blacklist snd_hda_intel
options vfio_iommu_type1 allow_unsafe_interrupts=1
没有屏蔽AMD驱动也能用。
3. /etc/modules为空(按照第2篇文章删除)
4. /etc/modprobe.d/vfio.conf为空(按照第2篇文章删除)
5. WIN11的虚拟机,只在PVE界面中添加PCI设备,把显卡加进去
6. WIN10虚拟机,添加了两个参数args和hostpci0,添加hostpci0后会在PVE界面中显示
args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2 -set device.hostpci0.x-igd-opregion=on
hostpci0: 0000:00:02.0,legacy-igd=1
物理机主板启用CSM + 自动,虚拟机seabios + i440fx,如果要用ovmf + i1440fx,则必须添加rom(hostpci0: 0000:00:02.0,legacy-igd=1,romfile=intel.rom,rom文件网上可搜索下载)。
我用的蓝牙音箱,也没有添加声卡。
试着删除args参数这一行,核显可以输出 ,但是分辨率很低,直接进去看设备驱动(不需要远程),发现报43错误,没有试旧驱动,又把这行参数加上去了。
说一下遇到的让我痛苦万分的事,让大家开心一下。直通核显的过程中因为需要重启几次PVE,把其它虚拟机都关闭。根据前面两篇文章直通成功,很开心的打开其他虚拟机,此时问题开始出现。只要打开第4台(我是按顺序启动,第4台黑群),整个PVE不是死机黑屏就是几秒钟后卡死自动重启。以为和黑群有冲突,用了很多天时间在两台机器上修改各种参数,问题依旧。太多次非法关机造成WIN11出现启动问题,再修复,幸好系统没有崩溃。
准备接受失败,不搞了。此时突然一个念头出现,我一共是32G内存,以前3台分配了26G,第4台4G,加起来是30G,预留2G给PVE。会不会是PVE的内存不够用呢。我把WIN11的内存从16G减小到12G,这样4台一共26G,然后打开所有虚拟机,竟然,就好了。
忽视这种低级问题实在让人哭笑不得。
下面是系统资源使用情况,分配26G,实际使用达到了28.41,这还不是最高的。不知道这中间有没有1024和1000换算关系的原因,没有深究,实事就是把内存减小后问题解决了。
现在两台显示器正常显示,USB端口可以单独分配给不同虚拟机,接两套键鼠就是两台电脑。WIN11平常用用,WIN10电影专用,完美了。
感谢下面大神分享的经验: