KVM + PCI Passthrough

目前来说,GPU Passthrough需要主机有两张显卡,一张分给host,一张直通给虚拟机guest。我的电脑使用两张显卡1070Ti和1050Ti配置,我将根据我的电脑展示配置过程。最终host使用1070Ti,虚拟机直通1050Ti。虚拟机分别使用MacOS HighsierraWin10来展示。
:如果使用macOS mojave 或 macOS Catalina,在没有结决NVIDIA驱动情况下,最好使用AMD免驱显卡(如RX580,RX590等,2048sp版的有问题)。
首先配置好KVM环境,参考ArchLinux/Manjaro 配置KVM环境

1. 启用IOMMU

修改grub配置,添加intel_iommu=onintel_iommu=on,根据自己CPU不同来更改

$ sudo vim /etc/default/grub

更改grub后,升级grub.cfg

$ sudo grub-mkconfig -o /boot/grub/grub.cfg

2. 将需要直通的GPU与host隔离

1. 查看需要直通的GPU的id

查看分离显卡的id

因为我要直通的是1050Ti,所以我需要的id是 10de:1c82, 10de:0fb9

2. 隔离GPU

1.加载vfio-pci, 并将ID传递给内核,打开 /etc/modprobe.d/vfio.conf文件,添加

options vfio-pci ids=10de:1c82,10de:0fb9

:在ArchLInux,这个确实起作用,但是在Manjaro中,可能无效,解决办法是修改grub, 添加 vfio_pci.ids=10de:1c82,10de:0fb9 如下图

修改grub文件

修改grub文件后,要升级grub.cfg, 同上

  1. 确保vfio-pci在其它图形驱动之前加载,修改 /etc/mkinitcpio.conf, 按照顺序将vfio_pcivfiovfio_iommu_type1vfio_virqfd 的顺序添加到mkinitcpio
# /etc/mikinitcpio.conf
MODULES=(... vfio_pci vfio vfio_iommu_type1 vfio_virqfd ...)

确保 modconf hook 在 mkinitcpio.conf 的 HOOKS列表

# /etc/mkinitcpio.conf
HOOKS=(... modconf ...)
  1. 修改mkinitcpio.conf 后,要重新生成initramfs,运行如下命令
$ sudo mkinitcpio -p linux
  1. 完成以上内容,重启,1050Ti就会和host隔离,如图

查看使用的驱动

通过图可以发现 1070Ti 使用 nvidiasnd_hda_intel, 1050Ti 使用vfio-pci,说明1050Ti成功和host隔离。接下来就可以将1050Ti分配给虚拟机。

3. 将GPU直通给虚拟机

1. 将GPU直通给MacOS

打开virt-manager 中的macOS进行配置

  1. 删除macOS原有的显示硬件
  2. 点击 添加硬件--PCI主机设备--选中1050Ti(1050Ti和相应的 High Definition Audio Controller)
  3. 点击 添加硬件--PCI主机设备--选一个USB Host controller 用于添加鼠标键盘
  4. 将显示器连接到1050Ti上,开机就进入使用1050Ti的MacOS,安装好Nvidai WebDriver,就可以愉快地使用MacOS了
我的系统

2. 将GPU直通给Win10

操作和上面类似,但是也有不同,打开virt-manager 对win10 进行配置
:windows上的Nvidia驱动检查虚拟机管理程序是否在运行,如果检测到虚拟机管理程序,则会拒绝加载,这会导致Windwos设备管理器出现错误43。

  1. 删除macOS原有的显示硬件
  2. 点击 添加硬件--PCI主机设备--选中1050Ti(1050Ti和相应的 High Definition Audio Controller)
  3. 点击 添加硬件--PCI主机设备--选一个USB Host controller 用于添加鼠标键盘
  4. 设置虚假的vender_id,来欺骗Nvidia驱动程序,ID必须设置为12个字符的字母数字。编辑配置虚拟机的win10.xml文件,添加以下内容
<features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state="on"/>
      <vapic state="on"/>
      <spinlocks state="on" retries="8191"/>
      <vendor_id state="on" value="1234567890ab"/>
    </hyperv>
    <kvm>
      <hidden state="on"/>
    </kvm>
    <vmport state="off"/>
  </features>
  1. 将显示器连接到1050Ti上,开机安装NVIDIA驱动,开始使用。

KVM 安装 win10
KVM + MacOS

参考资料

https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268