Intel 11(Tigerlake)/12/13/14代SRIOV vGPU虚拟核显直通应用

2024-05-17 10:22:10 17点赞 101收藏 20评论

1、i915-sriov作者已经半年左右停更了。
2、曾经在23年4月做过
n100机器的视频,其中使用的就是sriov核显演示。
(此文章更新了之前部分操作因为pve和内核的升级失效的问题)
3、有群友小伙伴建议我重新总结一下sriov虚拟核显的流程

总有小伙伴问两种核显直通的方式怎么选?直接放优缺点对比上来,各位小伙伴自行选择。

Intel 11(Tigerlake)/12/13/14代SRIOV vGPU虚拟核显直通应用

如有转载或部分引用请保留老高频道及视频连接,注明出处,谢谢合作!
转自爱折腾的老高博客https://diyforfun.cn/ 您的订阅点赞分享充电打赏(三连投币分享)是对老高最大的支持和鼓励!折腾的开心!开心的折腾!

以下适用于PVE8,以N100为例

在操作之前,首先检查BIOS中开启一下功能:

  • Intel VMX虚拟化技术

  • VT-d

  • SR-IOV

  • Above 4GB MMIO BIOS assignment

  • IOMMU

一、PVE安装:
安装完成。
启动PVE,进入WebUI

二、进入PVE后基础设置:
1、PVE8 换源(如已做过请忽略):
(1)国内清华源速度较快(南方可选择中科大较快)
将自带的源文件sources.list备份

cp /etc/apt/sources.list /etc/apt/sources.list_bak

编辑sources.list

nano /etc/apt/sources.list deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware

(2)编辑企业源,增加pve无订阅源

nano /etc/apt/sources.list.d/pve-enterprise.list

将其中原有的proxmox句首加# 注释掉,变为:#deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise

添加以下清华源:deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve bookworm pve-no-subscription

ctrl+x y 回车保存退出

添加pve无订阅源

nano /etc/apt/sources.list.d/pve-no-subscription.list

#粘贴以下pve无订阅源

deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bookworm pve-no-subscription

ctrl+x y 回车保存退出

(3)修复源401错误(如无401报错可忽略此条)

nano /etc/apt/sources.list.d/ceph.list

将其中原有的proxmox句首加# 注释掉,变为:#deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription

#添加中科大ceph源:

deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription

#更新

apt update && apt dist-upgrade -y

2、顺便把LXC更换为清华源:

#备份APLInfo.pm

cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back

#更换为清华源:

sed-i 's|http://download.proxmox.com|https://mirrors.tuna.tsinghua.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm

#重启服务后生效

systemctlrestart pvedaemon.service

#重启

reboot

三、升级内核、headers和firmware

在以上操作升级完成并重启之后,查看目前内核版本

uname -a

i915-sriov目前支持6.1~6.5内核,根据以上uname-a反馈信息,注意调整以下header安装与其相同的版本。

比如反馈的内核版本为:Linux pve 6.5.11-4-pve

安装header与以上反馈的当前内核版本相同,命令行如下:

apt update && apt install pve-headers-$(uname -r)

#注意如遇报错,可尝试直接执行apt install pve-headers-6.5(与uname-a返回的内核大版本号一致)

#重启

reboot

四、编译i915-sriov驱动

安装git工具及dkms

apt install -y git build-* dkms

拖库

git clone https://github.com/strongtz/i915-sriov-dkms.git

cd i915-sriov-dkmsnanodkms.conf

#第一行改为PACKAGE_NAME="i915-sriov-dkms"

#第二行改为PACKAGE_VERSION="6.1"

此处强迫症可以改为6.5,因向下兼容使用默认的6.1也可

ctrl+x y 回车保存退出

添加安装sriov模块

在i915-sriov-dkms目录下,运行

dkms add .

dkmsinstall -m i915-sriov-dkms -v 6.1

经过漫长等待完成后,检查安装是否成功,运行

modinfo i915|grep vf

反馈如下表示成功:

parm: max_vfs:Limit number of virtual functions to allocate. (0 = no VFs [default]; N = allow up to N VFs) (uint)

如无反馈安装不成功请删除此模块,重新安装,直至有以上成功反馈信息。

dkms remove -m i915-sriov-dkms -v 6.1

dkms install -m i915-sriov-dkms -v 6.1

五、设置直通和i915guc

nano /etc/default/grub

在quiet后添加intel_iommu=on i915.enable_guc=3 i915.max_vfs=7
改成

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on i915.enable_guc=3 i915.max_vfs=7"
ctrl+x y 回车保存退出

更新grub和initramfs

update-grub

update-initramfs -u

六、安装sysfsutils,对新手友好方便对VF核显数量设置(不建议使用开机自启脚本rc.local,增加不必要的风险)

apt install -y sysfsutils

添加以下VFs参数,N100建议最高3,可自定义数量,建议按需设置,设置1个时性能最强。

echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 3" > /etc/sysfs.conf

重启reboot

lspci检查直通的虚拟显卡,显示如下:
00:02.0 VGA compatible controller: Intel Corporation Device 46d1(物理核显)
00:02.1 VGA compatible controller: Intel Corporation Device 46d1(虚拟核显1)
00:02.2 VGA compatible controller: Intel Corporation Device 46d1(虚拟核显2)
00:02.3 VGA compatible controller: Intel Corporation Device 46d1(虚拟核显3)

