如何讓 Evolution 在 Debian/Wheezy(或更高版本)上的 VNC 中執行?
多年來,我一直習慣於在離家時,將 VNC-ing(通過 ssh)回到我的“家用機器”並在那裡的緊密 vncserver 環境中執行 Evolution(用於電子郵件、聯繫人等)。
這在家用機器執行 Debian/Squeeze 時執行良好,但現在它已更新為 Wheezy,嘗試在 VNC 伺服器會話輸出中啟動 Evolution:
Xlib: extension "GLX" missing on display ":1". Failed to connected to any renderer: XServer appears to lack required GLX support
不支持 GLX 的tightvncserver 並不奇怪,但 Evolution 轉向 GL 後端(通過使用“混亂”工具包?)是。(要明確一點:Evolution 在桌面上工作得非常好;機器通過 DKMS 安裝了 nvidia 驅動程序。)
解決這個問題的前景如何?我的構想是這樣的:
- Evolution 是否有一個命令行選項可以解決這個問題?
- 有沒有辦法在 VNC 伺服器中獲得 GLX 支持?(支持它的tightvncserver的替代品?)
請注意,我傾向於在高延遲/低頻寬連結中使用 VNC;我之前嘗試過在 X11 上遠端執行 Evolution,但體驗不是很好;VNC 工作得更好。
首選 Debian 友好(apt-get -able)解決方案。
我試圖讓 qtcreator 在 vnc 上工作時遇到了同樣的問題,最終弄清楚了為什麼它不起作用,以及如何解決它;
http://minkirri.apana.org.au/wiki/DevJournal
您不需要 VirtualGL,它甚至可能比替代品更糟糕。重要的是,您可以僅使用標準 Debian 軟體包使其工作。
VirtualGL 用於應用伺服器端硬體加速。GLX 用於 x-server 端硬體加速。正常使用 VNC 時,app-server 和 x-server 與您的 vnc-server 位於同一台機器上,因此 VirtualGL 和 GLX 之間沒有太大區別。
問題是兩個最常見的 vnc-serverstightvncserver 和 vnc4server 都是 x-proxy 伺服器,它們有自己的不支持 GLX 的內部 x-server。你仍然可以讓 3D 應用程序使用它們,但是你需要使用老式的應用伺服器端軟體渲染,這意味著你需要在你的應用伺服器上安裝 libgl1-mesa-swx11,這與通常安裝的硬體渲染衝突版本 libgl1-mesa-glx。
或者,您可以安裝具有硬體渲染 GLX 支持的普通 x-server 並使用 x11vnc,它是一個 vncserver,可以從螢幕上抓取真實的 x-server。
如果有人使用 libvncserver(由 x11vnc 使用)編寫了具有適當 GLX 支持的新 x-proxy vnc-server,那就太好了。緊 vncserver 和 vnc4server 都變得有點硬了。
經過更多研究,所有道路似乎都通向VirtualGL(文件),儘管我還沒有嘗試過(設置說明有點……令人生畏)。文件指向一些 .debs,並且有一個針對 Debian 的開放 ITP。
作為替代方案,似乎可以通過 Mesa 建構一個支持 GLX 的緊密 vncserver(例如在此處提及)。當然,這不會是 GPU 加速的(但是電子郵件需要多少圖形處理能力???);更令人擔憂的是(至少我上次嘗試過),Debian 不會讓您一次在一台機器上安裝一組以上的 OpenGL 庫,而且我不想放棄硬體加速以供本地使用.
如果我以一種或另一種方式取得任何成功,我會在這裡更新;我當然仍然對任何其他(可能的)解決方案/指針感興趣。
進展:通過適當的 .deb 安裝 VirtualGL 並按照說明(並不像最初看起來那麼糟糕;眾多平台的覆蓋範圍使它們有些膨脹)讓我(硬體加速!) GLX 支持在一個緊的 vncserver 中。這是我第一次看到!
/opt/VirtualGL/bin/vglrun glxgears
Evolution 也通過這種機制起作用,解決了我的主要問題。
但是,這種方法存在一些重大問題。它僅在有人登錄到主機時才有效(而不是在顯示 gdm3“greeter”時,在這種情況下 vglrun 獲得“could not open display:0”錯誤)和任何類型的顯示轉換(例如某人 ctrl-alt-Fn-ing 到虛擬控制台)將殺死 vglrun 應用程序並出現“無法讀取像素”錯誤)。螢幕鎖定似乎還可以。出於我的目的,我可以忍受這一點(還有其他人是我正在使用 VNC 進入的機器的主要使用者,他們總是登錄並且最不可能做任何像 ctrl-alt-Fn 一樣的技術操作從桌面),但它可能不適合其他人。
更新:實際上,在顯示 gdm3“greeter”時,有一個啟用 VNC+GLX 的修復程序。只需
xhost +LOCAL:
在/etc/gdm3/Init/Default
. 該vglserver_config
腳本確實嘗試這樣做(對於不安全的設置),但它對 gdm3 的配置文件一無所知(儘管它確實檢查 gdm 和 xdm)。儘管請注意更好的方法(以及配置腳本嘗試做的事情,假設您在設置期間使用 vglusers 組選擇了更安全的選項)是有一個vglgenkey
代替,但這似乎沒有做任何東西(不會/etc/opt/VirtualGL/vgl_xauth_key
像預期的那樣創建 a )。**更新:**實際上,
/etc/opt/VirtualGL/vgl_xauth_key
可以通過將 Debian-gdm 使用者添加到 vglusers 組來啟用為 gdm3 的創建。但這只是將問題轉移到其他地方,vglrun 現在抱怨無法鎖定 /var/run/gdm3/ 中的某些內容(具有 root:Debian-gdm 權限)。在這一點上,我已經超出了我的深度,毫無疑問,非常不安全的xhost +LOCAL:
線路將不得不這樣做。**更新:**剛剛開始將這台糟糕的舊 Debian 機器從 Wheezy 更新為 Jessie,並從 SourceForge 更新到 virtualgl 2.5 debs。
vglrun evolution
一旦伺服器配置了vglrun_config
.**更新:**從 Debian9(“Stretch”)我切換到使用tigervncserver(我認為在這個版本中的 Debian stable 中是新的;通過tigervnc-standalone-server 包)而不是 virtualgl。請參閱其他答案。