如果没有安装 X Server,VNC 服务器是否可以工作?我知道 vnc 可以与 X Server 配合使用,但是如果没有它呢?
答案1
不,您通常需要在使用 VNC 进行远程处理的服务器上安装 X,因为它仅显示来自该服务器的 X 桌面。
在计算领域,虚拟网络计算(VNC)是一种图形桌面共享系统,它使用远程帧缓冲区协议(RFB)远程控制另一台计算机。它将键盘和鼠标事件从一台计算机传输到另一台计算机,通过网络将图形屏幕更新转发回另一个方向。
这一点可能会让人们感到困惑:
请注意,运行 VNC 服务器的计算机不需要有物理显示器。在正常操作方法中,查看器连接到服务器上的端口(默认端口 5900)。
当他们提到“显示”时,他们指的是物理显示器。远程服务器仍然需要安装和配置 X 才能运行 GUI 桌面。
Xvnc、X11vnc 和 vncserver 怎么样?
XVNCXVNC是一个可以独立运行的 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 这工作得很好,但它不支持输入。通过直接在服务器端注入输入,这很容易解决。