使用 x11vnc 连接时出现黑屏

Col*_*lin 5 vnc remote-desktop

我正在尝试运行 x11vnc 服务器,以便有人可以远程连接到我的计算机,但我无法使其正常工作。我正在使用 Ubuntu 14.04 并使用 Vinagre 连接本地主机来测试 VNC 服务器。我收到登录提示并接受密码,但随后我只是看到黑屏。这似乎不是一个罕见的问题,但我尝试了通过谷歌找到的大量解决方案,但没有一个对我有用。x11vnc 日志没有给出任何错误指示,因此我不知道从哪里开始找出问题所在。

我的 x11vnc 命令:

x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :1 -auth /var/run/lightdm/root/:1 -usepw -forever -o /var/log/x11vnc.log
Run Code Online (Sandbox Code Playgroud)

x11vnc 日志:

11/08/2015 15:14:43 Got connection from client 127.0.0.1
11/08/2015 15:14:43   other clients:
11/08/2015 15:14:43 Normal socket connection
11/08/2015 15:14:43 Disabled X server key autorepeat.
11/08/2015 15:14:43   to force back on run: 'xset r on' (3 times)
11/08/2015 15:14:43 incr accepted_client=5 for 127.0.0.1:48227  sock=7
11/08/2015 15:14:43 Client Protocol Version 3.8
11/08/2015 15:14:43 Protocol version sent 3.8, using 3.8
11/08/2015 15:14:43 rfbProcessClientSecurityType: executing handler for type 2
11/08/2015 15:14:46 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0xFFFFFEFE)
11/08/2015 15:14:46 Enabling NewFBSize protocol extension for client 127.0.0.1
11/08/2015 15:14:46 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0x574D5669)
11/08/2015 15:14:46 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0xFFFFFEFD)
11/08/2015 15:14:46 Enabling full-color cursor updates for client 127.0.0.1
11/08/2015 15:14:46 Enabling X-style cursor updates for client 127.0.0.1
11/08/2015 15:14:46 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0xFFFFFEFF)
11/08/2015 15:14:46 Using tight encoding for client 127.0.0.1
11/08/2015 15:14:48 client useCopyRect: 127.0.0.1 -1
11/08/2015 15:14:48 client_set_net: 127.0.0.1  0.0001
Run Code Online (Sandbox Code Playgroud)

我当前的 ~/.vnc/xstartup (我尝试了很多变体):

#!/bin/sh

export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &

gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
Run Code Online (Sandbox Code Playgroud)

Gol*_*lar 2

如果活动虚拟终端与 X 服务器运行的终端不同(例如,您的情况似乎是这样:您正在同一台计算机上进行测试,但您的 vnc 查看器在另一台 VT 上的会话中运行,而不是您想要的 X 服务器)连接到)它不起作用。(我刚刚遇到了类似的问题,无法再进行 VT 切换,但希望与正在运行的 X 会话进行交互。)

那里有解释:http://www.karlrunge.com/x11vnc/faq.html#faq-linuxvc。引用:

Q-108:我使用 Linux 虚拟终端 (VT) 在用户会话之间实现“快速用户切换”(例如 Betty 使用 Ctrl-Alt-F7,Bobby 使用 Ctrl-Alt-F8,Sid 使用 Ctrl-Alt) -F1:他们使用这些击键在会话之间切换。)为什么连接到 x11vnc 的 VNC 查看器中的视图要么全黑、不更新,要么像素混乱,除非附加的 X 会话 x11vnc 位于主动室性心动过速?

这似乎与应用程序(在本例中为 X 服务器进程)如果不在活动 VT(有时称为虚拟控制台的 VC)上时必须“正常运行”有关。也就是说,它们不应该从键盘读取数据或鼠标或管理视频显示,除非它们具有活动的 VT。鉴于 XGetImage() 调用最终必须从视频硬件本身检索帧缓冲区数据,因此除非 X 会话主动控制 VT,否则 x11vnc 的轮询将无法工作。

似乎没有一个简单的方法可以解决这个问题。在这种情况下,甚至 xwd(1) 也不起作用(尝试一下。)需要在较低级别完成某些操作,例如在 XFree86/Xorg X 服务器中。此外,使用 Shadow Framebuffer(视频帧缓冲区的副本保存在主内存中)似乎并不能解决问题(上次检查是在 2007 年。)

如果没有人坐在工作站上,而您只想将 VT 远程切换到与您的 X 会话关联的 VT(以便 x11vnc 可以正确轮询它),则可以使用 chvt(1) 命令,例如“chvt 7”对于 VT #7。


meu*_*euh 0

你的帖子有些矛盾。x11vnc不读取~/.vnc/xstartup并且通常不连接到-display :1

通常,您的屏幕上已经运行了一个标准的 X11 服务器,并且它显示为:0。它会在显示器上显示您的 gnome 桌面。然后,您运行 x11vnc 将此真实显示器上的内容复制到远程连接。

也许您的意思是使用tightvncserver它创建一个新的不可见帧缓冲区,在其中进行绘制,并复制到远程。上面写着~/.vnc/xstartup