分享

UnRaid利用iGVT

 馆长驾到 2023-01-25 发布于山东

文章目录


0.前言

入坑UnRaid已经有很长一段时间了,其间的学习和折腾确实耗费了很多精力,也爬了很多官网的英文说明及官方论坛,让我对这个Nas系统有了一些初步的了解。而搭建Nas的目的——无非就是作为一个长期在线的文件、影音服务器,如果能同时作为一台偶尔使用的台式电脑,上上网、写写资料,就不用额外再买一台主机了(省钱省电……)


接下来,笔者就以我的UnRaid6.92(花了几百大洋购买了正版授权)为例,安装intel核显虚拟化插件Intel GVT-g,从而实现UnRaid宿主机外接显示器、Docker应用调用核显解码、虚拟机系统外接显示器同时生效,真正做到省电(核显与独显相比功耗要小不少)、省钱(不用单独再购置核显)、省空间(再也不用为itx机箱的狭窄内部空间操心装不下额外的显卡了)。

1.准备工作

要实现上述功能,你需要先准备好如下软硬件产品:

1.1.1台用intel处理器的组建的Nas主机(UnRaid系统必须是6.9.2及以上)

要求是5—10代的桌面版cpu(集成核显),或者E3-v4, E3_v5, E3_v6, E-2xxx, W-12xx, W10xxx服务器cpu。

1.2.1台或多台显示器

