快轉到主要內容

Ubuntu:Windows虛擬機Nvidia顯示卡直通 + Looking Glass安裝

Linux系統 虛擬機與容器技術 Ubuntu QEMU Windows
✍ 切換正體/簡體字
Ivon Huang
作者
Ivon Huang
目錄

本文說明如何在Ubuntu安裝Windows虛擬機,並將Nvidia顯示卡直通給虛擬機,再安裝Looking Glass,執行3D應用程式。

顯示卡直通(GPU Passthrough) 讓Windows虛擬機能以接近原生效能玩大型3D遊戲。要做到這點,需要2個顯示卡:一個CPU內顯,一個獨立顯示卡。最好採用Looking Glass,或者準備2個螢幕。

1. 硬體資訊 #

  • Host OS: Ubuntu 22.04 LTS
  • Guest OS: Windows 11
  • CPU: Intel I5-7400,有內顯UHD 630。
  • GPU: Nvidia GTX1050Ti

電腦主機後方連接主機板的連接埠是內顯,下面的是獨顯的連接埠。

一般來說主螢幕是插在獨顯的連接埠,而獨顯在直通給虛擬機後,主螢幕就要改插內顯的連接埠。

如果沒有二個以上螢幕,那麼請使用文末提及的Looking Glass增強3D效果。

2. 安裝Windows 11虛擬機 #

不可安裝SPICE Tools。

Windows虛擬機雖然有畫面,但是圖形效能很差,看看Edge瀏覽器的 WebGL Aquarium的FPS就知道,所以要直通顯示卡。

4. 禁止Linux核心載入Nvidia獨顯 #

  1. 將Windows虛擬機關機。

  2. 執行以下指令刪除Nvidia驅動,改安裝開源的nouveau驅動並重開機。

sudo apt-get purge *nvidia*
sudo apt-get install xserver-xorg-video-nouveau
  1. 重開機後使用指令sudo lshw -C display確認,driver區段會顯示"nouveau"

  2. 啟用IOMMU,編輯/etc/default/grub,針對Intel CPU,在GRUB_CMDLINE_LINUX_DEFAULT後面加入以下內容:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on"
  1. 更新GRUB後重開機。
sudo update-grub
sudo reboot
  1. 執行以下指令查找獨顯和HDMI裝置的ID
lspci -nnk
  1. 找到GTX 1050Ti和其HDMI音訊裝置,將後面的二個硬體ID記起來,例如這裡是10de:1c8210de:0fb9

  2. 將Nvidia顯示卡綁定給VFIO,再次修改/etc/default/grub,將GRUB_CMDLINE_LINUX_DEFAULT增添為以下內容:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_iommu=on vfio-pci.ids=10de:1c82,10de:0fb9"
  1. 啟用開機自動載入vfio-pci核心模組
sudo echo 'vfio-pci' > /etc/modules-load.d/vfio-pci.conf
  1. 禁止開機載入Nvidia和nouveau核心模組
su
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist
exit
  1. 更新GRUB和initramfs並重開機
sudo update-grub
sudo update-initramfs -u
sudo reboot
  1. 重開機一直按著delete,進到BIOS,設定開啟混合螢幕輸出,我的是在Advanced → System Agent (SA) Configuration,設定以內顯(IGFX)優先開機。

  2. 主螢幕改插到內顯的孔,副螢幕插到獨顯的孔,重開機進入Linux系統。

3. 將獨顯加入到虛擬機 #

  1. 開啟Virt Manager,按二下開啟,點左上角i編輯Windows虛擬機

  2. 點選編輯硬體 → 新增PCI主機裝置,將獨顯和獨顯音訊HDMI都加進去

  3. 開機後,主螢幕會看到Windows畫面,副螢幕會暫時黑畫面。

  4. 安裝 GeForce Experience更新顯示卡驅動。

接著在系統設定 → 顯示器 → 圖形,指定應用程式使用Nvidia顯示卡彩現,而非QXL。

圖形效能在副螢幕上最好。

如果副螢幕有喇叭,則Windows的音效會透過HDMI從副螢幕輸出。

4. 安裝Looking Glass #

Looking Glass Host與Client的版本需一致。

Ubuntu已收錄looking-glass-client套件,不需要手動編譯。

接著參見 設定Looking Glass

參考資料 #

相關文章

Ubuntu Linux如何安裝Windows 10虛擬機 (QEMU/KVM)
Linux系統 虛擬機與容器技術 Ubuntu QEMU Windows
QEMU/KVM虛擬機繞過遊戲Easy Anti-Cheat的方法,隱藏KVM狀態
Linux系統 虛擬機與容器技術 QEMU Linux Windows
如何在Windows虛擬機玩遊戲 ~ Linux QEMU/KVM雙GPU直通 + Looking Glass安裝過程
Linux系統 虛擬機與容器技術 QEMU Linux Windows

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要登入Github帳號才能留言。支援markdown語法,方便您張貼程式碼,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。無論有無登入皆可留言。此處留言只有本站參與者看得到。若您選擇以訪客身份匿名留言,就不會收到後續回覆通知。