上一篇「遠端執行的 X Server」的嘗試失敗後,很長一段時間以來再也沒有想過類似的問題了。不過,「遠端暢玩」這個想法仍然太過誘人,思來想去,總覺得從理論上這應當是可行的。
在上一篇中,最終止步於 Steam Link 所發出的報錯資訊,顯示無法連線到某一個 IP 的埠。 後來,我又去嘗試了本地網路下的 Steam Link 的使用辦法,發現本身的連線也沒想象中那麼傻瓜。只有透過一次隨機認證碼的互動認證之後,才短時間內允許使用者發起直接的連線。而直接連線後,遠端的聲音和控制都可以傳輸過來,體驗是和遠端桌面沒有什麼區別的。在網路比較 laggy 的時候,右下角有 Steam Link 的一些提示,說明現在的網路狀況不是很好。
那麼,下一步就是要嘗試,先讓 Steam Link 能夠連線到遠端主機,而不要去管怎麼運行遊戲。
進行一次互動認證
首先,需要進行一次互動認證。指定 DISPLAY=:0
,並在遠端主機執行 Steam。這樣,理論上虛擬顯示器就存在著一個 Steam。為了能夠在虛擬顯示器上互動,我們可以使用 x11vnc
。在遠端主機上再執行 x11vnc -display :0
,可以臨時啟用一個 VNC Server。此時,登陸遠端主機上的 Steam,並在本地啟動 Steam Link,啟動認證流程,就可以和遠端主機完成認證,並開始連線。
執行 GUI 程式
然後,執行想要執行的程式,再關閉 Steam Link,關閉 VNC 連線,關閉 VNV Server。現在的狀態應當是虛擬顯示器上正跑著你想要的程式,而 Steam Link 也可以一鍵連線到遠端主機。
於是,重新開啟 Steam Link,就可以看到正在執行的程式了,而這個程式完全是由遠端主機上的 GPU 進行渲染的。同時,得益於 Steam Link 原本用來串流遊戲,因此控制和聲音都預設被配置好並正常工作了。
缺點和不足
- 目前操作還是太過於不適,需要手動進行很多調整。
- LXC 容器中的 GUI 程式,現在還跑在裸的 X Server 上,還沒有 DM (Display Manager) 。
- 網路環境相當複雜導致的網路延遲,還不太能接受。
不過至少這個可行性是有的。如果將來能有單一網路環境的 GPU 伺服器,就可以更好地體驗遠端暢玩了。