Ivy Bridge 平台 PVE 直通 RX550 显卡

Ivy Bridge 平台 PVE 直通 RX550 显卡

Hanako

最近有些不想把笔记本带来带去的,试了一下拿华硕 QM1 棒子日常使用。

很好,确实促进血液循环。

都是 Z3735F,为什么板子至少能带动百合语,棒子跑个 Lubuntu 都吃力

刚好网络出口从以前的双线(联通+校园网)切换到校园网单线(谁叫它便宜呢),我把主路由又换回了锐捷 X32 Pro 硬路由。加上从 DN42 退坑,我对网络的发烧程度显著降低,对插在唯一 PCIe X16 接口上的四口网卡没有了需求。

遂决定撤下该网卡,换上吃灰一年多的 RX550 显卡,推掉以前的 ESXi 6.7,配置了一台 All in One。

设备配置

先贴上我这台 HomeServer 的配置:

主板 联想 ThinkCentre M92p
CPU 8 x Intel(R) Xeon(R) CPU E3-1230 V2 @ 3.30GHz
RAM 24GB DDR3
显卡 Radeon RX550 Lexa Pro

有一块闲置的 PCIe X1 NVMe 转接板,就把一块闲置的 NVMe 硬盘接了上去。

机器配置

虚拟化设置

在 BIOS 设置中启用 VT-x。由于需要直通 PCIe 设备,还需启用 VT-d。

启用 CSM

该机器使用 UEFI 引导无法使用显卡直通,遂在 BIOS 中启用 CSM。

安装 PVE

PVE 默认强制使用 GPT 分区表、UEFI 引导方式,导致无法通过 Legacy 方式启动。

使用 PVE ISO 的 Rescue 模式启动到安装好的 PVE 环境,使用 fdisk 命令将分区表转换为 MBR、删除头部的 EFI 分区(分区号 1、2),之后使用 grub-install 安装 Legacy 版 Grub,即可正常通过 Legacy 方式启动。

导出显卡 ROM

首先启动到使用 Legacy 方式启动的 WinPE,然后用 amdvbflash 导出显卡 ROM,大小为 512K:

amdvbflash -s 0 vbios.rom

vbios.rom 保存到 PVE 的 /usr/share/kvm 目录下。

启用 vfio

IOMMU

编辑 Grub 配置文件 /etc/default/grub ,添加以下参数:

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init"

我的 PVE 版本是 7.4,内核版本为 5.15.102-1。如果使用的是 5.15 之前的 Linux 内核,可能需要将 initcall_blacklist=sysfb_init 换成 video=vesafb:off video=efifb:off

执行 update-grub 命令以使更改生效。

内核模块

/etc/modules 中添加以下模块:

1
2
3
4
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

显卡直通

到这里为止,除了显卡的任何 PCIe 设备都可以直通了。如果需要直通显卡,需要屏蔽宿主机的显卡驱动,并将显卡的使用权转交给 vfio。

先查看一下需要直通的显卡:

1
2
3
4
root@pve:~# lspci -knn | grep -i -A 2 vga
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X] [1002:699f] (rev c7)
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X] [1002:0b04]
Kernel driver in use: vfio-pci

其中 01:00.0 代表组名, 1002:699f 代表厂商 ID 和设备 ID。

然后查看组内的所有设备:

1
2
3
root@pve:~# lspci -n -s 01:00
01:00.0 0300: 1002:699f (rev c7)
01:00.1 0403: 1002:aae0

配置显卡直通:

1
echo "options vfio-pci ids=1002:699f,1002:aae0 disable_vga=1" > /etc/modprobe.d/vfio.conf

重启宿主机,如果屏幕输出在显示登录提示之前卡住不动,PVE WebUI 可以访问,说明直通成功。

虚拟机配置

虚拟机配置要点:

  1. BIOS 必须使用 OVMF(UEFI)
  2. 处理器配置为 cpu: host, hidden=1, flags=+pcid
  3. 机型为 q35
  4. 添加 PCI 设备,配置如下:

  1. 手动修改配置文件,在 hostpci0 后指定 ROM 文件,即在末尾追加 ,romfile=vbios.rom
  2. 禁用 KVM 自带虚拟显卡,即将显示设置为 none。

至此显卡直通已经完成。

  • 标题: Ivy Bridge 平台 PVE 直通 RX550 显卡
  • 作者: Hanako
  • 创建于 : 2023-06-21 08:00:00
  • 更新于 : 2023-10-22 22:49:01
  • 链接: https://hanako.me/gpu_passthrough.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。