:::

Ubuntu中讓WINE用顯示卡運作 / Run WINE with GPU in Ubuntu

2月 28, 2023 , , 0 Comments Edit Copy Download

2023-0203-100439.png

Ubuntu裝了顯示卡後,WINE就無法開啟了。為什麼呢?


WINE

2023-0203-085820.png

WINE是在Linux上用來運作Windows程式的重要核心。大多數情況下,WINE在Intel的內建顯示晶片下都能正常運作,但很多人在裝了顯示卡後,WINE就無法順利開啟。

以我目前的電腦為例,發生錯誤的環境如下:

  • Ubuntu 22.04
  • KDE Plasma 5.24.7 (用X11運作)
  • NVIDIA Geforce RTX 3600 (ZOTAC),用Razer Core X外接顯示卡盒子連接。

執行WINE之後會遇到以下錯誤訊息:

err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.

看起來WINE的視窗找不到驅動程式來開啟。有辦法可以解決嗎?


prime-run

https://www.youtube.com/watch?v=aPi8NfDyDMU

查了很多方法,最後發現必須要用prime-run來運作WINE。

prime-run並不是預先安裝的程式,需要手動設定。我參考Ricky Kresslein的整理,將建立prime-run的方法歸納為以下步驟:

  1. 確認NVIDIA驅動程式有正常安裝,並且已經重新啟動。
  2. 建立檔案「/bin/prime-run」,檔案內容如下:
  3. #!/bin/bash
    export __NV_PRIME_RENDER_OFFLOAD=1
    export __VK_LAYER_NV_optimus=NVIDIA_only
    export __GLX_VENDOR_LIBRARY_NAME=nvidia export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
    "$@"
  4. 給予執行權限:sudo chmod +x /bin/prime-run
  5. 接下來就能用prime-run執行WINE。例如執行WINE的設定: prime-run winecfg2023-0203-090833.png

看到WINE畫面跑出來的時候,整個人都要哭出來了。

環境變數 / Environment Variables

prime-run裡面設定了很多環境變數,這些是什麼意思呢?

https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/primerenderoffload.html

PRIME是NVIDIA用來處理多個顯示卡時如何決定圖形化介面顯示方式的元件。PRIME render offload則是讓X視窗中特定應用程式以指定GPU運作的方式。以下就讓我們來看看prime-run設定到的環境變數。

  • export __NV_PRIME_RENDER_OFFLOAD=1
    開啟PRIME render offload功能。
  • export __VK_LAYER_NV_optimus=NVIDIA_only
    只使用NVIDIA GPU來運作Vulkan運作程式。Vulkan是一種類似OpenGL的圖形化顯示API,特色是運用少量CPU資源就能取得高效能。詳細請看NVIDIA的介紹
  • export __GLX_VENDOR_LIBRARY_NAME=nvidia
    告訴X視窗,這個圖形化介面的驅動程式要用nvidia。
  • export VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json
    明確指示驅動程式要用的資訊,這邊是使用NVIDIA的驅動程式。關於ICD請看Vulkan的說明

出乎意料之外的複雜。

後來嘗試在沒有裝顯示卡的情況下用prime-run執行,似乎還是能夠正常開啟WINE。後續還會遇到什麼問題,就讓我們繼續看下去吧。


你有用過WINE嗎?你用WINE跑什麼程式呢?

歡迎下面留言喔!