25 / 01 / 06
本文教程针对带iGPU核显的物理群晖,通过群晖VMM套件安装虚拟机,透传宿主机核显实现虚拟机硬解,与网络上铺天盖地的PVE宿主+核显直通虚拟化群晖VM不同,请注意区分。
Intel Xeon W-1290P ES (QTB3)处理器
UHD P630 iGPU核显(PCI设备ID为:0x8086:0x9BC6)
ASUS W480 Pro ACE主板
RR 25.1.0引导,模拟机型SA6400,7.7.2最新系统,official内核
飞牛OS v0.8.29
首先使用RR编译安装SA6400,进入系统后完成VMM套件的安装。
VMM中导入飞牛OS的镜像ISO,进行虚拟机安装,机型平台选择PC(i440fx),固件选择Legacy
正常图形化安装后,虚拟机重启,开机确认进入飞牛OS:
完成以上环境准备后开始核显直通步骤,首先重启物理机,确认BIOS中以下功能状态:
开启VT-d和VMX(用于虚拟化)
开启IOMMU支持
开启Above 4G Decoding和Resize BAR Support
关闭CSM,纯UEFI引导
关闭安全启动
在RR引导加入自定义cmdline:
intel_iommu=on
iommu=pt
vfio-pci.ids=8086:9BC6
(对应核显PCI设备的vendor ID: device ID)
在RR引导中确认模块里面选择了vfio相关的驱动
重新编译RR引导,启动物理机群晖系统,使用以下命令确认iommu已开启:
dmesg | grep -i iommu
dmesg | grep DMAR
使用以下脚本确认iommu分组情况
for iommu_group in $(find /sys/kernel/iommu_groups/ -maxdepth 1 -mindepth 1 -type d); do echo "IOMMU Group $(basename "$iommu_group")"; for device in $(ls "$iommu_group"/devices/); do echo -e "\t$(lspci -nns "$device")"; done; done;
以下为我的环境的iommu分组情况,可以看到核显是单独的一个组,直通时要求必须整个组一起直通,所以如果你的环境上核显所在分组有其他设备,请查询其他教程进行修改,例如grub 中设置 pcie_acs_override=downstream 或者 pcie_acs_override=downstream,multifunction:
加载vfio驱动
modprobe vfio-pci
解绑核显的i915驱动
echo 0000:00:02.0 > /sys/bus/pci/drivers/i915/unbind
注册vfio设备id
echo 8086 9bc6 > /sys/bus/pci/drivers/vfio-pci/new_id
绑定vfio驱动
echo 0000:00:02.0 > /sys/bus/pci/drivers/vfio-pci/bind
此时可以看到核显已经加载了vfio驱动
ash-4.4# lspci -s 00:02.0 -vvv | grep driver Kernel driver in use: vfio-pci
新建一个xml文件,写入以下内容,保存为igpu.xml
<hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio' /> <source> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </source> </hostdev>
查看当前群晖上运行的虚机
ash-4.4# virsh list Id Name State ------------------------------------------------------ 23 24ad9cfe-cc2a-4a74-a07e-40387e52c42e running 32 70a3a0cd-d7b3-4169-8c7f-e530f69f6908 running 33 b861aa8a-0a05-4752-9462-6e7d64626cfd running
向飞牛虚机添加核显,成功会回显Device attached successfully
virsh attach-device b861aa8a-0a05-4752-9462-6e7d64626cfd igpu.xml
进入飞牛虚机系统,查看核显设备是否识别,并安装intel-gpu-tools监控使用情况
sudo apt update && sudo apt install intel-gpu-tools
飞牛系统下识别核显正常,影视可以调用解码
解码时使用intel_gpu_top
命令可以查看到核显占用率上升,说明硬件调用成功
RR引导项目
Xpenology论坛
Jim在SA6400机型上的开发