机器:MS-A1

CPU:AMD 8700G

编辑grub、添加设备黑名单

vim /etc/default/grub
#添加以下:
GRUB_CMDLINE_LINUX_DEFAULT="quiet initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction"
# 更新grub
update-grub

initcall_blacklist=sysfb_init 启动时运行黑名单内添加项,在 Intel的机型中,此项非必要添加,但是在 amd机型中建议添加,否则会影响核显直通后的性能,比如4K60Hz降低到30Hz。

vim /etc/modprobe.d/pve-blacklist.conf

blacklist nvidiafb
# 添加
blacklist amdgpu
blacklist i915
blacklist snd_hda_intel
options vfio_iommu_type1 allow_unsafe_interrupts=1

屏蔽 amd显卡驱动,options vfio_iommu_type1 allow_unsafe_interrupts=1 允许不安全的设备中断,在部分机型上不加此项会导致虚拟 Win启动加载转圈时直接宿主 PVE卡死

# 更新initramfs:
update-initramfs -u -k all
# 重启
reboot

在设备黑名单中添加 amdgpu,并grub里开启引导自动加载后,PVE启动时界面会卡死。是正常的!等待一会只要 PVE可以通过网页访问到 WebUI管理页面就是正常没问题的。因为 PVE开机时会按照设备黑名单设置的,释放对核显的控制权。这样才能在核显直通给虚拟Win的时候避免冲突而导致的无法加载驱动,错误代码43

直通设置

更新 pcie列表信息

update-pciids

查看核显的 pcid和声卡的供应商id和设备id

root@pve:~# lspci -D -nn | grep VGA
0000:66:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Phoenix1 [1002:15bf] (rev 06)


root@pve:~# lspci -D -nn | grep Audio
0000:66:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt Radeon High Definition Audio Controller [1002:1640]
0000:66:00.5 Multimedia controller [0480]: Advanced Micro Devices, Inc. [AMD] ACP/ACP3X/ACP6x Audio Coprocessor [1022:15e2] (rev 63)
0000:66:00.6 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Family 17h/19h/1ah HD Audio Controller [1022:15e3]

提取gop、vbios

提取BIOS

因为我的机器在官网没有 BIOS文件的下载,所以需要手动提取。需要准备一个U盘,格式化为 FAT32,把下面提供的 EFI放进去之后插入机器使用U盘启动,执行

ftp_bk.nsh

然后会生成一个 backup.bin的文件在U盘中,这个就是后续需要用到的 BIOS

BIOS提取工具

提取AMDGopDriver.efi

下载:UBU工具

进入UBU目录,双击 ubu.bat,选择文件 backup.bin

image-gikz.png

选择 2

1740299042146.jpg

选择 X

等待执行完成就能在 UBU文件加目录看到 Extracted/GOP/3.8.8_NoSign/AMDGopDriver.efi文件。

提取AMDGopDriver.rom

下载:edk2-BaseTools-win32-master

AMDGopDriver.efi拷贝到 edk2-BaseTools-win32-master文件夹,

CMD命令行进入 edk2-BaseTools-win32-master文件夹,运行

EfiRom.exe -f 0x<VendorID: 1022> -i 0x<你的核显设备ID:15e2> -e AMDGopDriver.efi

成功后会出现 AMDGopDriver.rom文件。

提取vbios

下载:vbios提取工具

SSH连接Pve宿主机,上传vbios提取工具执行

./vbios

成功会输出文件:vbios_1002_15bf.bin

把提取到的**AMDGopDriver.rom vbios_1002_15bf.bin放到 /usr/share/kvm**

直通核显

1740299068335.jpg

直通声卡

1740299087674.jpg

配置虚拟机

nano /etc/pve/qemu-server/<VM_ID>.conf

找到刚刚添加的 PCI设备,添加 romfile

hostpci0: 0000:66:00.0,pcie=1,x-vga=1,romfile=vbios_1002_15bf.bin
hostpci1: 0000:66:00.1,romfile=AMDGopDriver.rom
文章作者: oohmygosh
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Blog
Pve
喜欢就支持一下吧