1.3.1个DisplayLink转接器(USB3.0转HDMI

特别注意:
如果虚拟机不需要外接显示器(如windows只通过远程桌面方式操作),而只调用虚拟显卡作视频处理是不需要单独购置这个DisplayLink转接器的。
这个转接器是必须要有DisplayLink标志的(大约230~300元之间),我之前以为只要是个usb(或Type-C)转HDMI转接卡就可以了,结果是白白浪费了我几十大洋。比如我我最后买的是下图中的样式(淘金币抵扣后花了228.25元):
DisplayLink转接卡

2.手把手教程

2.1.Nas组装.UnRaid系统安装(略,注意系统版本务必是6.9.2及以上)

2.2.安装使用Intel GVT-g插件之前的注意事项

2.2.1.主机Bios设置

****将igpu设置为主显卡(primary display),以确保核显IGPU能保持在激活状态,并将显示器连接在此核显的输出接口上(或者先插上一个HDMI显卡欺骗器——特别是在你的Nas中除了核显外还额外添加了独显时。我只有cpu自带核显,所以我一直用HDMI线与我的显示器直接连接的)

****将为核显igpu分配的显存设置项aperture size的数值调大(越大就可以将核显分配给更多的虚拟机使用,虚拟机也可以使用更高的分辨率),下图是Intel GVT-g插件对不同显存大小支持的模式的示例:
在这里插入图片描述

2.2.2.关闭集成显卡的硬件加速功能

如果之前在 /boot/config/go 中手动配置过开启集成显卡IGPU硬件加速功能的相关命令,比如类似
modprobe i915 && chmod 777 /dev/dri/*,需要先删除掉这些命令,新版插件会自动做好相关配置。

2.2.3.解除与核显直通的有关配置

****在VFIO配置(通过VFIO-PCI CFG插件或【工具】→【系统设备】勾选方式)中取消对核显这个设备的勾选
在这里插入图片描述

****在syslinux.conf中删掉与核显直通绑定有关的参数(可在UnRaid【主界面】→【引导设备】→【Flash】→【Syslinux 配置】→【Unraid OS】或【Unraid OS GUI Mode】中修改)

2.2.4.重启Nas

2.3.安装Intel GVT-g插件

在应用(Apps)中搜索Intel GVT g,会找到ich777开发的beta版插件,选择安装即可。
在这里插入图片描述
更多关于此插件的说明,可以参考开发者ich777在UnRaid官方论坛中的专题解说,并且也有英文版的手把手教程:[PLUGIN] INTEL-GVT-G

2.4.安装虚拟机(以Windows为例)

2.4.1.UnRaid中添加虚拟机

在这里插入图片描述
在【虚拟机】中点击【添加虚拟机】按钮,在下一步的界面中选择Windows系统(比如Windows10),然后照下图样式进行设置:
在这里插入图片描述

友情提醒:
****虚拟机模式必须选择Q35(最好选择最新的版本),windows虚拟机默认的i440fx模式时不能打开核显虚拟化功能的;
****BIOS选择OVMF(相当于UEFI模式)、SeaBios(相当于传统Bios)均可,如果出现错误代码43则改成OVMF——因此我建议直接优选OVMF
****VirtIO驱动选择你之前已经下载好的windows虚拟机驱动程序包(如上图所示的/mnt/user/isos/virtio-win-0.1.190-1.iso),如果此前你没有下载,则在【设置】→【虚拟机管理器】中选择下载(推荐选择最新版),你也可以从官网下载之后再上传至UnRaid默认驱动下载目录/mnt/user/isos/
在这里插入图片描述

****先用加载vnc虚拟显卡以实现系统安装和一系列基础设置

2.4.2.启动虚拟机并安装Windows

这一步与常规无异,为了更好的操控虚拟机系统,可以开启RDP远程桌面访问(详见2.7步骤)。

2.4.3.安装驱动程序

Windows系统安装好后,需要安装网卡、显卡等驱动程序。还记得上一步中友情提醒:中添加虚拟机时选择的驱动程序包吗?Windows虚拟机安装完成并启动后会自动挂载此驱动程序包为一个虚拟光驱,比如我的(CD驱动器(F:)virtio-win-0.1.190):
在这里插入图片描述
可以在设备管理器(右键【开始】菜单→【设备管理器】可快速打开)中找到没有安装好驱动的硬件(网卡、显卡等),然后浏览到驱动虚拟光驱安装驱动;或者直接打开驱动虚拟光驱,运行virtio-win-gt-x64.msi(64位系统)、virtio-win-gt-x86.msi(32位系统)和virtio-win-guest-tools.msi,安装好后像下图这个样子(借用插件作者的截图):在这里插入图片描述

2.5.UnRaid加载虚拟化的核显给虚拟机

****首先,必须关闭欲加载虚拟化核显的虚拟机(比如上一步已经安装好驱动的WIndows10虚拟机)。
****在UnRaid中找到Intel-GVT-g插件设置页,选择想要的图像模式(i915-GVTg_V5_1----5),以及想分配虚拟化核显的虚拟机(比如上一步已经安装好驱动的WIndows10虚拟机),如下图(借用插件作者的截图):
在这里插入图片描述

2.6.在虚拟机中安装好虚拟化核显驱动

****重新开启虚拟机,在虚拟机设备管理器中可以看到如下虚拟化核显设备如下图所示(借用插件作者的截图):
在这里插入图片描述
****图中的【Microsoft Basic Display Adapter】(Microsoft基础显示适配器)就代表虚拟核显vGPU,接下来给它安装驱动程序。
****到intel官网下载对应的驱动程序安装即可。我的是10900T处理器,所以我下载的是Intel® Graphics – Windows* DCH Drivers(每个驱动下面都有详细说明——适用于哪些CPU,对应下载即可)
****驱动程序安装好后,设备管理器中就正确识别你的虚拟核显了,如下图所示(借用插件作者的截图):
在这里插入图片描述
****图中显示的Intel® UHD Graphics 630即表示系统已经正确加载虚拟化核显并成功安装驱动了,此时再次重新启动此虚拟机。

2.7.开启Windows虚拟机RDP远程桌面访问

在系统设置中按如下数字编号顺序找到远程桌面开启,同时选择或添加可以远程桌面访问此虚拟机的用户,并在路由器中将此虚拟机添加到固定ip列表,或在此虚拟机的网络设置中调整为静态ip(比如192.168.1.222),则在另一台Windows系统中就可以启动远程桌面链接程序输入ip地址,然后输入用户名和密码即可以远程桌面方式操控虚拟机了!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看虚拟机虚拟核显工作与否的方法
在虚拟机中运行任务管理器,然后在【性能】(Performance)菜单下即可看见GPU的负载情况,下图显示为4%即以证明成功开启并运行正常,虚拟化核显的硬件加速功能完美开启(Have fun!)
在这里插入图片描述

2.8.让虚拟机输出图像到显示器

实际上,你能一步步看到这里且成功的部署了的话,那已经是足够的有耐心和成就感了!本来到此就结束折腾了,但想来想去,总不能还要开着一台计算机来远程控制这个虚拟机吧?(当然,作为1台7×24小时在线的Nas虚拟的桌面系统,当不在Nas所在地时通过远程桌面方式访问操作还是很有意义的事。)有没有什么办法让其成为一台真正意义上的台式机,加上键鼠、接上显示器、按下电源按钮就可以像物理机一样启动并显示图像、交互操作呢?经过我无数次的小白鼠般的试验,还真的成功了,就让我们再一次进入下一阶段的教程吧(没有此需求的读者可以不用往下看了)!

2.8.1.在虚拟机中添加外接显示设备

****首先关闭此虚拟机
****在Nas的USB接口上插上1.3步骤准备好的DisplayLink转接器(相当于一个外置显卡)
****修改此虚拟机设置,在底部附近的【USB设备】当中添加Displaylink转接器(比如我的是DisplayLink USB3.0 Display),同时添加无线键鼠接收设备(比如我的是Logitech Unifying Receiver),如下图所示:
在这里插入图片描述
需要注意的是:当选中无线键鼠接收器并应用后,UnRaid系统就不再对此键鼠的动作作出反应了,相当于直通给了虚拟机。

关闭并重新启动虚拟机,在UnRaid虚拟机页面以vnc远程方式操作此虚拟机完成以下步骤:(RDP远程桌面方式是不能修改显示设置的)

2.8.2.在虚拟机中添加驱动

****下载并安装displaylink驱动:到displaylink官网地址2) 下载,会得到一个类似DisplayLink USB Graphics Software for Windows10.2 M0-EXE的驱动程序文件,运行安装即可。
****查看设备管理器的驱动程序是否安装完毕并正确识别,如果如下图所示则全部成功:
在这里插入图片描述

2.8.3.虚拟机显示设置

特别提醒:这一步的设置顺序很关键,稍有不慎
****首先查看虚拟机的显卡编号及状态:在【设置】→【系统】→【显示】→【高级显示设置】页面可以看到如下的信息:
在这里插入图片描述
在这里插入图片描述
从上面的截图中可以看到,该虚拟机目前共连接了3个显示器:
——显示器1:QXL0001(虚拟显示器)连接的是Red HatA XL显卡(vnc虚拟显卡);
——显示器2:通用非即插即用监视器连接的是虚拟化核显(虚拟化直通)UHD630;
——显示器3:T4000 HDMI(物理显示器)连接的是DisplayLink转接显卡
我们需要做的就是将显示器3作为主显示器,并复制显示器2和3上的桌面,我设置应用后最终显示是【将桌面扩展到此显示器】而非【复制2和3上的桌面】
在这里插入图片描述
至此,如果你的显示器和displaylink转接器是连接好的话,你的显示器应该有画面输出了。

2.9.为UnRaid添加开机按钮启动虚拟机功能

如果我们的虚拟机还要通过另一台计算机,首先登录UnRaid再在虚拟机页面中启动虚拟机的话,想想都觉得繁琐,有没有什么好的办法,按一下开机按钮就自动开启指定的虚拟机,并将画面输出到连接的显示器上,作为一台真正的桌面计算机来使用呢?
还真有这样的大佬为我们开发了一款插件UNRAID Modify,不过暂时还不能在应用(Apps)市场中直接安装,可在【插件】→【安装插件】中输入http://plg.:8/plg/UNRAID_Modify.plg这个地址手动安装,也可以先离线下载到本地再上传至UnRaid中相应文件夹手动安装。安装好后,打开插件按下图选择想要用开机按钮控制的虚拟机即可:
在这里插入图片描述
****可以看到,此插件还有github访问加速等实用功能。

3.总结

终于写完了这篇万字长文教程,希望对有相同需求的你有所帮助。虎年元宵节快乐!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多