不含 X Window 系統的 VNC 伺服器

不含 X Window 系統的 VNC 伺服器

如果沒有安裝 X Server,VNC 伺服器是否可以運作?我知道 vnc 可以與 X Server 搭配使用,但是如果沒有它呢?

答案1

不,您通常需要在使用 VNC 進行遠端處理的伺服器上安裝 X,因為它僅顯示來自該伺服器的 X 桌面。

在計算領域,虛擬網路計算(VNC)是一種圖形桌面共享系統,它使用遠端幀緩衝區協定(RFB)遠端控制另一台電腦。它將鍵盤和滑鼠事件從一台計算機傳輸到另一台計算機,透過網路將圖形螢幕更新轉發回另一個方向。

這一點可能會讓人感到困惑:

請注意,運行 VNC 伺服器的電腦不需要有實體顯示器。在正常操作方法中,檢視器連接到伺服器上的連接埠(預設連接埠 5900)。

當他們提到“顯示”時,他們指的是實體顯示器。遠端伺服器仍然需要安裝和設定 X 才能運行 GUI 桌面。

Xvnc、X11vnc 和 vncserver 怎麼樣?

XVNC

XVNC是一個可以獨立運行的 X11 伺服器,但它仍然需要桌面來操作它,否則當你啟動它時,你只會看到一個黑色視窗。因此,從技術上講,Xvnc 不需要安裝 X,因為它包含自己的 X 伺服器。

所以 Xvnc 其實是兩台伺服器合而為一。對於應用程式來說,它是一個 X 伺服器,對於遠端 VNC 用戶來說,它是一個 VNC 伺服器。按照慣例,我們安排 VNC 伺服器顯示編號與 X 伺服器顯示編號相同,這表示您可以使用例如。 snoopy:2 指 X 世界和 VNC 世界中機器「snoopy」上的顯示 2。

通常,您將使用 vncserver 腳本啟動 Xvnc,該腳本旨在簡化流程,並且是用 Perl 編寫的。您可能需要編輯此內容以適合您的偏好和當地條件。我們建議使用 vncserver 而不是直接執行 Xvnc,但 Xvnc 基本上具有與標準 X 伺服器相同的選項,但有一些擴充。運行 Xvnc -h 將顯示一個清單。

$ export DISPLAY=localhost:1.0
$ /usr/bin/Xvnc :1 -ac -auth "/root/.Xauthority" \
    -geometry "1200x700" -depth 8 -rfbwait 120000 \
    -rfbauth /root/.vnc/passwd 2> /root/.vnc/ServerDaemon.log &
$ /bin/sleep 10
$ /usr/bin/fvwm 2> /root/.vnc/fvwm.log &
x11vnc

其中 Xvnc 包含它自己的 X 伺服器,x11vnc才不是。它是一個與已運行的 X 伺服器、Xvnc 或 Xvfb 整合的 VNC 伺服器。它確實具有能夠連接到具有幀緩衝區的事物的獨特功能。

摘抄

x11vnc 在 RAM 中保留 X 伺服器幀緩衝區的副本。 X11 程式設計介面 XShmGetImage 用於擷取幀緩衝區像素資料。 x11vnc 將 X 伺服器的幀緩衝區與其副本進行比較,以查看哪些像素區域已變更(因此需要傳送至 VNC 檢視器)。

摘抄

它允許從遠端客戶端遠端存取託管 X Window 會話和 x11vnc 軟體的計算機,不斷輪詢 X 伺服器的幀緩衝區以了解變更。這允許使用者從使用者自己網路上的遠端電腦或透過 Internet 控制其 X11 桌面(KDE、GNOME、XFCE 等),就好像使用者坐在電腦前面一樣。 x11vnc 還可以輪詢非 X11 幀緩衝設備,例如網路攝影機或電視調諧卡、iPAQ、Neuros OSD、Linux 控制台和 Mac OS X 圖形顯示器。

x11vnc 不會建立額外的顯示器(或 X 桌面)來進行遠端控制。相反,它使用類 Unix 計算機顯示器上實時顯示的現有 X11 顯示屏,這與 TightVNC Server 等其他 Linux 替代方案不同。但是,可以使用 Xvnc 或 Xvfb 建立「虛擬」額外顯示器,並讓 x11vnc 連接到它,從而使 X-11 能夠存取無頭伺服器。

虛擬網路伺服器

vncserver只是一個前端 Perl 腳本,有助於簡化在您將使用 VNC 連接的遠端伺服器上設定 VNC + X 的複雜性。

vncserver 用於啟動VNC(虛擬網路運算)桌面。 vncserver 是一個 Perl 腳本,它簡化了啟動 Xvnc 伺服器的過程。它使用適當的選項來運行 Xvnc,並在 VNC 桌面上啟動視窗管理器。

參考

答案2

如果您沒有執行 X11 (X) 但使用幀緩衝區,則可以使用framebuffer-vncserver。https://github.com/ponty/framebuffer-vncserver 這工作得很好,但它不支援輸入。透過直接在伺服器端注入輸入,這很容易解決。

相關內容