UNRAID使用NVIDIA显卡(直通篇)

在UNRAID下想要利用NVIDIA显卡,最为传统的方法是创建一个虚拟机,并将显卡直通进去。最早使用1080测试了直通功能,只需要在虚拟机设置里的Other PCI Devices选中1080即可。但20系显卡因为多了一个type c接口,情况有些变化,之前在知乎上分享了URNIAD 6.6.6直通2080ti的经历,特地将其转载过来。

错误

之前在Unraid里建立了一个使用GTX1080的虚拟机,想用RTX 2080Ti替换了GTX1080。修改虚拟机配置后,启动虚拟机时很不幸地报错了:

fio error: 0000:02:00.0: group 27 is not viable Please ensure all devices within the iommu_group are bound to their vfio bus driver.

这是因为2080Ti新增了一个USB Type-C接口,默认情况下Unraid的VM manager并不会将这个接口同时分配给虚拟机。
在TOOLS->System Devices->PCI Devices and IOMMU Groups可以看到该USB控制器与显示控制器在同一个IOMMU group内。

IOMMU group 27: [10de:1e04] 02:00.0 VGA compatible controller: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti] (rev a1) [10de:10f7] 02:00.1 Audio device: NVIDIA Corporation TU102 High Definition Audio Controller (rev a1) [10de:1ad6] 02:00.2 USB controller: NVIDIA Corporation TU102 USB 3.1 Controller (rev a1) [10de:1ad7] 02:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU102 UCSI Controller (rev a1)

因此只将显示控制器分配给IOMMU,就会出现上面的错误。

解决方案

将显示控制器与USB控制器分离开放到不同的IOMMU group内

该方案最简单,只需要将Unraid->SETTINGS->PCIe ACS overide改成Both,然后重启计算机就行。

IOMMU group 31: [10de:1e04] 02:00.0 VGA compatible controller: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti] (rev a1) IOMMU group 32: [10de:10f7] 02:00.1 Audio device: NVIDIA Corporation TU102 High Definition Audio Controller (rev a1) IOMMU group 33: [10de:1ad6] 02:00.2 USB controller: NVIDIA Corporation TU102 USB 3.1 Controller (rev a1) IOMMU group 34: [10de:1ad7] 02:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU102 UCSI Controller (rev a1)

重启完之后显示控制器与USB控制器就处于不同的IOMMU group了,虚拟机的设置也不用改。

UNRAID使用NVIDIA显卡(直通篇)

将USB控制器也直通给虚拟机

如果不想修改PCIe ACS overide,可以把USB控制器也直通给虚拟机。这一部分主要是参考了youtube上的视频教程:https://www.youtube.com/watch?time_continue=202&v=UilWLtMYd-U。

作者提供了两条辅助命令非常方便。

for usb_ctrl in $(find /sys/bus/usb/devices/usb* -maxdepth 0 -type l); do pci_path=”$(dirname “$(realpath “${usb_ctrl}”)”)”; echo “Bus $(cat “${usb_ctrl}/busnum”) –> $(basename $pci_path) (IOMMU group $(basename $(realpath $pci_path/iommu_group)))”; lsusb -s “$(cat “${usb_ctrl}/busnum”):”; echo; done

第一条命令可以显示出USB设备与控制器的详细信息,比如Unraid启动盘是在哪个控制器下面。这一步其实对于我来说用处不大,因为我只想把2080Ti上的USB控制器直通给虚拟机。这主要是针对那些想把板载USB控制器直通的人,他们需要这些信息。

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 -1 “$iommu_group”/devices/); do if [[ -e “$iommu_group”/devices/”$device”/reset ]]; then echo -n “[RESET]”; fi; echo -n $’t’;lspci -nns “$device”; done; done

第二条命令才是我真正需要的,直接找到IOMMU group 27,看到两个控制器的id为10de:1ad6与10de:1ad7。

IOMMU group 27 [RESET] 02:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti] [10de:1e04] (rev a1) 02:00.1 Audio device [0403]: NVIDIA Corporation TU102 High Definition Audio Controller [10de:10f7] (rev a1) 02:00.2 USB controller [0c03]: NVIDIA Corporation TU102 USB 3.1 Controller [10de:1ad6] (rev a1) 02:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU102 UCSI Controller [10de:1ad7] (rev a1)

