前言
PVE下开启SR-IOV虚拟化核显的教程非常多,但是很多坑和细节其他所谓的保姆级教程并不保姆,所以我们也来出一个陪伴级教程,以一个前瞻视角来开启这个功能,之后无论PVE更新到什么版本都通用。
仅只有支持SR-IOV的CPU才能开启此功能
此功能的好处就是能过多个虚拟机直通核显使用,但是缺点就是开启后就不能直通核显给windows的HDMI画面直出,只能通过远程桌面使用。
一、配置PVE的国内源
更换方法
备份源文件
cp /etc/apt/sources.list /etc/apt/sources.list.backup
添加国内源
有两段代码,第一段整段代码一次性复制
cat <<EOF > /etc/apt/sources.list
deb http://mirrors.ustc.edu.cn/debian/ bookworm main non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian/ bookworm main non-free-firmware
deb https://mirrors.ustc.edu.cn/debian-security bookworm-security main contrib
deb http://mirrors.ustc.edu.cn/debian/ bookworm-updates main non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian/ bookworm-updates main non-free-firmware
EOF
echo "deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
屏蔽企业源
sed -i 's/^deb https:\/\/enterprise.proxmox.com\/debian\/pve/#deb https:\/\/enterprise.proxmox.com\/debian\/pve/' /etc/apt/sources.list.d/pve-enterprise.list
屏蔽 Ceph 源
sed -i 's/^deb https:\/\/enterprise.proxmox.com\/debian\/ceph-quincy/#deb https:\/\/enterprise.proxmox.com\/debian\/ceph-quincy/' /etc/apt/sources.list.d/ceph.list
更新源
apt-get update
测试还会不会报错
已经没有报错信息了
概览里面注意,会有,未启用Proxmox VE存储库! 提示,这个忽略不管,因为企业源没用,被我们屏蔽了
二、降级内核版本
Q:为什么要降级内核?
A:因为当前我们使用的PVE版本是最新的8.2.4,内核版本为6.8.4,而使用到的i915-sriov-dkms项目作者最新只更新支持到的内核版本为6.5,所以需要进行降级内核操作。
1.首先查看当前版本及内核
输入以下命令可以查看到当前PVE版本为8.2.4,内核版本为6.8.4
pveversion
2.查看当前可以用的内核
proxmox-boot-tool kernel list
此时可以看到系统默认有一个6.5.13-5的内核版本,符合项目需求的6.5版本,但是i915-sriov-dkms项目作者目前依旧没有更新到这个版本,所以直接使用这个版本是无法编译成功的,所以我们还是需要继续降级内核操作
经过我测试6.5.13-1这个版本内比较稳定,所以我们降级为这个版本。
3.开始降级操作
更新源
apt update
查找可用内核
apt-cache search pve-kernel
安装此版本内核
apt install pve-kernel-6.5.13-1-pve
更新 Grub 引导配置
update-grub
三、固化这个版本的内核
proxmox-boot-tool kernel pin 6.5.13-1-pve
检查固化是否成功
proxmox-boot-tool kernel list
看到下图红框内容,代表固化成功
四.安装此版本内核的头文件
apt install pve-headers-6.5.13-1-pve
五、配置直通的基础环境
1.开启IOMMU直通功能
sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT/c\GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream i915.enable_guc=3 i915.max_vfs=7"' /etc/default/grub
2.增加虚拟化驱动,加载vifo系统模块
使用了我们VUM-PVE整合包的无需再配置这步
echo -e "vfio\nvfio_iommu_type1\nvfio_pci\nvfio_virqfd" | tee -a /etc/modules
3.屏蔽显卡驱动
这步是个巨大的坑,一定要注意,如果你之前配置过这步,进去全部删除,如果没有配置过就不管
nano /etc/modprobe.d/blacklist.conf
4.更新Grub引导配置和initramfs
update-grub
update-initramfs -u -k all
5.重启PVE
reboot
6.重启后检查固化降级的内核是否生效
uname -r
已经成功以6.5.13-1内核版本启动PVE,固化成功
七、配置开启SR-IOV虚拟化核显
1.安装编译环境依赖
apt-get install --no-install-recommends git mokutil sysfsutils -y
apt install --reinstall dkms -y
2.添加一个临时的KERNEL环境变量
KERNEL=$(uname -r); KERNEL=${KERNEL%-pve}
3.克隆项目
项目地址:https://github.com/strongtz/i915-sriov-dkms.git
git clone https://github.com/strongtz/i915-sriov-dkms.git
cd i915-sriov-dkms/
sed -i 's/"@_PKGBASE@"/"i915-sriov-dkms"/g' ~/i915-sriov-dkms/dkms.conf
sed -i 's/"@PKGVER@"/"'"$KERNEL"'"/g' ~/i915-sriov-dkms/dkms.conf
4.检查dkms.conf 配置文件中是否配置正确的内核版本和i915-sriov-dkms
cat ~/i915-sriov-dkms/dkms.conf
5.创建目录的符号链接到/usr/src/目录下
dkms add .
6.进入到链接到的目录
cd /usr/src/i915-sriov-dkms-$KERNEL
7.查看已安装的 DKMS 模块及其状态
dkms status
8.开始编译内核加入i915-sriov驱动
dkms install -m i915-sriov-dkms -v $KERNEL -k $(uname -r) --force -j 1
编译过程时间稍长,需要等待
再次检查编译是否成功
dkms status
9.查询当前核显ID
lspci | grep VGA
这里显示00:02.0,完整的PCI地址0000:00:02.0
10.修改下面代码的核显ID和虚拟核显数
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
# 0000:00:02.0 这个修改为你的ID
# sriov_numvfs = 7里面的7修改为其他值,不要超过7
11.重启PVE
reboot
12.重启完检查是否开启成功
lspci | grep VGA