主要参考及使用了 https://github.com/my33love/gk41-pve-ovmf 的教程和核显rom
我用的是马捷J4125千兆版,理论上适用别的型号的J4125主机
设置流程:
1、BIOS设置打开intel虚拟化技术(vt-x),打开vt-d
2、MAIN→Flash→Syslinux configuration→Unraid OS
内容设置为:
kernel /bzimage video=efifb:off vfio-pci.ids=8086:3185,8086:3198 disable_vga=1 modprobe.blacklist=i915,snd_hda_intel,snd_sof_pci,mei_me,snd_hda_codec_hdmi,snd_hda_codec_realtek
append initrd=/bzroot
3、SETTINGS→VM Manager→ADVANCED VIEW
→PCIe ACS override: Downstream
→VFIO allow unsafe interrupts: Yes
调整后保存
4、TOOLS→System Devices
→勾选 [8086:3185] 00:02.0 VGA compatible controller: Intel Corporation GeminiLake [UHD Graphics 600] (rev 06)
→勾选 [8086:3198] 00:0e.0 Multimedia audio controller: Intel Corporation Celeron/Pentium Silver Processor High Definition Audio (rev 06)
→BIND SELECTED TO VFIO AT BOOT
5、重启,进入BIOS设置,开启CSM,设置仅从legacy启动并强制所有设备从legacy启动,包括硬盘也从legacy模式启动
6、保存BIOS设置并启动,新建虚拟机
→Machine: Linux建议Q35,Windows建议i440-fx,版本用最新
→BIOS: SeaBIOS或者OVMF都行,建议SeaBIOS,OVMF也能用
→Graphics Card: 主显卡设置成VNC,次显卡设置成核显
→Graphics ROM BIOS: /mnt/user/isos/igd.rom(这里的路径写附件里解压出的igd.rom放置的路径)
→Sound Card:及其他设备自选
不建议安装Windows系统
至于代码
<qemu:commandline>
<qemu:arg value=’-set’/>
<qemu:arg value=’device.hostdev0.x-igd-opregion=on’/>
</qemu:commandline>
似乎不设置也没关系,如果启动报错就在xml编辑模式里加上,注意加上后如果回图形模式修改虚拟机设置,则代码会丢失,需要重新增加
7、启动,装系统,从VNC的方式进系统安装,装系统过程中HDMI不会有输出,装完系统后,系统识别出核显并打上驱动后即可输出显示。如果启动时报“invalid argument”错误,说明你不是从legacy模式启动,需要去BIOS里进行调整
核显的rom文件来自https://github.com/my33love/gk41-pve-ovmf
PVE下可参以上链接教程设置,按my33love的说法是可以PVE下直接直通核显输出显示装系统
直通核显能实现的最重要的事情是有可用的核显BIOS
目前直通声卡没有声音,lspci也找不到声卡,改过BIOS里声卡的相关设置也不行,暂时没解决方案,替代方案是直通个usb声卡给系统输出用,如果有伙计能把声音搞出来,麻烦回帖说下方法,我整合到教程内。
折腾出显示了想想也没什么直通需求,我的需求主要是远程jellyfin硬解,后续只会用docker里的jellyfin使用核显解码。以上送给有需要的伙计们。