UNRAID使用NVIDIA显卡(直通篇)

2019-12-17 11:11:30

17点赞

83收藏

43评论

在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了,虚拟机的设置也不用改。

将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

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

最终效果

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

linux下怎么识别fioa卡,UNRAID使用NVIDIA显卡(直通篇)相关推荐

  1. linux下怎么识别fioa卡,2020年新版电子警察信号灯设计、施工方案.docx

    技术方案 2014年03月 TOC \o "1-5" \h \z \o "Current Document" 概述7 \o "Current Docu ...

  2. 在Linux下查看FC HBA卡的速率和状态

    在Linux下查看FC HBA卡的速率和状态 1 查看FC HBA卡的WWN号 2 查看当前port的状态 3 查看PORT的端口ID 4 查看port支持的速率 5 在FC HBA没有插上光纤时 6 ...

  3. linux下无法识别u盘

    经常会遇到Linux下无法识别u盘的情况,这里做一下记录: 1.在虚拟机(vbox)中无法识别u盘 vbox和宿主机对u盘的使用时独占的(即在某一时间只有二者之一能访问u盘,而不能同时访问),遇到vb ...

  4. 详解linux下auto工具制作Makefile源码包(制作篇)

    2019独角兽企业重金招聘Python工程师标准>>> 详解linux下auto工具制作Makefile源码包(制作篇) 水木杨 一.     概述 为了更好的制作configure ...

  5. Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法

    Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法 环境: 系统 Ubuntu 22.04 LTS 网卡ax201(微星b660m迫击炮wifi ...

  6. 提问:usb摄像头无输出画面 /window下能识别摄像头,无输出图像拍摄时提示0XA00F4292(PhotoCaptureStartTimeout) /linux下不能识别

    硬背景:19年1月份购入两台1920x1080usb摄像头,闲置了很久,两个月前带回家以备不时之需,中途放在书包里可能有挤压置坏的可能性. 软背景:在linux下编译apriltag(计算机视觉二位合 ...

  7. 虚拟机中的linux系统无法识别SD卡

    虚拟机内的ubuntu和centos都无法识别sd卡. 多次拔插发现有这个弹窗,之前一直以为是正常的,但是百度了一下需要将USB兼容性从2.0改为3.1就可以识别了.可能是因为读卡器插到了usb3.1 ...

  8. memset linux 头文件,linux下C/C++头文件梳理,看完这篇再也不会搞糊涂头文件了!...

    一:前言 进行linux下C/C++服务端后台开发的都知道,需要跟各种头文件打交道. 比如使用printf函数则需要引用#include ,使用STL的map容器则要#include ,使用socke ...

  9. 完全用Deepin Linux娱乐、工作、学习(2)-- 显卡驱动篇

    在前面<完全用Deepin Linux娱乐.工作.学习(1)>一文中,我简单和各位分享了关于Deepin Linux的基础体验.对于Deepin Linux来说其中有它的好也有它的不足,我 ...

最新文章

  1. 复旦计算机学硕分数线,复旦大学2019考研分数线公布,复旦复试经验请收好!...
  2. 如何用SQL分析电商用户行为数据(案例)
  3. bits/stdc++.h头文件总结
  4. 三件套都有什么_床上用品三件套、四件套、21件套都各指什么啊?
  5. app uniapp 获取位置_uniApp 地图使用
  6. 安卓Socket处理
  7. 前端学习(2771):图片上传
  8. [转载] Python中的numpy linalg模块
  9. 三个多月、40余场面试浓缩为6000字
  10. 1月第4周安全回顾 移动安全受关注 ***威胁公共设施
  11. 给用户配置hadoop权限
  12. shell教你如何批量解压缩——unzip命令
  13. 前序、中序、后序遍历的基础详解
  14. ARCore学习指引四剑客:原生、Unity、Unreal和WebAR
  15. ​2021年度学习清单
  16. 华为nova5iotg功能使用_华为nova5有OTG功能吗?可以连接U盘和鼠标吗[多图]
  17. 关于iphone设置显示模式为标准模式和放大模式时的区别
  18. 轴心时代的三大东方圣人老子、孔子和释迦牟尼
  19. java outputstream初始化_ByteArrayOutputStream简介和使用_动力节点Java学院整理
  20. springboot整合redis报错org.springframework.beans.factory.UnsatisfiedDependencyException

热门文章

  1. 纺织企业举步维艰,小微纺织企业该如何做?
  2. Windows 上6款卸载软件值得推荐
  3. 2020年Apple的UWB技术产品资料整理
  4. When you gather it, things would be counted. ​​​​
  5. 浅谈framework之PowerManagerService
  6. 形态学填充孔洞的几个问题
  7. Linux之安全最佳做法(未完成)
  8. Mac 下终端运行C++
  9. 问卷调查网站制作-前后端开发
  10. 光学定位与追踪技术_光学跟踪技术定位精准罗技M90鼠标仅32