PVE入门-显卡直通

1.设备正常工作的BIOS 设置基础

启用 VT-d
禁用 CSM
ACS Enable # 如果存在,设置为已启用(自动不起作用)
启用 4G解码 4G Decoding
禁用 Resizable BAR/Smart Access Memory智能访问内存 #(如果启用,AMD GPUS(Vega 及更高版本)会遇到“代码 43 错误”)
启用 IOMMU # 如果存在,用于 AMD 主板
将主显示器设置为 CPU/iGPU (如果您的 CPU 有 iGPU)
预分配内存为 64M
新建的虚拟机BIOS设置为OVMF(它是开源的UEFI实现)

  • 开启IOMMU支持 vi /etc/default/grub
#Intel处理器:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction pci=nommconf video=efifb:off"

#AMD处理器:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt initcall_blacklist=sysfb_init initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction pci=nommconf video=efifb:off"
  • 更新grub并重启
update-grub
reboot
  • 验证iommu是否生效
dmesg | grep -e IOMMU
# 如果没有输出,则说明有问题。你应该看到这样的东西;“DMAR: IOMMU enabled”
  • 添加所需的系统模块(驱动)
echo "vfio" >> /etc/modules
echo "vfio_iommu_type1" >> /etc/modules
echo "vfio_pci" >> /etc/modules
echo "vfio_virqfd" >> /etc/modules
update-initramfs -u -k all
  • 添加模块(驱动)黑名单(即让GPU设备在下次系统启动之后不使用这些驱动,把设备腾出来给vfio驱动用)

Intel核显:

echo "blacklist snd_hda_intel" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist snd_hda_codec_hdmi" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist i915" >> /etc/modprobe.d/pve-blacklist.conf

A卡:

echo "blacklist radeon" >> /etc/modprobe.d/pve-blacklist.conf

N卡

echo "blacklist nvidia" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist nvidiafb" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/pve-blacklist.conf
echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf

更新内核并重启

update-initramfs -u
reboot

https://zhuanlan.zhihu.com/p/435195451
https://imacos.top/2023/07/31/pci/

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容