跳转到内容
Glucy2 的小天地
返回

在 Proxmox VE 上直通笔记本 NVIDIA 显卡到 Windows 虚拟机

发布:

在 Proxmox VE 上直通笔记本 NVIDIA 显卡到 Windows 虚拟机

Table of contents

前言

直接按照常规平台的直通方法直通 NVIDIA 是没法工作的(至少在 Windows 上),NVIDIA(驱动)会检测到这是虚拟机而拒绝启动,让你去买专业的虚拟化卡(

其实是挺久之前折腾的东西了,也不复杂,简单记录一下过程,用的笔记本是 联想 拯救者 R9000P 2022,当时的 Proxmox VE 版本是 9.1,内核 6.17.9-1-pve

过程

前期准备

首先需要把笔记本切换到混合显示模式(除非你想在笔记本屏幕上直接显示虚拟机的画面而不是 Proxmox VE 的),并开启笔记本的硬件虚拟化

装好 Proxmox VE 之后,在 /etc/modprobe.d/pve-blacklist.conf 中添加 blacklist nouveau 屏蔽 NVIDIA 的内核驱动

识别显卡设备

  1. lspci 找到 NVIDIA 显卡的 PCI-E 设备:
01:00.0 VGA compatible controller: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GA106 High Definition Audio Controller (rev a1)
  1. 然后看一下设备的 PCI-E ID(此处的 01:00 对应上面的 01:00.0,在不同设备上会不一样,不要照抄,下面的 PCI ID 也一样):
$ lspci -s 01:00 -nnk
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] [10de:2560] (rev a1)
        Subsystem: Lenovo Device [17aa:3b07]
        Kernel modules: nvidiafb, nouveau
01:00.1 Audio device [0403]: NVIDIA Corporation GA106 High Definition Audio Controller [10de:228e] (rev a1)
        Kernel modules: snd_hda_intel
  1. 记下这几个 PCI ID:
  1. /etc/modprobe.d/vfio.conf 里面写:
options vfio-pci ids=10de:2560,10de:228e
  1. /etc/modules-load.d/vfio.conf 里面写:
vfio
vfio_iommu_type1
vfio_pci
  1. 运行 update-initramfs -u

  2. 没问题的话重启

  3. lspci -s 01:00 -nnk 确认一下输出有 Kernel driver in use: vfio-pci

虚拟机配置

创建虚拟机时确认 Machineq35BIOSOVMF (UEFI),这应该是现在 PVE 创建 Windows 虚拟机时的默认选项

添加 PCI 设备

给虚拟机添加显卡 PCI-E 设备:

Add PCI device

添加虚拟电池

给虚拟机加一个假电池:

写入假电池文件:

echo \
U1NEVKEAAAAB9EJPQ0hTAEJYUENTU0RUAQAAAElOVEwYEBkgoA8AFVwuX1NCX1BDSTAGABBM\
Bi5fU0JfUENJMFuCTwVCQVQwCF9ISUQMQdAMCghfVUlEABQJX1NUQQCkCh8UK19CSUYApBIj\
DQELcBcLcBcBC9A5C1gCCywBCjwKPA0ADQANTElPTgANABQSX0JTVACkEgoEAAALcBcL0Dk=\
| base64 -d > /usr/local/bin/ssdt1.dat

编辑 /etc/pve/qemu-server/<你的虚拟机ID>.conf,添加一行:

args: -acpitable file=/usr/local/share/ssdt1.dat

如果已经有 args 这一行的话就直接在后面加 -acpitable file=/usr/local/share/ssdt1.dat

驱动安装和验证

虚拟机开机,打上官方驱动(如果联网了的话 Windows 默认也会自己打上驱动不过一般不是最新的);如果任务管理器里面报 43 的话检查一下前面的步骤

下一步

如果需要添加连接到 NVIDIA GPU 的虚拟显示器的话,可以用 parsec-vdd

然后就可以用 Sunshine + Moonlight 串流了,也能打游戏来,不过带反作弊的游戏很容易认出来这是虚拟机,之后如果折腾差不多了再单独讲讲叭


分享这篇文章到:

下一篇
搬家到 Astro