注:物理核显02.0不能直通出去(可以映射给LXC),否则物理核显本体被独占,所有虚拟核显消失。

虚拟核显越多,性能越低。只需要1个时,虚拟1个核显即可。

七、将虚拟核显添加到虚拟机中,如Win10/11
硬件内注意事项:
内存:4GiB (或者更多)
CPU类别:host (硬解建议给全部核心,比如N100 4cores)
BIOS:OVMF(UEFI)
显示:默认标准 核显直通后可改为无(none) *注意选择无(none)时在虚拟机控制台界面会报错【VM 100 qmp command 'set_password' failed - Could not set password】这是正常的。如此长时间报错导致虚拟Win死机时,可以改为标准VGA(std)(见pve官方论坛)
机型:pc-q35
直通SRIOV核显:勾选主GPU、ROM-Bar,不要勾选所有功能

PCI设备虚拟核显:安装Win时建议不添加,Win装完关机添加虚拟核显时不要勾选主GPU,安装驱动并重启后不报错工作正常后,可以更改为主GPU,并且可以添加虚拟vGPU显示虚拟桌面(如VirtIO-GPU)。

注意添加PVE虚拟vGPU,可能导致流媒体软件时受到2个显卡影响,从而导致调用显卡渲染器失败。只需要删掉虚拟vGPU显卡即可。

八、配置虚拟机conf文件

因为Intel的驱动将pciid固定到02.0 ,我们使用02.1/2/3等sriov核显时,不能被正常驱动,即便是直通的sriov核显中勾选了PCI-Express显示正常驱动,但是也会因为pciid的原因导致一些软件工作不正常,比如流媒体Jellyfin Emby等无法硬解和转码。

我们需要在虚拟机conf中把直通的核显指定地址

nano /etc/pve/qemu-server/虚拟机序号.conf 添加: args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2

ctrl+x y 回车保存退出

Windows虚拟机

为了提高Win虚拟机的性能,建议安装VirtIO的全部驱动,iso下载地址:
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso


英特尔® Arc™ 和锐炬® Xe 显卡 (intel.cn)
https://www.intel.cn/content/www/cn/zh/download/785597/intel-arc-iris-xe-graphics-windows.html

参考引用:

https://diyforfun.cn/907.html
https://github.com/strongtz/i915-sriov-dkms

如有转载或部分引用请保留老高频道及视频连接,注明出处,谢谢合作!
转自爱折腾的老高博客https://diyforfun.cn/ 您的订阅点赞分享充电打赏(三连投币分享)是对老高最大的支持和鼓励!折腾的开心!开心的折腾!

展开 收起
20评论

  • 精彩
  • 最新
  • N100小主机,前面步骤都没问题,到了配置虚拟机conf文件这一步,添加那一行代码后就完全识别不到核显了。若不添加代码是可以正常识别核显并安装驱动,任务管理器也能看到显卡,但是播放4K视频cpu占用90以上并且掉帧,应该没开启硬解,另外偶尔重启后报错代码43。

    校验提示文案

    提交
    因为Intel的驱动将pciid固定到02.0 ,我们使用02.1/2/3等sriov核显时,不能被正常驱动,即便是直通的sriov核显中勾选了PCI-Express显示正常驱动,但是也会因为pciid的原因导致一些软件工作不正常,比如流媒体Jellyfin Emby等无法硬解和转码。

    校验提示文案

    提交
    你没明白我的意思 [苦恼] 。我完全按照你文章的步骤,前七步都没问题,到第八步后就出问题了。添加了代码:args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2,本来还能识别的核显反而识别不出来了。想问下你问题出在哪儿,如何排查?

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 支持一下老高

    校验提示文案

    提交
    感谢🙏

    校验提示文案

    提交
    收起所有回复
  • 非常有用。

    校验提示文案

    提交
    感谢支持

    校验提示文案

    提交
    收起所有回复
  • 第八条真的有点没看懂,既然用Sr-iov把核显拆给多个虚拟机了,又将02.0加入conf,那相当于某台机子直接占用了物理核显,那SR-IOV还有啥作用吗

    校验提示文案

    提交
    看视频里有讲,intel驱动比较傻,它驱动时默认只会在02找核显,找不到就错误代码43。args 添加的那条不是把宿主机的02给虚拟机,不是这个作用。而是把sriov虚拟出来的vf 显卡(它已经直通给虚拟win了)强制绑定给虚拟机核显02位置,这样intel驱动才能找到它,才不会错误代码43。

    校验提示文案

    提交
    没看到视频在那所以没理解。。。。我改天试试,我不是分配给win的 分配给lxc+群晖的,群晖现在硬解没问题 但是用OpenGL映射就会出问题,我改天把这个参数加上试试

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 大佬,我给ubuntu直通安装好驱动后只有720p分辨率,核心显卡33mhz什么问题?

    校验提示文案

    提交
    什么处理器?

    校验提示文案

    提交
    收起所有回复
  • nuc11,i5-1165G7参考您的文章和github原代码,modinfo i915|grep vf显示跟您一样但重启后没有虚拟显卡,应该就是不支持了吧 [喜极而泣]

    校验提示文案

    提交
  • 为什么我mstsc是黑屏的, i卡驱动显示此显示器未连接到英特尔显卡产品,显示器选virtioGPU可以vnc进去,但是完全不调用核显,卡卡的

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
101
扫一下,分享更方便,购买更轻松