技術專欄

TECH

零成本 VDI 方案:用開源技術釋放 RTX 顯示卡的遠端 3D 戰鬥力

技術專欄 2026.04.28
零成本 VDI 方案:用開源技術釋放 RTX 顯示卡的遠端 3D 戰鬥力

面對高昂授權與效能損耗的雙重枷鎖,技術社群給出了一個令人振奮的答案:將原先為極致遊戲體驗而生的串流技術,轉化為生產力強大的 VDI 解決方案。Sunshine 作為一款開源的 Gamestream 伺服器主機,其核心價值在於它能跨越硬體廠牌的限制,直接讀取 GPU 的幀緩衝(Frame Buffer)並進行極低延遲的編碼編譯;而與其對應的 Moonlight 則是輕量化的接收端客戶端,兩者結合後,能將伺服器端強大的 RTX GPU 運算力,透過幾乎無損的畫質即時傳輸到使用者的螢幕上。

零成本 VDI 方案:用開源技術釋放 RTX 顯示卡的遠端 3D 戰鬥力

一、虛擬化的最後一哩路:解構 VDI 與 GPU 3D 運算的效能瓶頸

在當今企業數位轉型的藍圖中,虛擬桌面基礎架構(Virtual Desktop Infrastructure, VDI)早已不是新鮮事。透過將運算資源集中於伺服器端,企業得以實現極高的維運彈性與資安防護,讓員工能隨時隨地透過輕量化裝置接入工作環境。然而,當我們試圖將這套架構推向更高階的專業領域——如運作 NVIDIA Isaac Sim 進行複雜的機器人數位孿生模擬時,傳統 VDI 卻往往顯得力不從心。

核心的挑戰在於「延遲」與「渲染保真度」之間的矛盾。傳統的遠端桌面協定主要針對靜態畫面或文書處理優化,一旦進入高負載的 3D 場景,畫面的更新率(FPS)便會急遽下降,導致操作感產生嚴重的滯後,這對於需要精確物理反應的 3D 開發環境來說是致命傷。此外,商業級的 GPU 虛擬化解決方案通常伴隨著高昂的軟體授權成本,這不僅提高了進入門檻,也讓預算有限的技術團隊在追求效能與成本效益之間陷入兩難。如何在不依賴封閉式昂貴軟體的前提下,完整釋放 RTX GPU 的硬體實力,已成為開發者在建構高效能 VDI 環境時最亟待突破的技術瓶頸。

二、突破圍籬:Sunshine 與 Moonlight 聯手打造的開源渲染引擎

面對高昂授權與效能損耗的雙重枷鎖,技術社群給出了一個令人振奮的答案:將原先為極致遊戲體驗而生的串流技術,轉化為生產力強大的 VDI 解決方案。Sunshine 作為一款開源的 Gamestream 伺服器主機,其核心價值在於它能跨越硬體廠牌的限制,直接讀取 GPU 的幀緩衝(Frame Buffer)並進行極低延遲的編碼編譯;而與其對應的 Moonlight 則是輕量化的接收端客戶端,兩者結合後,能將伺服器端強大的 RTX GPU 運算力,透過幾乎無損的畫質即時傳輸到使用者的螢幕上。

這套方案的導入利基點,首要在於它徹底擺脫了商業 VDI 軟體對特定驅動程式或訂閱制的依賴,讓技術團隊能將寶貴的預算直接投入在更高效能的硬體採購上。更重要的是,由於其底層採用了高效能的視訊串流協定,在處理如 Isaac Sim 這類高頻率更新的 3D 環境時,其反應速度與畫面流暢度往往超越了傳統的遠端協作工具。這不僅讓遠端操作 3D 模擬環境變得如同本機運作般順滑,也為企業在建構高彈性的技術開發平台時,提供了一條兼具效能與經濟效益的全新路徑。

三、實作場域構建:當 RTX 4070 Ti 遇上 PVE 虛擬化平台

為了深耕 NVIDIA Omniverse 旗下的 Isaac Sim 機器人模擬平台,實作環境的穩定性與硬體吞吐量是首要考量。在硬體選擇上,搭載 16GB 視訊記憶體的 RTX 4070 Ti 成為了理想的核心,其 Ada Lovelace 架構不僅能支撐複雜的即時光線追蹤運算,足夠的記憶體容量更是運行大規模數位孿生場景的門票。然而,為了發揮硬體的最大價值並兼顧開發環境的靈活性,我們並未採取傳統的單機佈署,而是選擇在基礎底層安裝了最新的 Proxmox VE (PVE) v9.1.1 虛擬化系統。

