一、软路由核显安装

安装完成PVE
启动PVE,进入WebUI

1、进入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
#重启服务后生效
systemctl restart pvedaemon.service
#重启
reboot

3、升级内核、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

4、编译i915-sriov驱动

安装git工具及dkms

apt install -y git build-* dkms

拖库

git clone https://github.com/strongtz/i915-sriov-dkms.git
cd i915-sriov-dkms
nano dkms.conf
#第一行改为PACKAGE_NAME="i915-sriov-dkms"
#第二行改为PACKAGE_VERSION="6.1"

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

ctrl+x y 回车保存退出

添加安装sriov模块

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

dkms add .
dkms install -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

5、设置直通和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

6、安装sysfsutils

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个核显即可。

7、将虚拟核显添加到虚拟机中

硬件内注意事项:
内存: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显卡即可。

8、配置虚拟机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 回车保存退出

二、Ubuntu核显驱动安装与配置调整

驱动安装的主要过程与PVE8.1下配置SR-IOV虚拟核显相似, 主要区别在于不在需要sysfsutils工具库安装以及对应的/etc/sysfs.conf配置.

系统信息查看

ubuntu22.04.3 LTS使用的内核为6.5.0-14, 与PVE8.1内核6.5.11-7版本非常接近

#系统
cat /etc/os-release

#内核
uname -ar

1.png

APT软件源索引更新与必要工具软件安装

apt update
apt install -y git build-* dkms # 必要编译工具安装

#可选
apt install -y vim

设置环境变量

KERNEL=$(uname -r); KERNEL=${KERNEL%-generic}
echo ${KERNEL}

2.png
核显虚拟化驱动项目的源码下载与配置修改(需要切换root执行)

#切换到root
sudo -i

#进入root家目录, 下载驱动项目源码
cd ~
git clone https://github.com/strongtz/i915-sriov-dkms.git
cd ~/i915-sriov-dkms

#修改项目配置

cp -a ~/i915-sriov-dkms/dkms.conf{,.bak}
sed -i 's/"@_PKGBASE@"/"i915-sriov-dkms"/g' ~/i915-sriov-dkms/dkms.conf
sed -i 's/"@PKGVER@"/"'"$KERNEL"'"/g' ~/i915-sriov-dkms/dkms.conf
# sed -i 's/ -j$(nproc)//g' ~/i915-sriov-dkms/dkms.conf

#查看修改后结果
cat ~/i915-sriov-dkms/dkms.conf

3.png

DKMS添加驱动源码管理并安装部署

#链接内核源代码,并检查状态。确认内核显示已添加。
cp -r ~/i915-sriov-dkms /usr/src/i915-sriov-dkms-$KERNEL
ls /usr/src # 查看

cd /usr/src/i915-sriov-dkms-$KERNEL
dkms add .
dkms status

#构建新内核并检查状态。验证是否显示已安装。
#安装内核扩展, 会触发MOK相关设置.
dkms install -m i915-sriov-dkms -v $KERNEL -k $(uname -r) --force -j 4
dkms status

4.png

构建安装内核扩展, 提示需要安全引导已启用,需要设置MOK,此处随意设置一个不太简单密码即可, 正常只会使用一次.
5.png
6.png
7.png
GRUB 配置

#解释: i915.max_vfs=7 表示最多虚拟成7个设备
cp -a /etc/default/grub{,.bak} 

#会在第10行追加内容: intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7
sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT/c\GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7"' /etc/default/grub

#更新引导
update-grub
update-initramfs -u -k all

8.png

系统重启与引导项MOK配置

执行到此, 应该对该虚拟机系统进行重启, 但需要额外强调下:

因为当前版本系统启用了安全引导, 因此必须在安装驱动后, 重启进入系统前, 在引导页面进行MOK相关配置. 只需在第一次重启配置成功, 之后不在需要设置.

开机启动/引导项MOK配置过程: Enroll MOK, Continue, Yes, , Reboot

重启机器, 在开机页面, 开机引导页面依次选择:

  • Enroll MOK, Continue, Yes, , Reboot 如果错过, 需要进入终端, 重新运行 mokutil ... 命令并再次重启。 在完成此设置之前,DKMS 模块不会加载。

Ubuntu重置MOK 参见: https://wiki.ubuntu.com/UEFI/SecureBoot
update-secureboot-policy --enroll-key

9.png
10.png
11.png
12.png
13.png

虚拟机配置调整

接下来我们需要调整虚拟机显示配置, 移除默认显示设别, 同时添加宿主机的虚拟PCI集显, 之后关闭系统, 使配置生效; 然后启动系统, 通过SSH远程登录系统, 通过如下命令行可以如下输出.

配置调整如图一/二

虚拟机关机后, 在重启,查看设备如图三

图一: 修改虚拟机配置2处
14.png
图二: 添加虚拟核显
15.png

ls /dev/dri

16.png

本文转载来自两位大佬文章,由于雨中漫步大佬的虚拟核显文章教程无法成功实现。而老高大佬的文章能够成功虚拟核显,于是将两篇文章合并进行整理收藏。

https://diyforfun.cn/907.html

https://zoe.red/2024/186.html

最后修改:2024 年 07 月 21 日
如果觉得我的文章对你有用,请随意赞赏