PVE8.2显卡直通
2024-06-15
最近要在 PVE 上测试 Nanos Unikernel 的 Nvidia 显卡集成,需要事先在 PVE 启用显卡直通功能,网上关于 PVE 显卡直通的文章零零散散,于是用本文记录直通过程。
测试环境
PVE 8.2.2
CPU Intel 12490F
显卡 Nvidia 4060
步骤
-
启用 VT-d
在开始之前务必在 BIOS 中开启 Intel VT-d,这一步骤需要显卡和主板支持,不同 BIOS 的开启方法不同,网上搜索相关教程即可。
Tips:撰写本文之前,由于盲目自信,认为以前自己装 Hackintosh 开启过 VT-d,导致尝试了几次都没有成功,后来去 BIOS 看了一眼,才发现 VT-d 没有启用。
-
修改内核启动参数
编辑
/etc/default/grub
文件,修改GRUB_CMDLINE_LINUX_DEFAULT
参数# before GRUB_CMDLINE_LINUX_DEFAULT="quiet" # after GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
-
添加内核模块
编辑
/etc/modules
添加以下内容vfio vfio_iommu_type1 vfio_pci vfio_virqfd
-
屏蔽驱动
编辑
/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
-
查看显卡的 PCI ID
这里一共出现两个设备,一个是视频输出,另一个是音频输出,都需要进行绑定
lspci -nnk | grep -i nvidia
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD107 [GeForce RTX 4060] [10de:2882] (rev a1) Kernel modules: nvidiafb, nouveau 01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:22be] (rev a1)
-
绑定 vfio-pci
编辑
/etc/modprobe.d/vfio.conf
,将上一步骤获取的 PCI ID 填入softdep nouveau pre: vfio-pci softdep snd_hda_intel pre: vfio-pci options vfio-pci ids=10de:2882,10de:22be
-
更新内核
update-initramfs -u
update-initramfs: Generating /boot/initrd.img-6.8.4-2-pve Running hook script 'zz-proxmox-boot'.. Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace.. No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync. root@pve:~# update-grub Generating grub configuration file ... Found linux image: /boot/vmlinuz-6.8.4-2-pve Found initrd image: /boot/initrd.img-6.8.4-2-pve Found memtest86+ 64bit EFI image: /boot/memtest86+x64.efi Adding boot menu entry for UEFI Firmware Settings ... done
-
重启系统
-
检查是否成功绑定
看到
Kernel driver in use: vfio-pci
字样即为直通成功lspci -nnk
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation AD107 [GeForce RTX 4060] [10de:2882] (rev a1) Subsystem: Shenzhen Colorful Yugong Technology and Development Co. AD107 [GeForce RTX 4060] [7377:1541] Kernel driver in use: vfio-pci Kernel modules: nvidiafb, nouveau 01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:22be] (rev a1) Subsystem: Shenzhen Colorful Yugong Technology and Development Co. Device [7377:1541] Kernel driver in use: vfio-pci Kernel modules: snd_hda_intel
虚拟机添加直通设备
前往 PVE 控制台,在硬件选项卡中,添加 PCI 设备
选择 原始设备
,设备选择对应的 Nvidia 显卡,勾选 所有功能
启动虚拟机,安装 Nvidia 显卡驱动,使用 nvidia-smi
检查一下,有正常输出即为成功。