KVM + PCI Passthrough

目前來說,GPU Passthrough需要主機(jī)有兩張顯卡,一張分給host,一張直通給虛擬機(jī)guest。我的電腦使用兩張顯卡1070Ti和1050Ti配置,我將根據(jù)我的電腦展示配置過程。最終host使用1070Ti,虛擬機(jī)直通1050Ti。虛擬機(jī)分別使用MacOS HighsierraWin10來展示。
:如果使用macOS mojave 或 macOS Catalina,在沒有結(jié)決NVIDIA驅(qū)動情況下,最好使用AMD免驅(qū)顯卡(如RX580,RX590等,2048sp版的有問題)。
首先配置好KVM環(huán)境,參考ArchLinux/Manjaro 配置KVM環(huán)境

1. 啟用IOMMU

修改grub配置,添加intel_iommu=onintel_iommu=on,根據(jù)自己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傳遞給內(nèi)核,打開 /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在其它圖形驅(qū)動之前加載,修改 /etc/mkinitcpio.conf, 按照順序?qū)?code>vfio_pci,vfiovfio_iommu_type1,vfio_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,運(yùn)行如下命令
$ sudo mkinitcpio -p linux
  1. 完成以上內(nèi)容,重啟,1050Ti就會和host隔離,如圖

查看使用的驅(qū)動

通過圖可以發(fā)現(xiàn) 1070Ti 使用 nvidiasnd_hda_intel, 1050Ti 使用vfio-pci,說明1050Ti成功和host隔離。接下來就可以將1050Ti分配給虛擬機(jī)。

3. 將GPU直通給虛擬機(jī)

1. 將GPU直通給MacOS

打開virt-manager 中的macOS進(jìn)行配置

  1. 刪除macOS原有的顯示硬件
  2. 點擊 添加硬件--PCI主機(jī)設(shè)備--選中1050Ti(1050Ti和相應(yīng)的 High Definition Audio Controller)
  3. 點擊 添加硬件--PCI主機(jī)設(shè)備--選一個USB Host controller 用于添加鼠標(biāo)鍵盤
  4. 將顯示器連接到1050Ti上,開機(jī)就進(jìn)入使用1050Ti的MacOS,安裝好Nvidai WebDriver,就可以愉快地使用MacOS了
我的系統(tǒng)

2. 將GPU直通給Win10

操作和上面類似,但是也有不同,打開virt-manager 對win10 進(jìn)行配置
:windows上的Nvidia驅(qū)動檢查虛擬機(jī)管理程序是否在運(yùn)行,如果檢測到虛擬機(jī)管理程序,則會拒絕加載,這會導(dǎo)致Windwos設(shè)備管理器出現(xiàn)錯誤43。

  1. 刪除macOS原有的顯示硬件
  2. 點擊 添加硬件--PCI主機(jī)設(shè)備--選中1050Ti(1050Ti和相應(yīng)的 High Definition Audio Controller)
  3. 點擊 添加硬件--PCI主機(jī)設(shè)備--選一個USB Host controller 用于添加鼠標(biāo)鍵盤
  4. 設(shè)置虛假的vender_id,來欺騙Nvidia驅(qū)動程序,ID必須設(shè)置為12個字符的字母數(shù)字。編輯配置虛擬機(jī)的win10.xml文件,添加以下內(nèi)容
<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上,開機(jī)安裝NVIDIA驅(qū)動,開始使用。

KVM 安裝 win10
KVM + MacOS

參考資料

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容