技術實作的核心在於「GPU 直通」(PCI Passthrough)技術。透過修改 PVE 的內核參數與 IOMMU 設定,我們成功將這塊 RTX 4070 Ti 繞過宿主機,以物理層級的性能無損地分配給一台運行 Ubuntu Desktop 22.04 的虛擬機器(VM)。這種做法的優勢在於:在維持 VM 輕量化與快照備份彈性的同時,讓 Linux 開發環境能夠直接調用顯卡的 CUDA 核心與視訊編碼引擎。這不僅為隨後安裝的 Sunshine 串流服務提供了硬體加速的肥沃土壤,也確保了 Isaac Sim 在模擬高物理精確度的機器人任務時,能擁有與原生系統無異的運算效能。

四、虛擬化的深水區:硬體配置與驅動程式的磨合挑戰

在理論架構轉化為實際環境的過程中,挑戰接踵而至。首先面臨的是底層環境的細膩調校,這包含了主機端 BIOS 的深度配置,必須確保 CPU 的虛擬化技術(VT-x/AMD-V)與中斷重導向(Interrupt Remapping)功能被正確啟動。此外,在 PVE 宿主機層級,為了徹底釋放 GPU 資源,我們必須處理核心參數與驅動黑名單(Blacklisting)的複雜設定,這如同在數位地基上進行精準的微調,稍有偏差便無法完成 PCIe 設備的乾淨分配。

然而,真正的瓶頸出現在虛擬機器(VM)內部的圖形驅動表現。我們在 Ubuntu 22.04 環境下遇到了令人困惑的現象:透過 VNC 或 Spice 接入桌面時,基本的 NVIDIA 運算雖然顯示正常,但一旦進入高強度的 Isaac Sim 模擬場景,系統穩定性便開始瓦解。

最棘手的狀況發生在執行 Omniverse Explorer 範本時,系統會無預警崩潰並退回登入畫面。在嘗試切換不同版本的驅動程式(從開源的 nvidia-driver-open 到非 open 的專有版本)後,問題甚至更趨複雜——有時導致 nvidia-smi 完全偵測不到硬體,有時則是雖然能偵測到顯卡,但啟動 Isaac Sim 後畫面卻陷入無限的「RTX Loading 0%」或是毫無反應的灰色視窗。更詭異的是,這些崩潰現象似乎與解析度設定有著莫名的關聯:

在極低解析度下(1024x768)尚能勉強運作,但只要切換回主流的 1080p 規格,系統平衡便會瞬間瓦解。這顯示了在 VDI 架構中,傳統遠端協定與高階繪圖驅動之間存在著深層的通訊矛盾,迫使我們必須尋找更底層的解決方案。

五、系統重構:從核心層級排除干擾的關鍵調校

在經歷多次環境重建與測試後,我們鎖定了最穩定的軟體組合:選用 nvidia-driver-550-open 作為核心驅動(註:目前主流穩定版本為 550,580 則多為開發測試版)。這項決定的背後,是為了確保 GPU 直通後的內核溝通能保持透明且高效。

然而,單純安裝驅動並不足以解決問題,真正的關鍵在於「排除干擾源」。我們必須在 PVE 的虛擬硬體配置中,將原本的顯示卡類型從預設值調整為「無(None)」,並在 Ubuntu 系統層級徹底停用 Wayland 協定。這些動作雖然會導致傳統的網頁控制台(Console)或 Spice 視窗失效,但卻能強迫作業系統將繪圖資源百分之百傾注於物理 GPU 設備上。

以下是我們的具體調整操作:

5.1 PVE VM 調整

主要修改顯示卡直通 (PCI Device)

另外是顯示器設定 (Display)

5.2 VM OS 設定

首先要核心系統環境 (GDM 與 Wayland),主要任務是確保 NVIDIA 驅動能順利接管顯示輸出。編輯 /etc/gdm3/custom.conf 設定檔,關閉 Wayland (取消註解),並開啟自動登入(避開登入畫面黑屏)。

