搜 索

Proxmox VE 开启硬件直通

  • 546阅读
  • 2021年10月20日
  • 0评论
首页 / Linux / 正文

新版本的 PVE,例如 PVE 7.0,无需做驱动屏蔽,请直接开启 IOMMU 之后,创建虚拟机类型选择q35,直接添加直通设备即可。

NVIDIA 已经开放 GPU on VM,也就是说使用最新版本的驱动,可以顺利直通N卡,并且不会出现43代码。

如果你的设备支持 SR-IOV 和 vGPU,那你可以无需直通整个设备。

开启直通

  1. 首先确认主板是否开启 VT-d 功能

    注:太远古的 CPU 可能不支持虚拟化,Intel CPU 可以在此查询 https://ark.intel.com/content/www/cn/zh/ark.html

    # 执行
    dmesg | grep -e DMAR -e IOMMU
    # 若无输出,请在 BIOS 内开启 VT-d
  1. 编辑 /etc/default/grub 文件,开启 IOMMU

    vim /etc/default/grub
    # 找到
    GRUB_CMDLINE_LINUX_DEFAULT="quiet"
    
    # Intel 用户修改为
    GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction video=vesafb:off video=efifb:off"
    # AMD 用户修改为
    GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt pcie_acs_override=downstream,multifunction video=vesafb:off video=efifb:off"
    
    # 更新grub
    update-grub

    pcie_acs_override=downstream,multifunction:尝试拆分IOMMU分组,部分主板 PCI 设备可能在同一个分组内,直接直通时会直通一大片设备,使用 find /sys/kernel/iommu_groups/ -type l 可以查看设备分组信息,不需要可以不配置此参数

    video=vesafb:off video=efifb:off: 开启显卡直通需要配置,禁止启动 vesa 驱动和 efi 启动的显卡

  1. 加载相应的内核模块,编辑 /etc/modules 文件,加入如下内容

    vfio
    vfio_iommu_type1
    vfio_pci
    vfio_virqfd
  1. 重启主机,验证是否成功开启 IOMMU

    reboot
    # 重启后在终端输入
    dmesg | grep 'remapping'
    
    # 出现如下例子,则代表成功
    AMD-Vi: Interrupt remapping enabled
    # 或
    DMAR-IR: Enabled IRQ remapping in x2apic mode

显卡直通

  1. 屏蔽显卡

    # 找到显卡设备的 PCI,有很多需要自行查找
    lspci
    
    # 下列是我的亮机卡,25:00 代表组名,25:00.0 代表 25:00 组的第一设备
    # 25:00.0 是显卡本身视频输出
    # 25:00.1 是显卡自带的声卡
    # 25:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Cedar [Radeon HD 5000/6000/7350/8350 Series]
    # 25:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Cedar HDMI Audio [Radeon HD 5400/6300/7300 Series]
    
    # 查看设备的 Device ID(将 Device ID 替换成你自己的)
    lspci -n -s 25:00
    
    # 25:00.0 0300: 1002:68f9
    # 25:00.1 0403: 1002:aa68
    
    # 将显卡添加进直通组
    echo "options vfio-pci ids=1002:68f9,1002:aa68" > /etc/modprobe.d/vfio.conf
    # 对于 NVIDIA 显卡,还需要
    echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
  1. 禁用驱动

    将要禁用的驱动加入 /etc/modprobe.d/pve-blacklist.conf

    # 编辑 blacklist
    vim /etc/modprobe.d/pve-blacklist.conf
    
    # 添加如下内容
    blacklist nvidiafb
    blacklist nouveau
    blacklist nvidia
    blacklist snd_hda_intel
    
    # 如果不需要直通核显,这个可以不用
    blacklist snd_hda_codec_hdmi
    blacklist i915
    
    # AMD Driver
    blacklist radeon
  1. 更新配置

    # 更新 initramfs
    update-initramfs -u
    
    # 若输出 EFI sync什么的没有,不用理会,那是由于 PVE 安装方式引起的
    
    #重启
    reboot
  1. 直通设备

    机型选择 q35,在虚拟机中添加 PCI 设备即可,主 GPU 可勾可不勾,Linux 下多 GPU 可能需要自己配置

    可以通过 dmesg 查看是否有错误,如果提示 No more image in the PCI ROM,可以尝试把核显驱动也禁用

PCI-E 直通

开启直通设置无误后,虚拟机类型选择 q35 即可。

引用

https://pve.proxmox.com/wiki/Pci_passthrough

https://qiedd.com/669.html

https://foxi.buduanwang.vip/virtualization/pve/561.html

https://docs.erlipan.dev/books/mywiki/page/proxmox-gpu-passthrough

评论区
暂无评论
avatar