基于PVE8.0的SR-IOV配置
此文可以作為11代至13代英特爾CPU在PVE8.0中開啟SR-IOV的參考
硬件情況
主板&CPU:爾英12700H ITX
(如果想買爾英主板,ITX比ATX更好,BIOS更簡單)

什么是SR-IOV?這里引用Oracle的說明
SR-IOV 技術是一種基于硬件的虛擬化解決方案,可提高性能和可伸縮性。SR-IOV 標準允許在虛擬機之間高效共享 PCIe(Peripheral Component Interconnect Express,快速外設組件互連)設備,并且它是在硬件中實現的,可以獲得能夠與本機性能媲美的 I/O 性能。SR-IOV 規(guī)范定義了新的標準,根據該標準,創(chuàng)建的新設備可允許將虛擬機直接連接到 I/O 設備。
簡單來說,允許將一個PCIe設備虛擬化成多個設備,且每個虛擬化出來的設備都可以獲得與物理設備相近的性能
如果顯卡開啟SR-IOV就可以給多臺虛擬機同時配上顯卡
網卡之類的設備也支持SR-IOV,但是不如顯卡這么有用(畢竟虛擬化出來的網卡性能也沒差多少,還不需要自己安裝驅動)

前置條件
以下設置基于爾英12700H主板
1.BIOS中開啟VMX(VT-X)
Advanced --- CPU Configuration --- Intel (VMX) Virtualization Technology
2.開啟VT-D(位于顯卡設置中)
Advanced --- Graphics Configuration ?--- VT-d
3.開啟4G以上MMIO分配
Advanced --- Graphics Configuration --- Above 4GB MMIO BIOS assignment
4.關閉UEFI的安全啟動
其他諸如CPU超頻,XMP之類請自行設定
安裝PVE過程中無需其他操作,請按各類教程自行安裝
插播一條,UEFI編輯可以用這個GitHub庫,網頁上即可查看,搜索,修改BIOS的配置
GitHub庫 https://github.com/BoringBoredom/UEFI-Editor
在線編輯器 https://boringboredom.github.io/UEFI-Editor
爾英12代ITX主板BIOS需要的東西我已全部打包,其他BIOS可以按照教程操作
下載連接 https://xingnian.lanzoum.com/icMO615vlcmd
修改BIOS有風險!請小心操作,只看看還是沒有問題的
PVE安裝后可選內容
修改軟件源為國內源
8.0的PVE對應的Debian版本為Debian 12 Bookworm
可以直接搜索Debian 12替換國內源
這是我的/etc/apt/sources.list文件參考,其他的源基本用不到
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian/pve bookworm pve-no-subscription
最后一個源在安裝驅動時會用到,不然會無法搜索到pve頭文件

開始配置直通SR-IOV
1.修改GRUB
修改/etc/default/grub文件的GRUB_CMDLINE_LINUX_DEFAULT項,自行選擇文本編輯工具
quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7
添加以下內容,完成圖如下

2.安裝驅動
參照https://github.com/strongtz/i915-sriov-dkms
安裝headers,用于安裝驅動
apt update && apt install pve-headers-$(uname -r)
安裝驅動編譯需要軟件包
apt install build-* dkms
克隆GitHub庫
git clone https://github.com/strongtz/i915-sriov-dkms
替換字符串
sed -i 's/@_PKGBASE@/i915-sriov-dkms/;s/@PKGVER@/6.1/' i915-sriov-dkms/dkms.conf
移動到指定位置
mv i915-sriov-dkms /usr/src/i915-sriov-dkms-6.1
編譯并安裝驅動
dkms install --force -m i915-sriov-dkms ?-v 6.1
檢查一下驅動安裝情況
dkms status
正常情況下應該只有一行
i915-sriov-dkms/6.1, 6.2.16-3-pve, x86_64: installed
如果有多行or有報錯請移除錯誤的驅動(如果沒改命令應該不會變)
dkms remove i915-sriov-dkms/6.1
一次移除不干凈就用移除全部驅動(驅動名字自己改)
dkms remove i915-sriov-dkms/6.1 --all
3.更新 GRUB 與 initrramfs
update-grub && update-initramfs -u
4.安裝sysfsutils(這一步只有宿主機需要執(zhí)行!!!)
apt install sysfsutils
查找iGPU所在總線
lspci | grep VGA

我的GPU在00:02(我已經完成了驅動的安裝,還沒安裝的只會顯示出一個,而且不會有.1.2.3這些)
把這行命令中的00:02替換成自己的
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
5.確認驅動情況
重啟系統 后再次運行
lspci | grep VGA
如果已經出現了我上面的截圖說明已經配置成功
之后可以在虛擬機的硬件頁面中添加 Raw Device
注意,不要直通.0設備,即0000:00:02.0設備,不要勾選全部功能

虛擬機安裝驅動
Windows虛擬機是比較簡單的
創(chuàng)建虛擬機,系統機型選Q35,啟動選UEFI
進入系統后搞定遠程桌面之類的遠程控制軟件,最好先測試連接成功后再進行下一步
添加SR-IOV設備,重啟系統
勾選主GPU,PCIe

主GPU會屏蔽VGA(不屏蔽也用不了),PCIe只支持Q35機型(好像是只支持UEFI)
開啟后遠程連接,去英特爾管網下載最新的顯卡驅動
驅動安裝完成后進行一次重啟,這時PVE管理頁面的控制臺應該無效了
直接使用遠程桌面連接上系統,使用其他遠程控制軟件也可,但是可能會有分辨率的問題(600*480警告!)
可以使用虛擬顯示器解決
打開任務管理器,理論上應該出現了你的顯卡
可以打開一個視頻,看看顯卡是否正常工作

Linux虛擬機要稍微麻煩一點
我為了方便用的是Ubuntu23.04 內核版本6.2.0-27-generic
GitHub上說Debian系統會缺少一些必須的模塊,建議自己去看
內核版本在6.1-6.3都可以用這個操作,可以選擇自己升級內核,也可以去找支持其他內核版本的驅動
創(chuàng)建虛擬機,機型還是Q35,啟動也是UEFI
務必關閉PVE提供的UEFI的安全啟動!
然后操作與宿主機安裝SR-IOV相似
修改GRUB這一步,改成這樣
GRUB_CMDLINE_LINUX_DEFAULT="quiet i915.enable_guc=3"
跳過安裝sysfsutils這一步
也就是說需要執(zhí)行1235步
正常情況下應該可以顯示如下內容

安裝并運行vainfo[可選]
如果你的顯卡驅動已經正常工作,那么應該會顯示相似的內容,具體因解碼能力而定
如果報錯請重新檢查驅動安裝情況,驅動安裝/重裝后必須更新 GRUB 與 initrramfs
apt install vainfo && vainfo