再來是編輯設定檔:sudo nano /etc/X11/xorg.conf,設定 Xorg 虛擬螢幕配置 (1080p),此目的是確保 NVIDIA 顯卡在沒有實體螢幕時,依然能「生出」一個 1080p 的畫布。

為了模擬真實的顯示輸出,我們前面配置了虛擬螢幕描述檔(Virtual Display configuration),讓系統即便在未連接實體螢幕的情況下,也能識別出正確的 EDID 資訊。完成這些底層變更後,我們轉而透過 SSH 遠端連線進行最後的軟體佈署。重新開機後將無法使用 console 或 spice 登入 GUI,只能透過 sunshine 搭配 moonlight 登入 GUI。

重新啟動 VM 後用 ssh 登入,下載 sunshine-ubuntu-22.04-amd64.deb 安裝包並完成安裝。執行 setcap 與 loginctl 賦予使用者啟用 user systemctl 的權限,並以 user mode 啟用 sunshine 服務:

systemctl --user enable --now sunshine
systemctl --user status sunshine

接下來,在操作端用瀏覽器連線 VM ( HTTPS port 47990) 並完成網頁介面設定 :

提示:
如果在 Moonlight 看到黑畫面,執行這串「強效喚醒」指令:
export DISPLAY=:0
xset dpms force on # 強制開啟顯示
xset s off # 關閉螢幕保護
xset -dpms # 停用省電模式

 

5.3 Moonlight 客戶端

先到如下網址下載與安裝 moonlight:

https://github.com/moonlight-stream/moonlight-qt/releases

為了避免滑鼠更為流暢,修改 Moonlight 設定:

然後再嘗試連線 VM IP,若需要重設 PIN 請在瀏覽器完成:

六、問題總結

6.1 為什麼降低解析度(1024x768)就能跑?

硬體層面(BIOS/PVE Host)已經過關。崩潰極大機率是 Ubuntu 桌面環境 (GNOME/X11) 無法處理從虛擬螢幕切換到物理 GPU 渲染時的像素緩存溢出。主要壓力在於 VRAM (顯存) 和 Xorg 的 Framebuffer 緩存:

  1. 解析度負擔:1920x1080 的像素量是 1024x768 的 2.6 倍。在開啟 Omniverse 這種高度依賴 RTX 即時渲染的應用時,解析度越高,佔用的顯存和系統交換頻寬就越大。
  2. RTX 5070 Ti 在 VM 中的表現:雖然它有 16GB VRAM,但在 PVE Passthrough 環境下,如果 Resizable BAR 沒有完全生效,或者 Xorg 分配的緩存空間在切換解析度時發生抖動,就會觸發 miCopyRegion 崩潰。

6.2 為甚麼 Sunshine 可以解決問題?

安裝 Sunshine 這種專門為高效能 GPU 設計的串流工具通常能解決 90% 在 VM 跑 Omniverse 遇到的桌面崩潰問題。

問題高度集中在:當解析度提高到 1920x1080 時,Ubuntu 的 Xorg 桌面環境無法正確處理 RTX 5070 Ti 拋出的渲染數據。透過 PVE 網頁介面的 noVNC 或 SPICE 視窗來操作 Ubuntu 桌面,這極大機率就是崩潰的原因。虛擬顯卡驅動在處理「高解析度 + 硬體加速 3D」時非常脆弱。

安裝 Sunshine (Host) 與 Moonlight (Client):這是目前 NVIDIA GPU 串流最穩定的方案:

在 VM 內安裝 Sunshine,然後從你的實體機(Windows 或 Mac)用 Moonlight 連進去。

它會繞過 PVE 簡陋的虛擬顯示協議,直接擷取 RTX 5070 Ti 的 Framebuffer,通常能完美支援 1080p 甚至 4K 運作 Omniverse。

七、Demo

如下影片是我們透過 moonlight 遠端連線到 sunshine 執行 issacm-smi 的實際效果:

https://drive.google.com/file/d/1yz7TJH29xmGhMtXoPmrzmv2DGOZWCGdO/view?usp=sharing

從畫面中,我們可以看到一個非常流暢的 3D Play 效果,但這是運行在遠端的 GPU 上面的。

--- END ---