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

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠

GPU技术交流论坛

  1. 主页
  2. 版块
  3. 知识交流
  4. 运维部署交流
  5. Linux i915 SR-IOV 驱动-英特尔核心显卡vGPU教程

Linux i915 SR-IOV 驱动-英特尔核心显卡vGPU教程

已定时 已固定 已锁定 已移动 运维部署交流
1 帖子 1 发布者 15 浏览 1 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • F 离线
    F 离线
    fushinn
    编写于 最后由 编辑
    #1

    Linux i915 驱动 (dkms 模块) 支持 SR-IOV 功能 (适用于 Linux 6.8-6.15(-rc5))

    警告

    此软件包是高度实验性的,仅建议清楚了解操作风险的用户使用。

    您需要同时在宿主机和客户机中安装此 dkms 模块!

    已测试的内核版本:6.12.10-zen1/6.11.9-arch1/6.10.9-arch1/6.9.10-arch1/6.8.9-arch1 (基于 ArchLinux)

    必需的内核参数

    intel_iommu=on i915.enable_guc=3 i915.max_vfs=7 module_blacklist=xe
    

    除 intel_iommu=on 外,其他三个参数可以通过 modprobe 方式应用,将以下内容添加到 /etc/modprobe.d/i915-sriov-dkms.conf:

    blacklist xe
    options i915 enable_guc=3
    options i915 max_vfs=7
    

    创建虚拟功能(VF)

    echo 1 > /sys/devices/pci0000:00/0000:00:02.0/sriov_numvfs
    

    在 Intel UHD Graphics 上最多可创建 7 个 VF

    Arch Linux 安装步骤 (测试内核 6.12.6-zen1)

    Arch Linux 用户可通过 AUR 获取:i915-sriov-dkms

    也可从发布页面下载软件包,使用 pacman -U 安装。

    PVE 宿主机安装步骤 (测试内核 6.8)

    1. 安装构建工具:apt install build-* dkms
    2. 安装指定版本的内核和头文件:apt install proxmox-headers-6.8 proxmox-kernel-6.8 (适用于未签名内核)
    3. 从发布页面下载 deb 包
      wget -O /tmp/i915-sriov-dkms_2025.05.18_amd64.deb "https://github.com/strongtz/i915-sriov-dkms/releases/download/2025.05.18/i915-sriov-dkms_2025.05.18_amd64.deb"
      
    4. 使用 dpkg 安装 deb 包:dpkg -i /tmp/i915-sriov-dkms_2025.05.18_amd64.deb
    5. 安装完成后,需要调整内核命令行参数:编辑 nano /etc/default/grub,将 GRUB_CMDLINE_LINUX_DEFAULT 修改为 intel_iommu=on i915.enable_guc=3 i915.max_vfs=7 module_blacklist=xe,如果已有其他参数则追加
    6. 执行 update-grub 和 update-initramfs -u 更新 grub 和 initramfs
    7. 可选:通过 proxmox-boot-tool 固定内核版本并更新启动配置
    8. 要启用 VF,必须设置 sysfs 属性。安装 sysfsutils 后执行 echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf,假设您的 iGPU 位于 00:02 总线。如果不是,请使用 lspci | grep VGA 查找 iGPU 所在的 PCIe 总线
    9. 重启系统
    10. 系统重新启动后,您应该能在 02:00.1 - 02:00.7 下看到 VF 数量(假设 iGPU 位于 00:02 总线)
    11. 您可以将 VF 直通给 LXC 或 VM。但切勿将 PF (02:00.0) 直通给 VM,否则会导致所有其他 VF 崩溃

    Linux 客户机安装步骤 (测试 Ubuntu 24.04/内核 6.8)

    需要在 Linux 客户机中运行相同的驱动程序

    1. 安装构建工具

      apt install build-* dkms linux-headers-$(uname -r) linux-modules-extra-$(uname -r)
      
    2. 下载并安装 .deb 包

      wget -O /tmp/i915-sriov-dkms_2025.05.18_amd64.deb "https://github.com/strongtz/i915-sriov-dkms/releases/download/2025.05.18/i915-sriov-dkms_2025.05.18_amd64.deb"
      dpkg -i /tmp/i915-sriov-dkms_2025.05.18_amd64.deb
      
    3. 更新内核参数
      编辑 nano /etc/default/grub,将 GRUB_CMDLINE_LINUX_DEFAULT 修改为 i915.enable_guc=3 module_blacklist=xe,如果已有其他参数则追加

      示例:

      GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on i915.enable_guc=3 module_blacklist=xe"
      
    4. 完成后,更新 grub 和 initramfs 并重启

      update-grub
      update-initramfs -u
      
    5. 虚拟机重新启动后,执行 dmesg | grep i915 查看内核是否识别到 VF。也可以通过 lspci -nnk 检查 xe 是否被正确屏蔽,确认 VF 使用的驱动程序

    6. 可选:安装 vainfo (apt install vainfo),执行 vainfo 查看 VAAPI 是否识别到 iGPU

    7. 如需 OpenCL 支持:

      apt install intel-opencl-icd
      apt install clinfo
      clinfo
      

    Windows 客户机 (测试环境:Proxmox 8.3 + Windows 11 24H2 + Intel 驱动 32.0.101.6460/32.0.101.6259)

    感谢 resiliencer 在 #225 中的贡献

    以下步骤可确保所有驱动版本的兼容性。理论上您可以安装任何版本而不会遇到烦人的 Code 43 错误

    提取显卡 EFI 固件

    1. 下载 UEFITools (Windows 使用 UEFITool_NE_A68_win64,也提供 Linux 和 Mac 版本)
    2. 下载主板 BIOS (我认为任何适用于 Alder/Raptop Lake 桌面平台的 BIOS 都可以)
    3. 解压 BIOS
    4. 使用 UEFITools (管理员身份运行) 加载 BIOS (通常是 .cap 文件)
    5. 选择 Action - Search 或使用快捷键 ctrl+F 搜索十六进制字符串 49006e00740065006c00280052002900200047004f0050002000440072006900760065007200
    6. 双击搜索结果,BIOS 中匹配项会高亮显示
    7. 右键点击高亮结果选择 Extract body...
    8. 保存文件,文件名和扩展名无关紧要。我使用 intelgopdriver_desktop 会保存为 intelgopdriver_desktop.bin
    9. 您可以校验文件哈希:
      1. Windows 终端命令:Get-FileHash -Path "path-to-rom" -Algorithm SHA256
      2. 适用于 UHD730 和 UHD770 桌面版:131c32cadb6716dba59d13891bb70213c6ee931dd1e8b1a5593dee6f3a4c2cbd
      3. 适用于 ADL-N:FA12486D93BEE383AD4D3719015EFAD09FC03352382F17C63DF10B626755954B
    10. 需要将此文件复制到 Proxmox 主机的 /usr/share/kvm 目录。我通过 NAS 上传后使用 wget 下载

    Windows 虚拟机创建

    1. 设置机器时,将 CPU 类型设为 host
    2. 提示:在首次设置界面按 Shift+F10 输入 OOBE\BYPASSNRO 可跳过 Microsoft 账户设置。虚拟机会重启,您可以选择"我没有 Internet 连接"选项来设置本地账户。或者,您也可以从 Windows VM 中移除网络设备
    3. 设置完成进入桌面后,启用远程桌面并确保本地账户用户有访问权限。此时可以关闭虚拟机
    4. 虚拟机关机后,编辑配置文件:
    # 直通 02.1 VF,指定 romfile。ROM 路径是相对的
    hostpci0: 0000:00:02.1,pcie=1,romfile=Intelgopdriver_desktop.efi,x-vga=1
    
    1. 在 Hardware 选项卡中,将 Display 设为 none
    2. 启动虚拟机。您将无法通过控制台访问,唯一方式是远程桌面。连接后从 Intel 下载显卡驱动,任何版本都应正常工作
    3. 安装过程中,当实际安装显卡驱动时可能会出现黑屏。此黑屏将持续到重启虚拟机。建议等待几分钟让其完成操作。您可以通过观察 Proxmox 中的 VM CPU 使用率来判断进度
    4. 重启后再次通过 RDP 连接。检查设备管理器确认结果。您应该看到 Intel 显卡已安装并正常工作

    CleanShot 2025-01-27 at 12 26 28

    另见:https://github.com/strongtz/i915-sriov-dkms/issues/8#issuecomment-1567465036

    手动安装步骤

    1. 安装构建工具:apt install build-essential dkms git / pacman -S base-devel dkms git
    2. 安装指定版本的内核和头文件:apt install linux-headers-$(uname -r) / pacman -S linux-headers
    3. 克隆仓库:git clone https://github.com/strongtz/i915-sriov-dkms.git
    4. 将模块添加到 DKMS:dkms add ./i915-sriov-dkms
    5. 使用 DKMS 安装模块:dkms install i915-sriov-dkms/2025.05.18
    6. 完成后,需要调整内核命令行参数:编辑 nano /etc/default/grub,将 GRUB_CMDLINE_LINUX_DEFAULT 修改为 intel_iommu=on i915.enable_guc=3 i915.max_vfs=7,如果已有其他参数则追加
    7. 执行 update-grub 和 update-initramfs -u / Arch Linux 使用 grub-mkconfig -o /boot/grub/grub.cfg 和 mkinitcpio -P
    8. 可选:使用 sysfsutils 在启动时设置 VF 数量。安装 sysfsutils 后执行 echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf,假设您的 iGPU 位于 00:02 总线。如果不是,请使用 lspci | grep VGA 查找 iGPU 所在的 PCIe 总线
    9. 重启系统

    卸载

    dpkg

    使用 dpkg -P i915-sriov-dkms 移除软件包

    pacman

    使用 pacman -R i915-sriov-dkms 移除软件包

    手动

    使用 dkms remove i915-sriov-dkms/2025.05.18 移除 dkms 模块

    致谢

    • @strongtz 创建初始 dkms 模块
    • @zhtengw 基于 linux-intel-lts (v5.15, v6.1) 重构,支持 v6.1~v6.4,参与 15+ 问题
    • @bbaa-bbaa 基于 mainline-tracking linux/v6.12 分支重构,支持 v6.8~v6.13,参与 10+ 问题
    • @pasbec 对仓库进行重大重构,支持 (v6.2, v6.5, v6.8),参与 20+ 问题
    • @shenwii 支持 (v6.7, v6.9)
    • @MotherOfTheGracchi 支持 v6.5.3
    • @michael-pptf 多次更新 README.md,参与 20+ 问题
    1 条回复 最后回复
    0
    回复
    • 在新帖中回复
    登录后回复
    • 从旧到新
    • 从新到旧
    • 最多赞同


    • 登录

    • 没有帐号? 注册

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