23 / 06 / 27
AMD Ryzen 7 5700G集成AMD Radeon RX Vega 8,基于Vega架构(第5代GCN),具有8个CU,共512个流处理器。如果能让这颗性能基本等同于750ti的核显直通到Windows 11中,也就省去了再买一张显卡的钱,以及多出来的电费。
本文大致参照 PVE7 AMD 5700G 核显直通 (iGPU Passthrough) 搭建。
CPU: AMD Ryzen 7 5700G
Motherboard: MSI MAG B550M MORTAR WIFI
BIOS Version: 7C94v1C(E7C94AMS.1C0)
PVE Version: 7.4-13
PVE Manager Version: pve-manager/7.4-13/46c37d9c
Linux Kernel Version: Linux 5.15.107-2-pve #1 SMP PVE 5.15.107-2 (2023-05-10T09:10Z)
重置BIOS为默认设置
Settings\Save & Exit\Restore Defaults
关闭S/3Modern Standby Support(可选)
Settings\Advanced\ACPI Settings\S/3Modern Standby Support [Disabled]
设置Initiate Graphic Adaptor为外置显卡
Settings\Advanced\Initiate Graphic Configuration\Initiate Graphic Adaptor [PEG]
设置Integrated Graphics为Force Mode
Settings\Advanced\Initiate Graphic Configuration\Integrated Graphics [Force]
设置UMA Frame Buffer Size(显存大小)为2G/4G
Settings\Advanced\Initiate Graphic Configuration\UMA Frame Buffer Size [4G]
打开主板IOMMU
Overclocking\Advanced CPU Configuration\AMD CBS\IOMMU [Enabled]
打开CPU虚拟化
Overclocking\Advanced CPU Configuration\SVM Mode [Enabled]
保存并退出
打开MSI B550M MORTAR WIFI支持页面 ,下载对应BIOS版本的文件并解压得到BIOS源文件
下载UEFI BIOS Updater ,解压后将第一步的BIOS文件放至UBU目录中,运行UBU.bat
进入主菜单后输入2并回车
输入S并回车
输入0并回车退出到主菜单,然后再退出工具
在 UBU_v1.79.17\Extracted\VBIOS\017.010.000.030.000000
中找到 vbios_1638.dat
,这就是5700G集显的VBIOS,保留备用
如果CPU并非5700G,则可在 UBU_v1.79.17\Files\AMD\VBIOS\_Listvbios.txt
中按照架构查找对应VBIOS的文件名
Rufus制作启动U盘,引导项选择U盘启动,按照提示下一步即可,本文略。
用SSH连接至PVE主机
修改GRUB
root@pve:~# nano /etc/default/grub
将 GRUB_CMDLINE_LINUX_DEFAULT="quiet"
改为 GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunltifunction"
,保存并退出
更新GRUB
root@pve:~# update-grub
添加内核模块
root@pve:~# nano /etc/modules
更改文件为:
# /etc/modules: kernel modules to load at boot time. # # This file contains the names of kernel modules that should be loaded # at boot time, one per line. Lines beginning with "#" are ignored. vfio vfio_pci vfio_virqfd vfio_iommu_type1
保存并退出
禁用设备驱动
root@pve:~# nano /etc/modprobe.d/pve-blacklist.conf
在文件中写入:
blacklist amdgpu blacklist snd_hda_intel
保存并退出
更新修改的设置
root@pve:~# update-initramfs -u -k all
重启机器
查看IOMMU分组情况
root@pve:~# nano ~/iommu_group.sh
在文件中写入:
#!/bin/bash shopt -s nullglob for g in $(find /sys/kernel/iommu_groups/* -maxdepth 0 -type d | sort -V); do echo "IOMMU Group ${g##*/}:" for d in $g/devices/*; do echo -e "\t$(lspci -D -nns ${d##*/})" done; done;
保存并退出
将文件增加执行权限并运行,查看IOMMU分组是否基本为一设备一分组
root@pve:~# chmod +x ~/iommu_group.sh && ./iommu_group.sh
列出本机所有PCI设备
root@pve:~# lspci -D -nnk
找到输出带有 VGA compatible controller
的一行:
0000:30:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Cezanne [1002:1638] (rev c8) Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Device [1002:1636] Kernel modules: amdgpu
将集显的PCI ID 0000:30:00.0
与集显的设备ID [1002:1638]
记下备用,ID可能会因为设备不同而不同
绑定PCI设备至vfio
root@pve:~# nano //etc/modprobe.d/pt.conf
在文件中写入:
options vfio-pci ids=xxxx:xxxx #"xxxx:xxxx"为你的集显设备ID options vfio-pci disable_idle_d3=1
保存并退出
再次更新内核
root@pve:~# update-initramfs -u -k all
重启机器
因为PVE安装Windows虚拟机的教程很多,本篇只展示针对集显直通而作的一些必需的更改。首先进入PVE网页控制台,新建一台虚拟机,然后参照下图配置。
机型必须是q35,BIOS必须是SeaBIOS,SCSI控制器选择 VirtIO SCSI Single来获得更好的性能,TPM储存必须添加。
同理,磁盘总线设置为VirtIO Block来获得更好的性能。 CPU类别必须选择host。 初次安装时将网络断开避免自动安装更新/驱动,模型选择VirtIO来获得更好的性能。 因为Windows自身不包含对VirtIO的支持,故需要将VirtIO驱动 以ISO格式挂载到一块CD盘中。点击虚拟机进入详细页面,选择硬件栏,添加一块CD驱动器。 启动虚拟机,安装Windows。在选择驱动器安装时发现驱动器列表为空,点击加载驱动选项,选择VirtIO驱动器,找到目录CD Drive:\amd64\w11
,选择w11文件夹并确定。等待驱动加载完毕后挂载的硬盘就会出现在列表中。继续安装即可。
进入设置,暂停更新
打开高级系统设置,在硬件栏中点击设备安装设置,取消自动下载
打开挂载的CD驱动器,运行 virtio-win-gt-x64.msi
,默认安装即可
(可选)打开远程桌面
关机
将提取到的VBIOS上传至PVE
scp .\vbios_1638.dat root@192.168.3.2:/usr/share/kvm
给虚拟机增加一个PCI设备
选择之前找到的集显PCI ID 0000:30:00.0
,并将主GPU以及PCI-Express勾选,然后添加
更改虚拟机配置文件
root@pve:~# nano /etc/pve/qemu-server/104.conf #104为你的虚拟机ID
将cpu与hostpci0项改为:
cpu: host,hidden=1 hostpci0: 0000:30:00.0,pcie=1,x-vga=1,romfile=vbios_1638.dat
保存并退出
将虚拟机硬件的显示改为无
将网卡断连取消,开机,使用RDP连接Windows 11虚拟机,安装AMD显卡驱动
大功告成!
在Proxmox VE 7.x,AMD Vega集显直通Windows环境中,会出现正常关机后开机无法自动直通的问题是,即再开机后Windows识别不到集显,画面无输出。要解决这个问题有两种方法:
手动在设备管理器中弹出显卡后关机,但是不太优雅。
安装Devcon,写一个bat自动弹出集显并关机
从Github上获取Devcon Installer
以管理员身份运行Devcon Installer,在有代理的情况下选择 Update Sources
更新源
将 Add DevCon to environment PATH
打勾,选择 Windows 11 version 22H2
,选择 x64
架构,然后安装
建立一个bat文件,输入内容
@echo off chcp 65001 echo 正在弹出显卡... set devmgr_show_nonpresent_devices=1 start devmgmt.msc echo 请稍后... ping 127.0.0.1 -n 6 > nul echo 正在卸载显卡... devcon.exe remove "PCI\VEN_1002&DEV_1638" #输入你的集显设备ID echo 即将在五秒后关机... ping 127.0.0.1 -n 6 > nul shutdown /s /t 0
保存后以管理员身份运行bat即可自动关机啦~