UNRAID折腾记:唯一核显直通+HDMI直出

harryshharrysh 网络技术 2024-03-17 62 0

UNRAID折腾记:唯一核显直通+HDMI直出

升级了14代CPU,老的9代CPU想发挥点余热,于是翻出了一些存储设备,组了一台All in One主机。在唯一核显直通直出方面,走了一些弯路。现在把一些收获和感悟记录一下

机型配置主要包括,intel i5-9500T(6核6线程、35W低功耗),带UHD630核显,B360芯片的itx主板,集成I219-V千兆网卡


UNRAID折腾记:唯一核显直通+HDMI直出
Unraid虚拟机下Win10直出HDMI显示器,流畅播放4K/120Hz高码率视频


主要难点:

1、唯一核显:网上大部分资料都是独显+核显,或者唯一独显的,唯一核显的方案比较少

2、核显声卡:集成的声卡与集成网卡捆绑在同一IOMMU设备组上,无法单独直通

3、唯一网卡:介于第2点原因,如果您只有唯一网卡,是不太可能用比较简单的方法实现直通的,(如果您足够专业,相信您也不缺再加一块),所以我的方法是借用主板上的M.2的WIFI接口,加了一个2.5G的Realtek RTL8125B网卡(大约70元),Unraid可以直接识别。不用intel I225-V3或I226的原因有两个,一个是卡高超高,高过原装的屏蔽罩,另一个是断流问题至今仍有发生。在试验阶段,我还用过USB网卡的方案,也能实现。

4、天书代码:网上很多教程只说了要添加代码,原理是什么没有说,容易弄糊涂,毕竟机器硬件千差万别,我的万金油对您来说可能就是卡点,出现问题就很难排查

==============================

用Unraid.USB.Creator制作好U盘系统后,将文件夹“EFI-”改为“EFI”(将-去掉)

否则UEFI启动的机型无法加载

==============================

Unraid系统U盘里面,config文件夹下的go文件

(没有文件名,用记事本就能打开,保存成txt文件,再把扩展名.txt删除,覆盖原文件即可)

添加以下内容:

#!/bin/bash

# Start the Management Utility

/usr/local/sbin/emhttp &

echo 0 > /sys/class/vtconsole/vtcon0/bind

echo 0 > /sys/class/vtconsole/vtcon1/bind

echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind

modprobe i915

chown nobody:users /dev/dri

