跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(LCZ-Blue)
  • 不使用皮肤
  • LCZ-Green
  • LCZ-Blue
  • LCZ-Black
折叠
品牌标识

抡锤者

首页 版块 标签 硬件 AI 广场
  1. 主页
  2. 版块
  3. 随便聊聊
  4. Proxmox VE 9.2+ Intel 核显 SR-IOV + AMD Radeon AI PRO R9700 直通+Ubuntu24.04部署实测(一)

Proxmox VE 9.2+ Intel 核显 SR-IOV + AMD Radeon AI PRO R9700 直通+Ubuntu24.04部署实测(一)

已定时 已固定 已锁定 已移动 随便聊聊
intelr9700ubuntu
1 帖子 1 发布者 92 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Magic629M 离线
    Magic629M 离线
    Magic629
    德高望重
    编写于 最后由 编辑
    #1

    一. 方案概述

    Proxmox VE 9.2 宿主(headless)
      主机:ASUS TUF GAMING Z890-PRO WIFI / Core Ultra 7 265K / 64GB
    
    ① Intel 核显 00:02.0(PF,留给宿主 i915 管理)
         ├─ 00:02.1 VF  ->  办公/学习 VM-1(解码加速)
         ├─ 00:02.2 VF  ->  办公/学习 VM-2
         ├─ 00:02.3 VF  ->  办公/学习 VM-3
         ├─ 00:02.4 VF  ->  办公/学习 VM-4
        
    
    ② AMD R9700 04:00.0(整卡直通)
         └─> Ubuntu 24.04 算力 VM
               └─> ROCm + llama.cpp(Qwen3.8-27B)+ DeepSeek Harness WebUI
    

    二. 本机配置

    组件 型号/参数
    主板 ASUS TUF GAMING Z890-PRO WIFI BIOS 3211
    CPU Intel Core Ultra 7 265K Arrow Lake-S,20 核
    内存 64GB DDR5-6400(2×32GB 双通道)
    核显 Intel 8086:7d67(Xe-LPG,驱动识别为 meteorlake) SR-IOV 能力已实测:sriov_totalvfs=4
    独显 AMD Radeon AI PRO R9700(gfx1201/RDNA4,32GB) 地址 04:00.0
    启动盘 Samsung MZAMX512HCLV-00BL2 512 GB(LVM pve-root 461 G + pve-swap 8 G,ext4)
    数据盘 Kingston SNV2S1000G 1 TB (整块直通给 VM 102 Ubuntu24.04)
    系统现状 Ubuntu 24.04.5,内核 7.0.0-31-generic 加载llama.cpp+AMD AI Pro R9700

    三. 方案可行性结论(已核实)

    
    1. **核显 SR-IOV 可行**:本机核显实测具备 `Single Root I/O Virtualization` 能力,`sriov_totalvfs=7`(最多 7 个 VF,本方案用 5 个)。Intel 官方支持列表含 Arrow Lake(Core Ultra 200 / Series 2)。
    2. **VF 定位为解码加速**:VF 只做渲染/解码(guest 内表现为 `/dev/dri/renderD128`,走 VAAPI/QSV),**不驱动物理 HDMI/DP**。主显示走 virtio-gpu/Spice/RDP,远程连接使用——这正是 Intel vGPU 云桌面的标准用法。
    3. **AMD R9700 直通可行**:社区已有双 R9700 在 Proxmox 上跑 llama.cpp 的成功案例,单卡更简单。
    
    

    四. 前置准备(BIOS 设置)

    进入 BIOS 确认(这些是 SR-IOV 和直通的共同前提):

    设置 值
    Intel VT-d Enabled
    Above 4G Decoding Enabled(VF BAR 需要大地址空间)
    Re-Size BAR Support Enabled
    Secure Boot Disabled(你已是 disabled,保持即可)
    CSM Disabled

    参考:内核日志里 VF BAR 的预留是 VF BAR 0 ... contains BAR 0 for 7 VFs,说明固件确实为 7 个 VF 预留了 MMIO 空间。如果 4 个 VF 建不起来,优先回查 Above 4G Decoding 与 Re-Size BAR。

    步骤 1:安装编译工具链与内核头文件

    apt update
    apt install -y build-essential dkms sysfsutils pciutils wget
    
    # 头文件必须与当前运行内核严格对应
    apt install -y proxmox-headers-$(uname -r)
    
    # 校验
    ls -d /usr/src/linux-headers-$(uname -r)
    

    如果你的 uname -r 不是 7.0.14-16-pve,把命令里的版本换成实际值。也可以用 proxmox-default-headers 跟随默认内核。

    步骤 2:安装 i915-sriov-dkms

    当前最新版 2026.08.12.1,要求内核 6.17.x ~ 7.1.x —— 本机的 7.0.14-16-pve 在支持范围内。

    wget -O /tmp/i915-sriov-dkms_2026.08.12.1_amd64.deb \
      "https://github.com/strongtz/i915-sriov-dkms/releases/download/2026.08.12.1/i915-sriov-dkms_2026.08.12.1_amd64.deb"
    
    dpkg -i /tmp/i915-sriov-dkms_2026.08.12.1_amd64.deb
    
    # 关键:确认 DKMS 针对本机的内核编译成功
    dkms status
    # 期望输出:i915-sriov-dkms/2026.08.12.1, 7.0.14-16-pve, x86_64: installed
    

    若 dkms status 没有 installed,先不要重启,否则可能起不来图形/核显。排查:

    cat /var/lib/dkms/i915-sriov-dkms/2026.08.12.1/build/make.log | tail -40
    

    步骤 3:配置内核参数(i915 路径)

    编辑 /etc/default/grub,把第 9 行改成:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on i915.enable_guc=3 i915.max_vfs=4 module_blacklist=xe"
    

    要点说明:

    • intel_iommu=on —— 直通与 VF 隔离前提(当前没写,但 R9700 已在用,说明内核默认开了;显式写上更稳妥)。
    • i915.enable_guc=3 —— 启用 GuC + HuC,SR-IOV 必需。本机当前的 GuC 已经在跑(GuC firmware i915/mtl_guc_70.bin version 70.53.0,submission/SLPC/RC 均已启用),加这个参数是确保补丁版驱动下依然加载。
    • i915.max_vfs=4 —— 我要 4 个 VF,所以写 4(硬件上限 7;写 4 就只创建 4 个,不浪费 BAR 空间)。
    • module_blacklist=xe —— 硬性要求。本机当前 xe 已加载(0 引用),必须屏蔽。

    应用:

    update-grub
    update-initramfs -u -k all
    

    步骤 4:开机自动创建 VF

    DKMS 模块装好后,VF 仍需通过 sysfs 显式创建。用 sysfsutils 让它在开机时自动执行:

    echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 4" > /etc/sysfs.conf
    
    # 确认写入
    cat /etc/sysfs.conf
    

    官方 PVE 指南用的就是这一步。只写 grub 参数而不配 sysfs.conf,重启后 sriov_numvfs 仍是 0,VF 不会出现。

    步骤 5:把 VF 在宿主上屏蔽

    VF 留在宿主上会导致系统不稳定、软件冲突,也可能被宿主的转码软件误用。官方明确建议屏蔽。

    ⚠️ 注意:已经有 /etc/modprobe.d/vfio.conf(给 R9700 用的 options vfio-pci ids=1002:7551,1002:ab40)。下面这条命令会新建 modules-load 配置,不会覆盖你现有的 vfio.conf。但请先确认,不要手工去改 vfio.conf 而把 AMD 的配置弄丢。

    # 让 vfio-pci 开机加载
    echo "vfio-pci" > /etc/modules-load.d/vfio.conf
    

    创建 udev 规则(设备 ID 用你的 0x7d67,VF 范围 1–4):

    cat > /etc/udev/rules.d/99-i915-vf-vfio.rules <<'EOF'
    # 把核显 VF (00:02.1 - 00:02.4) 绑定到 vfio-pci,PF (00:02.0) 保持 i915
    ACTION=="add", SUBSYSTEM=="pci", KERNEL=="0000:00:02.[1-4]", ATTR{vendor}=="0x8086", ATTR{device}=="0x7d67", DRIVER!="vfio-pci", RUN+="/bin/sh -c 'echo $kernel > /sys/bus/pci/devices/$kernel/driver/unbind; echo vfio-pci > /sys/bus/pci/devices/$kernel/driver_override; modprobe vfio-pci; echo $kernel > /sys/bus/pci/drivers/vfio-pci/bind'"
    EOF
    
    update-initramfs -u
    

    步骤 6:重启并验证

    reboot
    

    重启后执行:

    # 1) 应看到 PF + 4 个 VF
    lspci | grep -i vga
    # 期望:00:02.0(PF)+ 00:02.1 / 00:02.2 / 00:02.3 / 00:02.4
    
    # 2) VF 数量
    cat /sys/bus/pci/devices/0000:00:02.0/sriov_numvfs     # 期望 4
    
    # 3) 驱动归属:PF 是 i915,VF 是 vfio-pci
    lspci -nnk -s 00:02
    
    # 4) xe 应已不加载
    lsmod | grep -E '^xe ' ; echo "(无输出 = 已成功屏蔽)"
    
    # 5) GuC 应正常
    dmesg | grep -iE 'guc|sriov' | tail -20
    
    # 6) 宿主上不应出现 VF 的渲染节点
    ls /dev/dri/
    # 期望只有 card0 和 renderD128;若出现 renderD130+ 说明 VF 未成功屏蔽
    

    第 3 步的期望输出形态:

    00:02.0 VGA compatible controller: Intel Corporation Arrow Lake-S [Intel Graphics] (rev 06)
            Kernel driver in use: i915          ← PF 仍是 i915
    00:02.1 ...  Kernel driver in use: vfio-pci  ← VF 归 vfio
    00:02.2 ...  Kernel driver in use: vfio-pci
    00:02.3 ...  Kernel driver in use: vfio-pci
    00:02.4 ...  Kernel driver in use: vfio-pci
    

    步骤 7:把 VF 分配给虚拟机

    在 PVE Web 界面,对每一台要用的 VM:

    1. 硬件 → 添加 → PCI 设备
    2. Raw Device 选择对应的 VF,例如 0000:00:02.1
    3. 勾选 PCI-Express
    4. 不要勾选 "Primary GPU";显示(Display)保持 virtio-gpu 或 SPICE
    5. 一台 VM 只给一个 VF,四个 VF 给四台 VM

    VF 只做渲染/编解码,不驱动物理 HDMI/DP 输出。 显示走 virtio-gpu + SPICE/RDP/noVNC,这正是 Intel vGPU 云桌面的标准用法。

    步骤 8:guest 内配置

    DKMS 模块必须同时装在宿主机和 guest 里(项目 README 明确要求:"You need to install this dkms module in both host and guest!")。

    以 Ubuntu 24.04 guest 为例(本机的 VM 102 内核 7.0.0-31-generic,同样落在 6.17–7.1 支持区间):

    sudo apt update
    sudo apt install -y build-essential dkms "linux-headers-$(uname -r)" wget pciutils
    
    # 安装同一个 deb
    wget -O /tmp/i915-sriov-dkms_2026.08.12.1_amd64.deb \
      "https://github.com/strongtz/i915-sriov-dkms/releases/download/2026.08.12.1/i915-sriov-dkms_2026.08.12.1_amd64.deb"
    sudo dpkg -i /tmp/i915-sriov-dkms_2026.08.12.1_amd64.deb
    sudo dkms status
    
    # guest 里不需要也不应该设 max_vfs(那是 PF 侧参数)
    sudo sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="i915.enable_guc=3 module_blacklist=xe /' /etc/default/grub
    sudo update-grub
    sudo update-initramfs -u -k all
    sudo reboot
    

    guest 内验证:

    ls -l /dev/dri                       # 期望出现 renderD128
    sudo apt install -y vainfo intel-gpu-tools ffmpeg intel-media-va-driver-non-free
    vainfo --display drm --device /dev/dri/renderD128
    # 期望看到 H.264 / HEVC / VP9 / AV1 的 decode 入口
    
    # FFmpeg 硬解冒烟测试(HEVC)
    ffmpeg -hide_banner \
      -init_hw_device vaapi=va:/dev/dri/renderD128 -filter_hw_device va \
      -f lavfi -i testsrc2=size=1920x1080:rate=30 \
      -vf 'format=nv12,hwupload' -c:v hevc_vaapi -frames:v 120 -f null -
    

    五、验证清单

    # 检查项 命令(位置) 期望结果
    1 DKMS 编译成功 dkms status(宿主) i915-sriov-dkms/2026.08.12.1, 7.0.14-16-pve: installed
    2 xe 已屏蔽 lsmod \| grep '^xe '(宿主) 无输出
    3 VF 数量 cat .../sriov_numvfs(宿主) 4
    4 PF 归 i915 lspci -nnk -s 00:02.0(宿主) Kernel driver in use: i915
    5 VF 归 vfio lspci -nnk -s 00:02.1(宿主) Kernel driver in use: vfio-pci
    6 宿主无 VF 渲染节点 ls /dev/dri/(宿主) 只有 card0 / renderD128
    7 GuC 正常 dmesg \| grep -i guc(宿主) 无 firmware 加载失败
    8 guest 看到设备 ls -l /dev/dri(guest) renderD128 存在
    9 硬解可用 vainfo --display drm ...(guest) 列出 H.264/HEVC/VP9/AV1
    10 多 VM 并行 四台 VM 同时转码 均正常,无掉卡

    六、风险与注意事项

    6.1 实验性方案

    DKMS 项目自己的声明是 "highly experimental"、"use it at your own risk"。走这条路意味着:

    • 不受 Intel 官方支持;
    • 可能遇到稳定性问题。报 "driver not bound / 无 VF"。

    6.2 内核升级会让模块失效

    每次 PVE 升级内核后,必须重装/重编译 DKMS 模块,否则核显会退回内置驱动、VF 全部消失。

    # 升级内核后
    dkms status                                  # 检查是否已为新内核构建
    apt install -y proxmox-headers-$(uname -r)   # 装新内核头文件
    dkms autoinstall                             # 或重装 deb
    

    建议固定当前内核直到确认稳定,或在升级流程里加上 dkms autoinstall。

    6.3 四个 VF 共享同一颗物理核显

    这是最重要的一条性能预期管理:4 个 VF 并非 4 颗独立显卡,它们共享同一组执行单元(EU)和媒体引擎(VDBOX)。

    • 4 台 VM 同时重度转码会互相争抢,性能是非线性下降的;
    • Intel 的媒体引擎在 VF 之间的隔离并不完全,高并发时可能出现个别任务变慢;
    • 轻中度办公/学习场景(偶尔看视频、视频会议硬解)完全够用;
    • 不要预期"4 路 4K 同时转码"能线性扩展。

    6.4 绝对不要把 PF 直通给 VM

    00:02.0(PF)必须留在宿主机。把 PF 直通给任何 VM 会导致其余所有 VF 一起崩溃。只直通 00:02.1 ~ 00:02.4。

    6.5 不要覆盖现有的 vfio.conf

    你的 /etc/modprobe.d/vfio.conf 里有 R9700 的 ids=1002:7551,1002:ab40。步骤 5 新建的是 /etc/modules-load.d/vfio.conf(不同目录、不同用途),不要用重定向覆盖 /etc/modprobe.d/vfio.conf,否则 R9700 直通会失效。

    6.6 与现有 R9700 直通共存

    两者互不冲突:R9700 走 04:00.0 的 vfio-pci,核显 PF 走 00:02.0 的 i915。但修改后务必回归验证 VM 102 能正常启动、rocm-smi 能看到 R9700。

    1 条回复 最后回复
    1

    你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

    厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

    有了你的建议,这篇帖子会更精彩哦 💗

    注册 登录
    回复
    • 在新帖中回复
    登录后回复
    • 从旧到新
    • 从新到旧
    • 最多赞同


    • 登录

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 最新
    • 标签
    • 热门
    • 用户
    • 群组