PVE直通显卡 & Intel SRIOV
本文参考:PVE开启硬件直通功能、PVE 7.3 优化和显卡直通、PVE开启硬件显卡直通功能、PVE设置显卡直通、proxmox PCI Passthrough、Proxmox VE 11代-12代-13代开启核显虚拟化Sriov、PVE8.1 开启核显 sriov、i915-sriov-dkms、PVE开启显卡虚拟化intel GVT-g、Host Bootloader、Linux 内核驱动的签名
简介
其实网络上有很多不错的文章讲述了如何直通显卡,也有简单易用的脚本帮你直通(pvetools)。我也成功在pve上直通n卡给win10,但是在Debian12上,我一直没办法使用Nvidia-smi,后来在朋友的提醒下,成功的解决了此问题,所以写下这篇文章讲述我的解决方案。
注意事项
- 本文编写时 Proxmox-Pve版本 为 8.1.3 , PVE内核版本 为 6.5.11-4-pve
- 本文所使用显卡为 Nvidia Quadro T400 4G (TU117GLM)
- 请确保所使用的 硬件设备 支持 Intel VT-D 或者 AMD AMD-V ,并且在 BIOS 中已经启用。
- 本文编写时,测试虚拟机所使用的系统为 Debian12 bookworm ,内核版本为 6.1.0-17-amd64
- 本文编写时,使用n卡驱动安装方式为
apt install nvidia-driver
,开启源bookworm main non-free non-free-firmware contrib
参数 - 最好不要更新系统!!!不要更新系统!!!不要更新系统!!!(apt upgrade命令不要用)
PVE直通显卡
开启IOMMU和硬件直通功能
-
编辑(
nano
、vi
)/etc/default/grub
,并修改GRUB_CMDLINE_LINUX_DEFAULT
那一行。- Intel CPU
# pcie_acs_override=downstream video=vesafb:off video=efifb:off GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream"
- AMD CPU
# pcie_acs_override=downstream video=vesafb:off video=efifb:off GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt initcall_blacklist=sysfb_init pcie_acs_override=downstream"
intel_iommu
和amd_iommu=on
为 开启IOMMU
video=vesafb:off video=efifb:off
不加载 vesafb 是 veas设备 的 fb ,efifb 是指 uefi设备 的 fb ,在 PVE 7.3 之后版本用initcall_blacklist=sysfb_init
替代(来源于PVE 7.3 优化和显卡直通)
pcie_acs_override=downstream
是为了将 iommu groups拆分,方便直通一些板载的设备(来源于加强硬件直通的功能) -
更新 GRUB
proxmox-boot-tool refresh
执行更新(不使用update-grub
原因是,它提示的) -
加载内核模块
编辑/etc/modules
,新增一下内容vfio vfio_iommu_type1 vfio_pci # vfio_virqfd
vfio_virqfd
在 Linux 6.2 以上版本中不适用,低于 Linux 6.2 的请取消注释 -
重启 PVE
-
验证是否成功 启用IOMMU
输入dmesg | grep -e DMAR -e IOMMU
,并有以下类似内容# 这是我的机器输出内容 [ 0.019611] ACPI: DMAR 0x000000003555A000 000088 (v02 INTEL EDK2 00000002 01000096) [ 0.019640] ACPI: Reserving DMAR table memory at [mem 0x4225a000-0x4225a087] [ 0.175656] DMAR: Host address width 39 [ 0.175657] DMAR: DRHD base: 0x000000far90000 flags: 0x0 [ 0.175661] DMAR: dmar0: reg_base_addr far90000 ver 4:0 cap 1c0000c40660462 ecap 29a00f0505e [ 0.175664] DMAR: DRHD base: 0x000000far91000 flags: 0x1 [ 0.175668] DMAR: dmar1: reg_base_addr far91000 ver 5:0 cap d2008c40660462 ecap f050da [ 0.175670] DMAR: RMRR base: 0x0000004c000000 end: 0x000000503fffff [ 0.175673] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1 [ 0.175674] DMAR-IR: HPET id 0 under DRHD base 0xfed91000 [ 0.175675] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping. [ 0.177198] DMAR-IR: Enabled IRQ remapping in x2apic mode [ 0.592036] pci 0000:00:02.0: DMAR: Skip IOMMU disabling for graphics [ 0.658565] DMAR: Intel-IOMMU force enabled due to platform opt in [ 0.658570] DMAR: No ATSR found [ 0.658571] DMAR: No SATC found [ 0.658572] DMAR: IOMMU feature fl1gp_support inconsistent [ 0.658573] DMAR: IOMMU feature pgsel_inv inconsistent [ 0.658574] DMAR: IOMMU feature nwfs inconsistent [ 0.658575] DMAR: IOMMU feature dit inconsistent [ 0.658576] DMAR: IOMMU feature sc_support inconsistent [ 0.658577] DMAR: IOMMU feature dev_iotlb_support inconsistent [ 0.658578] DMAR: dmar0: Using Queued invalidation [ 0.658581] DMAR: dmar1: Using Queued invalidation [ 0.659172] DMAR: Intel(R) Virtualization Technology for Directed I/O
-
验证是否 启用IOMMU中断重映射
输入dmesg | grep remapping
并输出 类似 以下内容即为成功。到目前为止可以 直通 除显卡外 的 PCI-E设备。# intel [ 0.175675] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping. [ 0.177198] DMAR-IR: Enabled IRQ remapping in x2apic mode # amd AMD-Vi: Interrupt remapping enabled
如果失败或者没有,可能没有 启用IOMMU中断重映射 ,会导致无法直通,请看第七点。
-
允许不安全IOMMU中断重映射(第六点成功时,这步跳过)
编辑/etc/modprobe.d/iommu_unsafe_interrupts.conf
,添加以下内容。options vfio_iommu_type1 allow_unsafe_interrupts=1
显卡直通
-
屏蔽驱动
编辑/etc/modprobe.d/pve-blacklist.conf
,添加以下内容# Nvidia blacklist nvidiafb blacklist nouveau blacklist nvidia # AMD blacklist amdgpu blacklist radeon # Intel UHD #blacklist snd_hda_codec_hdmi #blacklist snd_hda_intel #blacklist snd_hda_codec #blacklist snd_hda_core
-
忽略显卡警告(Nvidia专属,主要在 Win 中遇到一些应用,列如 GeForce Experience 、Passmark Performance Test 和 SiSoftware Sandra)
编辑/etc/modprobe.d/kvm.conf
options kvm ignore_msrs=1 report_ignored_msrs=0
ignore_msrs
忽略异常
report_ignored_msrs
是否报告异常 -
配置 VFIO ,主要用于 显示输出 和 音频输出 分开
- 查看显卡ID
输入lspci -nn | grep VGA
,得到类似以下内容
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-P Integrated Graphics Controller [8086:46d6] (rev 0c) 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU117GLM [Quadro T400 Mobile] [10dg:1fa2] (rev a1)
- 获取 设备ID 和 音频ID ,注意我这 显卡编号 为
01:00.0
输入lspci -n -s 02:00
01:00.0 0300: 10dg:1fa2 (rev a1) 01:00.1 0403: 10dg:10fd (rev a1)
- 将 设备ID(
10dg:1fa2
) 和 音频ID (10dg:10fd
) 写入到/etc/modprobe.d/vfio.conf
options vfio-pci ids=10dg:1fa2,10dg:10fd
- 查看显卡ID
-
更新内核
输入update-initramfs -u
-
重启
-
检查
vfio-pci
是否应用成功
输入lspci -nnk
并找到 显卡编号 那一行,如果得到类似以下结果,为成功01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU117GLM [Quadro T400 Mobile] [10dg:1fa2] (rev a1) Subsystem: NVIDIA Corporation TU117GLM [Quadro T400 Mobile] [10dg:1fa2] Kernel driver in use: vfio-pci Kernel modules: nvidiafb, nouveau 01:00.1 Audio device [0403]: NVIDIA Corporation Device [10dg:10fd] (rev a1) Subsystem: NVIDIA Corporation Device [10dg:10fd] Kernel driver in use: vfio-pci Kernel modules: snd_hda_intel
结果中有
Kernel driver in use: vfio-pci
即为成功
添加显卡到虚拟机
创建虚拟机
-
常规 选项卡请根据自己情况填写
-
操作系统 选项卡请根据自己情况填写
-
系统 选项卡
- 显卡 选择
标准VGA
、SPICE
、VirtlO-GPU
、VirGL GPU
任选其一即可 - 机型 选择
q35
- Qemu代理 选择 开启(一般会安装的,类似 ESXI agent,用于与 虚拟机通信 获取 虚拟机信息)
- BIOS 选择
OVMF(UEFI)
,并选择EFI存储
- 显卡 选择
-
磁盘 选项卡请根据自己情况填写
-
CPU 选项卡
- 类别 推荐选择
host
- 其他请根据自己情况填写
- 类别 推荐选择
-
内存 选项卡
- 推荐关闭
Ballooning设备
,因为 硬件直通 的 虚拟机 需要保证内存不是共享的。
- 推荐关闭
-
网络 选项卡请根据自己情况填写
-
确认
添加显卡到虚拟机
- 选择 虚拟机 , 并点击 硬件
- 点击 添加 , 然后点击 PCI设备
- 选择
原始设备
,在 设备 中选择需要直通的显卡 - 启用 所有功能 、 主GPU 、 ROM-Bar 、 PCI-Express
其中 主GPU 可以不用选择,此选项影响 显卡 为 默认参数(会导致无法启动终端)
所有功能 、ROM-Bar 、 PCI-Express 经测试不影响nvidia-smi
命令 - 点击添加
注册DKMS密钥(简单粗暴方法可以看本文这里)
MOK(机器所有者密钥)是仅允许运行经批准的操作系统组件和驱动程序来保护启动过程,使用公钥/私钥方式加解密
所以我们使用安全启动时候,需要批准驱动签名
-
注册
DKMS 密钥
并 输入密码 (随意设置 记住即可)mokutil --import /var/lib/dkms/mok.pub
如果遇到没有这个文件的,可以使用一下命令创建
openssl req -new -x509 -nodes -days 36500 -subj "/CN=DKMS module signing key" \ -newkey rsa:2048 -keyout /var/lib/dkms/mok.key \ -outform DER -out /var/lib/dkms/mok.pub
当然,可以使用 签名工具 对驱动签名
/lib/modules/$(uname -r)/build/scripts/sign-file sha512 "/var/lib/dkms/mok.key" "/var/lib/dkms/mok.pub" path/module-name
使用
modinfo path/module-name
可以查看信息 -
重启 后,Grub引导 会弹出 蓝底界面 并 并有MOK 字样
如果PVE
使用 Systemd-boot 启动,请将 Systemd-boot 改成 Grub-
找到当前 EFI分区
proxmox-boot-tool status # 输入命令后显示,可以知道 `7380-1CAE` `7380-58D6` 为引导分区 **uuid** Re-executing '/usr/sbin/proxmox-boot-tool' in new private mount namespace.. System currently booted with uefi 7380-1CAE is configured with: uefi (versions: 6.5.11-4-pve, BOOTX64.CSV, fbx64.efi, grub.cfg, grubx64.efi, mmx64.efi, shimx64.efi), grub (versions: 6.5.11-4-pve) 7380-58D6 is configured with: uefi (versions: 6.5.11-4-pve, BOOTX64.CSV, fbx64.efi, grub.cfg, grubx64.efi, mmx64.efi, shimx64.efi), grub (versions: 6.5.11-4-pve)
-
输入
blkid
,启动对应 引导分区 uuid 的 分区路径是/dev/nvme0n1p2
/dev/nvme1n1p2
/dev/nvme0n1p3: LABEL="rpool" UUID="13103285634796657340" UUID_SUB="11561554436290186939" BLOCK_SIZE="4096" TYPE="zfs_member" PARTUUID="71a260c1-ac75-47c0-b431-652333f57ac2" /dev/nvme0n1p2: UUID="7380-58D6" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="37ea31d3-62d0-4035-9b46-1f2198e448d0" /dev/nvme1n1p2: UUID="7380-1CAE" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="4da88469-0c7f-4f3f-a997-0e630a1d8fe1" /dev/nvme1n1p3: LABEL="rpool" UUID="13103285634796657340" UUID_SUB="10459773612784228876" BLOCK_SIZE="4096" TYPE="zfs_member" PARTUUID="9e3a9453-719a-4ce9-a3b0-ca4b4649e66c" /dev/nvme0n1p1: PARTUUID="1daef89e-gac5-4110-qce1-93c780933e85"
-
输入以下命令,将 Systemd-boot 改成 Grub
proxmox-boot-tool init /dev/nvme0n1p2 grub proxmox-boot-tool init /dev/nvme1n1p2 grub
-
更新一下引导
pve-efiboot-tool refresh
-
-
选择
Enroll MOK
-
选择
Continue
-
选择
Yes
-
输入
密码
-
重启
-
如果发现进入界面还是之前的 黑色背景 白色线条 ,并未显示 Grub 那经典的 蓝色背景 ,说明 efi引导 之前的文件,可以使用 efibootmgr 调整引导顺序
使用efibootmgr -v
查看当前引导选项efibootmgr -v # 返回的结果 BootCurrent: 0006 Timeout: 1 seconds BootOrder: 0006,0004,0007 Boot0000 Windows Boot Manager VenHw(99e275e7-75a0-4b37-a2e6-c5385e6c00cb)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}.................... Boot0001 UEFI: Built-in EFI Shell VenMedia(5023b95c-db26-429b-a648-bd47664c8012)..BO Boot0002 VMware ESXi VenHw(99e275e7-75a0-4b37-a2e6-c5385e6c00cb) Boot0003* Linux Boot Manager HD(2,GPT,61dd22d9-2018-4f81-a355-3cdde4f51508,0x800,0x200000)/File(\EFI\SYSTEMD\SYSTEMD-BOOTX64.EFI) Boot0004* proxmox HD(2,GPT,61dd22d9-2018-4f81-a355-3cdde4f51508,0x800,0x200000)/File(\EFI\PROXMOX\SHIMX64.EFI) Boot0006* UEFI OS HD(2,GPT,61dd22d9-2018-4f81-a355-3cdde4f51508,0x800,0x200000)/File(\EFI\BOOT\BOOTX64.EFI)..BO Boot0007 UEFI: Built-in EFI Shell VenMedia(5023b95c-db26-429b-a648-bd47664c8012)..BO
使用
efibootmgr -o xxxx
设置启动项efibootmgr -o 0004,0006,0007 # 返回的结果 BootCurrent: 0006 Timeout: 1 seconds BootOrder: 0004,0006,0007 Boot0000 Windows Boot Manager Boot0001 UEFI: Built-in EFI Shell Boot0002 VMware ESXi Boot0003* Linux Boot Manager Boot0004* proxmox Boot0006* UEFI OS Boot0007 UEFI: Built-in EFI Shell
使用
efibootmgr -b xxxx -B
可以删除引导项(请三思,加回来有点麻烦)efibootmgr -b 0000 -B # 返回的结果 BootCurrent: 0006 Timeout: 1 seconds BootOrder: 0004,0006,0007 Boot0001 UEFI: Built-in EFI Shell Boot0002 VMware ESXi Boot0003* Linux Boot Manager Boot0004* proxmox Boot0006* UEFI OS Boot0007 UEFI: Built-in EFI Shell
关闭安全启动(Linux专属)
终于来到了其他教程没有的部分
如果你的 安装Linux 后,装完驱动发现无法使用 nvidia-smi
命令,并提示以下内容
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
还发现 systemd-modules-load 、 nvidia-persistenced.service 无法启动,systemctl status systemd-modules-load.service
和 journalctl -xeu nvidia-persistenced.service
,提示有以下内容
# systemd-modules-load.service
modprobe: ERROR: could not insert 'nvidia': Invalid argument
modprobe: ERROR: could not insert 'nvidia_current_drm': Key was rejected by service
modprobe: ERROR: ../libkmod/libkmod-module.c:1047 command_do() Error running install command 'modprobe nvidia ; modprobe -i nvidia-current-modeset ' for module nvidia_modeset: retcode 1
modprobe: ERROR: could not insert 'nvidia_modeset': Invalid argument
modprobe: ERROR: could not insert 'nvidia_current_drm': Key was rejected by service
Error running install command 'modprobe nvidia-modeset ; modprobe -i nvidia-current-drm ' for module nvidia_drm: retcode 1
Failed to insert module 'nvidia_drm': Invalid argument
# nvidia-persistenced.service
Started (737)
Failed to query NVIDIA devices. Please ensure that the NVIDIA device files (/dev/nvidia*) exist, and that user 101 has read and write permissions for those files.
Shutdown (737)
nvidia-persistenced failed to initialize. Check syslog for more details.
nvidia-persistenced.service: Control process exited, code=exited, status=1/FAILURE
这时候,你可以试试关闭虚拟机的安全启动,原因是因为 驱动签名验证 无法通过,我在使用 nvidia官方驱动 安装时候发现的 ,它提示
The target kernel has CONFIG_MODULE_SIG set, which means that it supports cryptographic signatures on kernel
modules. On some systems, the kernel may refuse to load modules without a valid signature from a trusted key. This
system also has UEFI Secure Boot enabled; many distributions enforce module signature verification on UEFI systems
when Secure Boot is enabled. Would you like to sign the NVIDIA kernel module?
关闭安全启动 步骤如下
- 启动虚拟机,并快速反复按 F2 按钮 进入BIOS
- 用 上下键 将 光条 移动到 Device Manager ,按 回车键 选择
- 选择 Secure Boot Configuration
- 将 光条 移动到 Attempt Secure Boot 一行 , 按 空格键 取消
×
(取消选中),可能会有提示,按 空格键 即可继续 - 按 F10 保存,提示输入
Y
保存,输入N
或者ESC
键 取消,这里输入Y
- 按 ESC键 退回到一开始界面
- 将 光条 移动到 Continue 一行,按 回车键 继续
- 提示按 回车键 继续
- 输入
nvidia-smi
命令查看是否成功
Intel GVT-g虚拟化核显
目前支持 Intel GVT-g虚拟化核显 的 CPU 在 5代-10代 不一定全支持,不做购买意见
请先到 BIOS 中 开启虚拟化
-
修改 GRUB配置 ,在 GRUB_CMDLINE_LINUX_DEFAULT= 行添加
intel_iommu=on i915.enable_gvt=1
-
更新 Grub ,
update-grub
Orproxmox-boot-tool refresh
-
检查 IOMMU是否开启 参考本文这里
-
加载内核模块
编辑/etc/modules
,新增一下内容vfio vfio_iommu_type1 vfio_pci # vfio_virqfd kvmgt
vfio_virqfd
在 Linux 6.2 以上版本中不适用,低于 Linux 6.2 的请取消注释 -
更新内核
update-initramfs -u
-
重启
-
验证是否开启GVT
ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/ # 如果不是,将00:02.0换成自己的 # 出现下面4个选项或者类似的即成功 i915-GVTg_V5_1 i915-GVTg_V5_2 i915-GVTg_V5_4 i915-GVTg_V5_8
Intel SRIOV虚拟化 核显
目前支持 Intel SRIOV虚拟化 核显 12代以后
首先到 BIOS 中开启以下东西
- Above 4G Enconding
- Above 4GB MMIO BIOS assignment
- Re-Size Bar
- VT-D
Intel SRIOV虚拟化 核显开启
-
先更新
APT源
并 安装git dkms unzip build-* pve-headers-$(uname -r)
-
将源文件 Clone 下来,
cd ~ && git clone https://github.com/strongtz/i915-sriov-dkms
-
修改
dkms.conf
sed -i 's/"@_PKGBASE@"/"i915-sriov-dkms"/g' ~/i915-sriov-dkms/dkms.conf sed -i 's/"@PKGVER@"/"'"$(uname -r)"'"/g' ~/i915-sriov-dkms/dkms.conf
-
进入目录并添加到DKMS
cd ~/i915-sriov-dkms && dkms add .
-
编译并安装驱动
dkms install -m i915-sriov-dkms -v $(uname -r) --force
如果遇到没有签名证书,请看本文这里
-
查看安装信息
dkms status
i915-sriov-dkms/6.5.11-4-pve, 6.5.11-4-pve, x86_64: installed
-
修改 GRUB配置 ,在 GRUB_CMDLINE_LINUX_DEFAULT= 行添加
intel_iommu=on i915.enable_guc=3 i915.max_vfs=7
-
更新 Grub 和 内核
proxmox-boot-tool refresh update-initramfs -u
-
设置虚拟数量
这里可以用 sysfsutils 或者 Cron# Cron @reboot echo 7 > /sys/devices/pci0000:00/0000:00:02.0/sriov_numvfs # sysfsutils apt install sysfsutils -y # 编辑 /etc/sysfs.conf (一般是00:02.0,如果不对请修改) echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" >> /etc/sysfs.conf
-
注册 DKMS 密钥
请看本文这里 -
重启
-
lspci | grep VGA
查看是否成功,成功的话 会有一堆00:02.0
设备00:02.0 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c) 00:02.1 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c) 00:02.2 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c) 00:02.3 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c) 00:02.4 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c) 00:02.5 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c) 00:02.6 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c) 00:02.7 VGA compatible controller: Intel Corporation Alder Lake-P Integrated Graphics Controller (rev 0c)
虚拟机设置
参考本文这里
略微不同地方在于
- 设置为
主GPU
- 显示 设置为
virtio-gpu
- 取消设置
全部功能
Linux虚拟机
虚拟机设置跟前面一节一样
但Linux比较特殊,需要重新编译内核
可以参考i915-sriov-dkms
这边我使用 Debian 12 bookworm 为例子
- 内核版本为 linux-image-6.1.0-18-amd64
- 编译内核版本为 linux-source-6.1 6.1.76-1
-
更新
apt update apt upgrade apt autoremove # 这点根据自己需求
-
安装 内核源 及其 编译工具
apt install dkms dwarves git linux-source-6.1 pahole vainfo
-
解压并复制 原始构建配置
cd /usr/src tar xJvf linux-source-6.1.tar.xz # 过程有点长 cp /boot/config-6.1.*-amd64 /usr/src/linux-source-6.1/.config
-
添加 两条参数
# 推荐先查看一下配置文件 cat /usr/src/linux-source-6.1/.config # 一下命令仅限不存在时使用 echo "CONFIG_INTEL_MEI_PXP=m" >> /usr/src/linux-source-6.1/.config echo "CONFIG_DRM_I915_PXP=y" >> /usr/src/linux-source-6.1/.config
-
构建内核 并 安装内核
cd /usr/src/linux-source-6.1 make deb-pkg LOCALVERSION=-sriov KDEB_PKGVERSION=$(make kernelversion)-1 # 等待N年以后ヾ(≧▽≦*)o dpkg -i /usr/src/*.deb
这个时候它会问一堆问题,编译内核这块我不是很懂,所以我选择无脑回车( ̄︶ ̄)↗
-
重启虚拟机
-
查看内核名称,确保包含 -sriov (如果使用跟我一样的配置的话)
6.1.76-sriov
-
构建并安装 i915-sriov
-
先更新
APT源
并 安装git dkms unzip build-*
-
将源文件 Clone 下来,
cd ~ && git clone https://github.com/strongtz/i915-sriov-dkms
-
修改
dkms.conf
sed -i 's/"@_PKGBASE@"/"i915-sriov-dkms"/g' ~/i915-sriov-dkms/dkms.conf sed -i 's/"@PKGVER@"/"'"$(uname -r)"'"/g' ~/i915-sriov-dkms/dkms.conf
-
进入目录并添加到DKMS
cd ~/i915-sriov-dkms && dkms add .
-
编译并安装驱动
dkms install -m i915-sriov-dkms -v $(uname -r) --force
-
查看安装信息
dkms status
i915-sriov-dkms/6.1.76-sriov, 6.1.76-sriov, x86_64: installed
-
修改 GRUB配置 ,在 GRUB_CMDLINE_LINUX_DEFAULT= 行添加
i915.enable_guc=3 i915.max_vfs=7
-
更新 Grub 和 内核
update-grub update-initramfs -u
-
重启虚拟机
-
结尾
以上就是 PVE硬件直通 教程。有其他特殊问题的,可以看看官方的这篇文章proxmox PCI Passthrough