X Window System を使用しない VNC サーバー

X Window System を使用しない VNC サーバー

VNC サーバーは X サーバーがインストールされていなくても動作しますか? VNC が X サーバーで動作することは知っていますが、X サーバーがない場合はどうなりますか?

答え1

いいえ、通常は、VNC を使用してリモート接続するサーバーに X がインストールされている必要があります。これは、このサーバーから X デスクトップを表示するだけだからです。

コンピューティングにおいて、仮想ネットワーク コンピューティング (VNC) は、リモート フレーム バッファー プロトコル (RFB) を使用して別のコンピューターをリモート制御するグラフィカル デスクトップ共有システムです。キーボードとマウスのイベントを 1 台のコンピューターから別のコンピューターに送信し、ネットワークを介してグラフィカル画面の更新を逆方向に中継します。

この部分が人々を混乱させる原因かもしれません:

VNC サーバーが稼働しているマシンには物理的なディスプレイがなくても構いません。通常の操作方法では、ビューアはサーバーのポート (デフォルト ポート 5900) に接続します。

「ディスプレイ」とは、物理的なモニターのことです。リモート サーバーでは、GUI デスクトップを実行できるように、X をインストールして構成する必要があります。

Xvnc、X11vnc、vncserver についてはどうでしょうか?

翻訳

翻訳はスタンドアロンで実行できる X11 サーバーですが、操作するにはデスクトップが必要です。デスクトップがない場合、起動すると黒いウィンドウが表示されます。Xvnc には独自の X サーバーが含まれているため、技術的には X をインストールする必要はありません。

つまり、Xvnc は実際には 2 つのサーバーが 1 つにまとめられたものです。アプリケーションにとっては X サーバーであり、リモート VNC ユーザーにとっては VNC サーバーです。慣例により、VNC サーバーのディスプレイ番号は X サーバーのディスプレイ番号と同じになるように設定されています。つまり、たとえば snoopy:2 を使用して、X の世界と VNC の世界の両方でマシン 'snoopy' のディスプレイ 2 を参照できます。

通常、Xvnc は、プロセスを簡素化するために設計された Perl で記述された vncserver スクリプトを使用して起動します。好みやローカル条件に合わせてこれを編集する必要があるかもしれません。Xvnc を直接実行するのではなく、vncserver を使用することをお勧めしますが、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 は、X サーバーのフレーム バッファのコピーを RAM に保存します。フレーム バッファのピクセル データを取得するには、X11 プログラミング インターフェイス XShmGetImage を使用します。x11vnc は、X サーバーのフレーム バッファとそのコピーを比較して、どのピクセル領域が変更されたか (したがって、VNC ビューアに送信する必要があるか) を確認します。

抜粋

リモート クライアントから X Window セッションと x11vnc ソフトウェアをホストしているコンピュータへのリモート アクセスを可能にし、X サーバーのフレーム バッファを継続的にポーリングして変更の有無を確認します。これにより、ユーザーは、自分のネットワーク上にあるリモート コンピュータから、またはインターネット経由で、あたかもその前に座っているかのように、X11 デスクトップ (KDE、GNOME、XFCE など) を制御できます。x11vnc は、Web カメラや TV チューナー カード、iPAQ、Neuros OSD、Linux コンソール、Mac OS X グラフィック ディスプレイなどの非 X11 フレーム バッファ デバイスもポーリングできます。

x11vnc は、リモート コントロール用の追加ディスプレイ (または X デスクトップ) を作成しません。代わりに、TightVNC Server などの他の Linux 代替手段とは異なり、Unix 系コンピュータのモニターに表示される既存の X11 ディスプレイをリアルタイムで使用します。ただし、Xvnc または Xvfb を使用して「仮想」追加ディスプレイを作成し、x11vnc をそれに接続して、ヘッドレス サーバーへの X-​​11 アクセスを有効にすることは可能です。

vncサーバー

vncserverは、VNC を使用して接続するリモート サーバー上で VNC + X を設定する複雑さを軽減するフロントエンド Perl スクリプトです。

vncserver は、VNC (Virtual Network Computing) デスクトップを起動するために使用されます。vncserver は、Xvnc サーバーの起動プロセスを簡素化する Perl スクリプトです。適切なオプションで Xvnc を実行し、VNC デスクトップ上でウィンドウ マネージャーを起動します。

参考文献

答え2

X11 (X) を実行していないがフレームバッファを使用している場合は、framebuffer-vncserver があります。https://github.com/ponty/フレームバッファ-vncserver これは、入力をサポートしていないという点を除けば、うまく機能します。サーバー側で直接入力を挿入することで、この問題を簡単に回避できます。

関連情報