PVE通过i915驱动直通Intel核显
喝红茶聊技术
编辑于 2025年08月04日 09:27

没有废话,直接开始!!

  • Step0 准备工作

    •  打开BIOS中的 VT-d(此功能没有麻烦点赞看看别的)SR-IOV(此功能没有不能虚拟多个子显卡)功能

    • 禁用安全启动:BIOS设置来禁用安全启动!!!

  • Step1 克隆项目仓库

    • apt-get update #更新软件列表

    • apt install git    #安装git克隆工具

    • cd /home

    • git clone https://github.com/strongtz/i915-sriov-dkms.git       #克隆i915驱动

克隆玩后的目录树

  • Step2 安装编译工具

    •  命令行如下:apt install build-* dkms

  • Step3 安装所需版本的内核和头文件

    • 确认PVE版本:uname -r

此处版本号:6.8.4-2-pve 后续命令需要与之相同

  • 安装内核和头文件,注意版本号与上图对应:apt install proxmox-headers-6.8.4-2-pve proxmox-kernel-6.8.4-2-pve

  • Step4 切换到克隆存储的主目录并生成框架

    •  命令行如下:     cd /home/i915-sriov-dkms     dkms add. #此处注意命令行中的"."

  • Step5 执行命令,安装i915驱动dkms install -m i915-sriov-dkms -v 2024.09.21 --force 

  • Step6 重新修改内核

    • 命令行如下:nano /etc/default/grub

    • 修改内容如下: GRUB_CMDLINE_LINUX_DEFAULT 的值变更为:quiet intel_iommu=on iommu=pt i915.enable_guc=4 i915.max_vfs=7

注意引号机其他符号均为半角

  • quiet这个参数告诉内核在启动时不要显示太多的信息,即静默启动。这样在启动过程中就不会显示过多的内核消息,使得启动过程看起来更简洁。

  • iommu=pt这个参数启用了Passthrough模式的IOMMU(输入输出内存管理单元)。IOMMU是一种硬件技术,用于改善虚拟化环境中设备直通的效率,允许虚拟机直接访问物理设备,从而提升性能。pt代表“passthrough”,即直通模式。

  • intel_iommu=on这个参数专门针对Intel处理器,启用VT-d技术,即Intel的IOMMU技术。这允许虚拟机直接访问PCI设备,提高了虚拟化的性能和安全性。

  • i915.enable_guc=4这个参数与Intel的集成显卡有关。i915是Intel集成显卡的内核驱动程序,enable_guc(Graphics Unit Control)设置为3通常意味着启用了GUC子系统,并且配置为使用所有可用的资源。GUC可以提高显卡的性能,特别是在虚拟化环境中。

  • i915.max_vfs=7这个参数同样与Intel的集成显卡有关,它设置了最大虚拟函数(Virtual Functions)的数量。在虚拟化环境中,这可以允许多个虚拟机共享同一个物理显卡,每个虚拟机使用一个虚拟函数。


主板不支持SR-IOV的此步无法激活多个子通道

  • Step7 为了启用VFs,需要配置sysfs


  • 内核6.16.2的需要额外执行以下命令行:update-grubupdate-initramfs -u


  • 安装 sysfsutils,命令行如下:apt install sysfsutils

  • 然后修改sysfs.conf文件的配置信息

  • 需要先确认显卡的地址通道,命令如下:lspci | grep VGA

通道地址:  00:02.0  需要与后续命令匹配

  • 执行命令行:echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf


  • Step8 重启,直通成功支持SR-IOV的可以看到显卡地址下有多个子通道这样就可以通过添加主通道和子通道给不同虚拟机和LXC容器了。我的主板不支持SR-IOV,所以没有截图了。。。祝各位小伙伴都顺利直通显卡!!!

完结撒花

项目驱动:可在github上搜索strongtz/i915-sriov-dkms

抢救内核小技巧:

dpkg --get-selections |grep kernel                #查询内核

apt remove pve-坏内核                                #删除对应坏内核

apt install pve-kernel-6.8.12-2-pve               #安装对应版本内核

update-grub                                                  #更新引导

然后重启。。。