200字
PVE
2025-11-15
2025-11-15
1111

系统

cat /etc/os-release

内核

uname -ar

apt update apt install -y git build-* dkms # 必要编译工具安装 apt install pve-headers-$(uname -r)

apt install -y vim #(可选)

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

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

链接内核源代码,并检查状态。确认内核显示已添加。

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

构建新内核并检查状态。验证是否显示已安装。

dkms install -m i915-sriov-dkms -v $KERNEL -k $(uname -r) --force -j 4 dkms status

为以防万一,我们需要加载 DKMS 密钥,以便内核加载模块。运行以下命令,然后输入密码。

该密码仅用于 MOK 设置,重启主机时会用到, 再之后就不需要密码。

该密码不必与 root 账户使用的密码相同。

mokutil --import /var/lib/dkms/mok.pub

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

* Enroll MOK, Continue, Yes, <password>, Reboot

如果错过, 需要进入终端, 重新运行 mokutil ... 命令并再次重启。

在完成此设置之前,DKMS 模块不会加载。

Ubuntu重置MOK

参见: https://wiki.ubuntu.com/UEFI/SecureBoot

update-secureboot-policy --enroll-key

解释: i915.max_vfs=7 表示最多虚拟成7个设备

cp -a /etc/default/grub{,.bak} sed -i '/^GRUB_CMDLINE_LINUX_DEFAULT/c\GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7"' /etc/default/grub update-grub update-initramfs -u -k all

工具软件安装

apt install sysfsutils -y

lspci | grep VGA

在本例中,我使用的是 00:02.0。要验证文件是否已修改,请 cat 文件并确保已修改。

此处根据需要修改具体的虚拟设备数(一定小于上面设置的i915.max_vfs值)

示例设置2 (后续计划为2台虚拟机直通)

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

此处结果应该从1条变成3条(新增2个虚拟集显/显卡)

lspci | grep VGA

#会显示次要 PCIe ID 1-2 dmesg | grep i915

评论