chmod 0777 /dev/dri/*

(这里大致的作用是开启核显及其硬件解码,如不添加,后需直通HDMI进入Windows后可能会非常卡)

==============================

SETTINGS下面,VM Manager里面:

PCIe ACS override改为Both

(这里的作用是便于iommu将每个设备单独分组)

VFIO allow unsafe interrupts改为Yes


UNRAID折腾记:唯一核显直通+HDMI直出


==============================

MAIN下面,修改Flash

Unraid OS里面改为:

kernel /bzimage

append intel_iommu=on iommu=pt vfio_iommu_type1.allow_unsafe_interrupts=1 vfio-pci.ids=8086:3e92,8086:a348,8086:a308,8086:a323,8086:a324,8086:15bc modprobe.blacklist=snd_hda_intel,snd_hda_codec_hdmi video=efifb:off,vesafb:off pcie_acs_override=downstream,multifunction initrd=/bzroot


UNRAID折腾记:唯一核显直通+HDMI直出
UNRAID折腾记:唯一核显直通+HDMI直出


其中,vfio-pci.ids=8086:3e92,8086:a348,8086:a308,8086:a323,8086:a324,8086:15bc这句需要更具实际需要直通的硬件进行修改,一般包括核显显卡和核显声卡

设备ID可以在TOOLS下面的System Devices里面找到

(这里的作用是,屏蔽掉这几个相关的设备,将显示功能加入黑名单,让Unraid不可用,那么其他的虚拟机就可以直接使用,也就是直通了)

注意

有可能出现核显声卡接在南桥芯片上的情况,这时Unraid 会将所有通过南桥芯片的硬件分在同一个组(可能包括网卡,系统管理总线、串行控制总线等)。

这时,如果需要直通核显声卡,必须直通全组的硬件,否则,后需添加声卡的时候,不能选择核显声卡。

如果核显声卡和板载网卡在同一组内,则不能将板载网卡作为Unraid的登录端,否则将板载网卡的ID加入vfio-pci.ids后,Unraid系统自身将无法启动。

这时候,须在启动选择的时候,切换为Unraid OS GUI Mode等其他未经修改的模式,即可成功启动。启动后应及时修改Unraid OS的内容。


UNRAID折腾记:唯一核显直通+HDMI直出


==============================

【重启】

==============================

TOOLS下面,System Devices里面:

VGA compatible controller

Audio device

这两项必须勾选,其余同组内有关联总线的设备也会被勾选

==============================

【重启】

==============================

在VMS下添加虚拟机

经实测,在本机上,主板的CSM开启与否,与虚拟机的模式并无关联,也就是存储UEFI+PCI设备UEFI,存储UEFI+PCI设备Legacy,存储Legacy+PCI设备Legacy,对实现直通直出并无影响。因未测试其他系统,比如10代以上intel或者AMD设备,不敢打包票,至少在我的机子上,以上三种情形均做了测试,使用无异。

另,有博主说OVMF模式一定无法直出HDMI,但我实测可以,而且速度优于SeaBIOS,笔记开始的那张照片就是在OVMF模式下直出HDMI的,流畅输出4K/120Hz高码率视频,显卡和CPU占用率均不高。

Machinei440fx

(实测Q35模式下,只能远程登录,HDMI无任何显示)

BIOSSeaBIOSOVMF均可

(两种模式在pci设备的虚拟化id上可能会有细微区别,个人主观感受OVMF的流畅度更高一些,原因暂不清楚)

USB Controller3.0(qemu XHCI)

初始安装时,显卡选Virtual,声卡不选


UNRAID折腾记:唯一核显直通+HDMI直出


注意务必使用x64的系统,实测Win10 x86无法安装显卡驱动,也无法HDMI直出,但可以远程登录。另,CPU效率极低,开应用等待时间很长,原因暂不清楚。】

==============================

如需直通硬盘

打开控制台,输入命令:

cd /dev/disk/by-id

ls

找到里面ID和为挂载硬盘相同ID的路径记录下来

在Primary vDisk Location里面选Manual,在右侧填入磁盘路径,以/dev/disk/by-id/开头,后面接硬盘ID

如:

/dev/disk/by-id/ata-HFS128G39TND-N210A_ES81N62061050271G

/dev/disk/by-id/ata-Samsung_SSD_860_EVO_M.2_250GB_S413NX0KC02402P

/dev/disk/by-id/nvme-WDC_PC_SN530_SDBPMPZ-512G-1101_21080V801424

/dev/disk/by-id/ata-WDC_WD40PURX-64AKYY0_WD-WX32D918JNL2

磁盘总线选SATA(NVME硬盘也要选SATA,暂未测试是否会限速)

==============================

如虚拟机启动后无显示,可在<os>里面可添加如下内容:

<bootmenu enable='yes'/>

但这条内容也可能会影响启动速度,如无特别需要,不要添加


UNRAID折腾记:唯一核显直通+HDMI直出


==============================

安装完系统后,系统更新设为暂停7天(以免网络污染),在设备管理器里打上驱动

如需远程登录,还需设置用户密码(没有密码远程无法登录),并将系统属性-远程-远程协助/远程桌面都打开,记下IP地址或在路由器后台查询

把硬件时间当作UTC(否则Windows内时间显示会不正确)

打开CMD,输入以下内容后回车

Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

之后将Windows关机

==============================

进入虚拟机Edit

Graphics Card改为核显

Graphics ROM BIOS填写vBIOS文件

【特别注意:我试过网上搜到的这个万能rom在我的电脑上可行,文件名是vbios_gvt_uefi.rom,如有需要可以在网上搜索下载。恕不能在此提供,因为不适当的vbios有一定几率会导致您的显示器损坏

Sound Card选择核显声卡


UNRAID折腾记:唯一核显直通+HDMI直出


UPDATE后,再次进入虚拟机Edit,右上角FORM VIEW打开,进入代码模式

显卡描述后面添加:

multifunction='on'

即原<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>

改为:

<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>

注意:如果BIOS选的是SeaBIOS,则要做如下修改;选OVMF的不能修改,否则声卡失效

核显声卡改为跟显示相同的slot,function改为不同的

即原<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>

改为:

<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>

这个操作的意义是,把核显作为多功能设备(multifunction),并将核显声卡绑定在同设备位置(slot)下,作为不同的功能(function)


UNRAID折腾记:唯一核显直通+HDMI直出



注意:如果BIOS选的是OVMF,会有如下情况;选SeaBIOS一般不会出现

有的主板设备不支持reset,在虚拟机启动后,日志会有提示

qemu-system-x86_64: vfio: Cannot reset device 0000:00:1f.3, no available reset mechanism.

这种情况并不影响声卡的的实际使用,无视即可

==============================


==============================

可能有用的链接

==============================


授时服务器:

ntp.tencent.com

ntp.aliyun.com

time.edu.cn

ntp.ntsc.ac.cn


APPs应用商店加速插件:

http://plg.unraid.site:8/plg/UNRAID_Modify.plg


Hotplug USB插件:

https://github.com/dlandon/libvirt.hotplug.usb/raw/master/libvirt.hotplug.usb.plg


中文语言包:

https://raw.githubusercontent.com/unraid/language-templates/master/limetech/lang-zh_CN.xml

发布于 2023-11-04 19:40・IP 属地广东 ,


版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权本站发表,未经许可,不得转载。

喜欢0评论已闭
请先 登录 再评论,若不是会员请先 注册