然后将vfio-pci.ids=10de:1ad6,10de:1ad7加入syslinux设置,然后重启计算。

default menu.c32 menu title Lime Technology, Inc. prompt 0 timeout 50 label unRAID OS menu default kernel /bzimage append vfio-pci.ids=10de:1ad6,10de:1ad7 initrd=/bzroot

打开虚拟机设置,将两个控制器分配给虚拟机。

UNRAID使用NVIDIA显卡(直通篇)

最终效果

在设备管理器已经可以看到了2080Ti带的USB控制器了。买了一个绿联的拓展坞,测试后可以正常使用。如果需要一台高性能的游戏虚拟机,20系显卡是非常适合的。之前没有直通 USB 控制器的时候,每当临时插上 USB 设备,就要去 Unraid 网页分配一次,非常繁琐。而直通主板的 USB 控制器又有相当多的限制,如果单独购买 PCI-E 转 usb 扩展卡又太过于浪费。

(0)
PipitaPipita
上一篇 2020-05-02
下一篇 2020-05-23

相关文章

  • 一键网络重装系统 – DD魔改版(适用于Linux / Windows)

    简介 一键网络重装系统 – 魔改版,它可以通过Internet重新安装Linux和Windows以及常见的操作系统。例如:Linux(CentOS,Debian,Ubuntu、etc..),Windows(2019、2016、2012R2、2008R2、7、2003、etc..),以及其他系统(不断支持更多中)。 当我们需要重装VPS/云平台/独…

    无关专业 2020-12-01
  • 内网穿透神器Frps一键安装脚本及设置教程

     frps 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。       *因为frps是go语言写的,所以在路由器上使用的时候,请使用虚拟内存,请使用虚拟内存,请使用虚拟内存。 前期准备:一个刷过梅林固件的路由、一个云服务器或者VPS …

    无关专业 2020-02-24
  • 神仙文案

    1、“我在山谷湖泊间拾荒,捡拾散落的星辰和光。” 2、我爱了整个宇宙,只为了跟你碰头。 3、落幕下的花店,玫瑰将荒野的故事告诉风烟。 4、“一枝真心准备的花胜过千朵玫瑰。” 5、“我搬来整个城市的玫瑰,赠你一个错过的春天。” 6、等风起,等花开,等我们再次相遇。 7、窗前的白鸽飞过,你眼中落下星光。 8、“人间永远有野火焚不尽的诗书和法钵罩不住的柔情。” 9…

    无关专业 2021-10-01
  • 利用 Caddy 一键反代网站并签发证书SSL

    安装Caddy 运行以下命令: 配置文件 以下所有示例域名为boluo.link,请注意替换为自己的域名 ! 1、服务器IP反向代理 下面是一个,用你服务器的IP来反向代理一个http协议的网站http://www.baidu.com 。 服务器IP也可以反向代理HTTPS协议的网站,但是需要自签SSL证书,现在的浏览器一般都不会认自签的SSL证书,所以不建…

    无关专业 2020-12-01
  • 在外科医生生日当天做手术,患者的死亡率更高?

    「医生,日历上说明日宜手术,请您给我安排一下?」隔壁小李诉说着今天查房的遭遇,老成持重的林主任拍了拍小李的肩膀,「患者说的也不是全无道理嘛,手术的效果确实可能和时间有关。」 在美国医疗界,很早就有「七月效应(July Effect)」的说法,即在每年的七月,以及后面的一段时间内,手术并发症发生的概率相较于其他月份明显升高。 事实上,不同时间对于手术效果的影响…

    无关专业 2020-12-28
  • 让PVE直接跑docker

    最近貌似流行软路由,选了一圈Proxmox VE下玩多系统,结果还想玩玩docker,居然pve原生还不支持,放狗搜了下找到自己开启方法。 1.添加软件源 nano /etc/apt/sources.list deb http://download.proxmox.com/debian stretch pve-no-subscription 复制代码2.注释…

    无关专业 2020-03-05