做了这么久pve的核显直通了,看到很多文章里面有一堆无关冗余参数,是有必要对直通过程中的一堆无用或者垃圾参数做一下全面优化或者丢弃说明了。
前言
这里全部采用blacklist方式屏蔽驱动,而不使用强制为vfio设备方法。
1.首先关于以下几个参数的解释。
①options vfio_iommu_type1 allow_unsafe_interrupts=1 允许不安全的设备中断,强烈建议核显独显直通都要加。
②initcall_blacklist=sysfb_init 屏蔽掉pve7.2以上的一个bug,方便启动时候就屏蔽干净核显啊网卡啊等设备的驱动。只建议amd核显直通加,intel核显直通不需要。
③pcie_acs_override=downstream,multifunction 便于iommu每个设备单独分组,只有pve7支持,pve8内核都不支持。只建议pve7加,pve8加了没用(需要自己改内核代码启动用自己编译的内核加了才有用)
④blacklist xxx 屏蔽某个驱动
2.关于为什么不用使用强制vfio设备
主要是太麻烦,需要一个个去lspci查编号。还需要知道他是干嘛的,然后把它设置为vfio,配置如下无聊的类型参数
options vfio-pci ids=1234:5678,4321:8765
还需要在文件’/etc/modules‘中,加入下面4行代码,确保内核加载相应模块
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
才能强制设备为vfio设备
这些在unraid中图形化勾选就能实现的事情在pve上太麻烦了。unraid这方便超简单,pve太无语。
一、intel cpu平台核显直通(11-14代)
1. /etc/default/grub
里面只需要以下这一个参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
intel核显直通就没必要用initcall_blacklist=sysfb_init 把核显屏蔽死。
2. /etc/modprobe.d/pve-blacklist.conf
里面只需要三个参数
blacklist i915
blacklist snd_hda_intel
options vfio_iommu_type1 allow_unsafe_interrupts=1
3. 虚拟机中只需要以下三个参数
args: -set device.hostpci0.x-igd-gms=0x2
hostpci0: 0000:00:02.0,legacy-igd=1,romfile=11-14.rom
hostpci1: 0000:00:1f.3
11-14.rom请到qq群下载。下载请见这个教程
intel 11-14代核显直通源码编译使用说明及88合一rom生成,以及视频讲解源码
虚拟机采用ovmf+i440fx机型,11代以上q35机型目前全网没有支持成功的。4-10代你可以采用i440fx机型并采用11-14.rom这个文件。4-10代也可以采用q35机型,rom直接pve系统里面用代码提取(自行百度)。
4. 完工
二、intel cpu平台独显直通(4-14代)(ani独显)
1. /etc/default/grub
里面只需要以下这一个参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
2. /etc/modprobe.d/pve-blacklist.conf
里面只需要一个参数
options vfio_iommu_type1 allow_unsafe_interrupts=1
3. 虚拟机里面图形化加入pcie显卡和hdmi声卡就是,虚拟机采用ovmf+i440fx机型或者ovmf+q35机型都行
4. 完工
三、amd cpu平台核显直通
1. /etc/default/grub
里面只需要以下这两个参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on initcall_blacklist=sysfb_init"
amd核显基本都有reset bug所以需要用initcall_blacklist=sysfb_init 把核显屏蔽死好重复使用
2. /etc/modprobe.d/pve-blacklist.conf
里面只需要三个参数
blacklist amdgpu
blacklist snd_hda_intel
options vfio_iommu_type1 allow_unsafe_interrupts=1
3. 虚拟机中只需要以下两个参数
hostpci0: 0000:06:00.0,pcie=1,romfile=5500u.rom,x-vga=1
hostpci1: 0000:06:00.1
5500u.rom是多个efi和bin合一rom,你类似替换成你的rom就是
Amd的核显(独显)编号和hdmi声卡编号一般挨着的,不一定是我这里06.00.0和06.00.1
虚拟机采用ovmf+i440fx或者q35都行,如果i440fx机型不需要pcie=1参数
4. 完工
四、amd cpu平台独显直通(ani独显)
1. /etc/default/grub
里面只需要以下这两个参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
2. /etc/modprobe.d/pve-blacklist.conf
里面只需要一个参数
options vfio_iommu_type1 allow_unsafe_interrupts=1
3. 虚拟机里面图形化加入pcie显卡和hdmi声卡就是,虚拟机采用ovmf+i440fx或者q35都行
4. 完工
最后不要被其他教程或者文章一长串参数吓跑,他里面有一大堆垃圾参数,很多参数啥作用的。
关于pve unraid核显直通多个efi多个rom合并转化成1个rom教程,阅读下面这个教程就是
pve unraid核显直通多个efi多个rom合并转化成1个rom教程
最后:
intel 11代以上cpu目前只能ovmf+i440fx机型能核显直通,q35全网没有成功的。
intel 4-10代这个随意,i440fx也行,q35估计也行。ovmf seabios我估计都可以,q35我估计11-14.rom不行(这个是适合ovmf+i440fx机型)
作者:李晓流 https://www.bilibili.com/read/cv26863115/?jump_opus=1 出处:bilibili