Nor*_*ize 5 vnc xubuntu headless
我在 VMware 虚拟机内的无外设服务器上运行 Xubuntu 12.04。我更喜欢使用 x11vnc 而不是 Xvnc,以便使用 LightDM 和由 LightDM 启动的 X 服务器(并使用 Xubuntu-session 而不是 xfce4 登录)。
问题是它x11vnc比Xvnc(vnc4server和tightvncserver口味)慢得多。我使用的是低速宽带连接,例如,在 上拖动窗口明显变慢x11vnc,我会说大约慢 3-4 倍。
我在 x11vnc 和 Xvnc 上都强制使用 16 位和 1280x800,但我不确定 x11vnc 实际上是否使用 16bpp(请参阅下面的日志)。
我使用 /etc/init/x11vnc 中的启动脚本启动 x11vnc:
start on login-session-start
script
x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 \
-auth /var/run/lightdm/root/:0 -forever -shared -bg \
-o /var/log/x11vnc.log -rfbport 5901 -localhost -nopw -xrandr
end script
Run Code Online (Sandbox Code Playgroud)
默认情况下,这将以 32bpp 的 800x600 开始,不能通过命令行参数更改。我必须做:
apt-get install xserver-xorg-video-dummy
Run Code Online (Sandbox Code Playgroud)
然后使用以下内容创建 /etc/X11/xorg.conf (默认情况下不存在):
Section "Device"
Identifier "Configured Video Device"
Driver "dummy"
EndSection
Section "Monitor"
Identifier "Configured Monitor"
HorizSync 31.5-48.5
VertRefresh 50-70
EndSection
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1280x800"
EndSubSection
EndSection
Run Code Online (Sandbox Code Playgroud)
连接到它时,/var/log/x11vnc.log 说:
30/11/2013 07:12:32 Pixel format for client 127.0.0.1:
30/11/2013 07:12:32 16 bpp, depth 16, little endian
30/11/2013 07:12:32 true colour: max r 31 g 63 b 31, shift r 11 g 5 b 0
30/11/2013 07:12:32 no translation needed
Run Code Online (Sandbox Code Playgroud)
注意true color部分。
此外,在 x11vnc 中使用 16bpp 时,下部面板中仍然存在透明度,而在 Xvnc 中使用“-depth 16”时,所有透明面板都具有纯色,并且面板配置中的“alpha”选项消失了。这让我觉得在使用 x11vnc 时 XFCE 仍然检测到 32 位显示,这可能是缓慢的原因。
我也试过xserver-command=X -depth 16在/etc/lightdm/lightdm.conf,但并没有任何区别。
我做了:
apt-get install vnc4server
vncserver :1 -depth 16 -geometry 1280x800
Run Code Online (Sandbox Code Playgroud)
这将启动一个新的 X 会话,具体取决于我在 中的内容~/.vnc/startup,即:
#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
# x-window-manager &
startxfce4 &
Run Code Online (Sandbox Code Playgroud)
默认情况下没有线框。拖动窗口显示完整窗口,而不仅仅是边框,而且它仍然明显比 x11vnc 快,后者在拖动窗口时仅显示线框!如果我用tightvncserver 替换vnc4server 也是如此。
关于如何使 x11vnc 同样快的任何线索?它一定有能力!
我尝试了 x11vnc 的各种选项(从所有 thos -nox* -nowireframe 等)都无济于事。
或者,我可以停止 LightDM 并使用 ~/.vnc/xstartup 启动 Xvnc,以便它启动与从 LilghtDM 登录屏幕相同的 Xubuntu 会话,而不是 XFCE4 会话......但我不知道如何。我确实替换了startxfce4,/etc/X11/Xsession但它看起来不一样。字体较小,并且有人工制品。
任何帮助,将不胜感激!
我设法回答了问题的替代部分,即使用 vnc4server 或ightvncserver 启动 Xubuntu 会话而不是普通的 XFCE 会话。它与 LightDM 分开,然后可以停止或手动设置。稍后我会研究尼古拉斯的建议。
这相当于通过 LightDM 使用 Xubuntu 会话登录,如果我的 vnc 连接中断或断开连接,它仍然保持活动状态,并且我可以享受 Xubuntu 自定义。
为此,只需~/.vnc/xstartup包含以下内容:
#!/bin/sh
export XDG_CONFIG_DIRS=/etc/xdg/xdg-xubuntu:/etc/xdg:/etc/xdg
export XDG_DATA_DIRS=/usr/share/xubuntu:/usr/local/share/:/usr/share/:/usr/share
vncconfig -iconic &
. lightdm-session
Run Code Online (Sandbox Code Playgroud)
您可以替换. lightdm-session为exec startxfce4或startxfce4 &。前者实际上是LightDM所说的,但它最终称为xfce4-session。
然后,这将启动一个 Xubuntu 会话,而不是一个普通的 XFCE 会话,如果不需要 X/键盘访问,您可以完全停止 LightDM。
您可以通过将以下内容放置在中来配置守护程序/etc/init/vncserver.conf:
start on runlevel [2345]
stop on runlevel [016]
post-start script
su USER -c "vncserver :1 -geometry 1280x800 -depth 16 -localhost -SecurityTypes None"
end script
post-stop script
su USER -c "vncserver -kill :1"
end script
Run Code Online (Sandbox Code Playgroud)
然后用 启动/停止它start vncserver。以上适用于 vnc4server,将仅在 127.0.0.1 上启动 Xvnc 侦听,并且不需要密码。这对我来说很方便,因为我无论如何都使用 ssh 隧道:
ssh -L6901:127.0.0.1:5901 USER@HOST.DOMAIN.COM
Run Code Online (Sandbox Code Playgroud)
如果您使用tightvncserver,则删除选项-SecurityTypes None,因为它不理解它。请注意,tightvncserver 始终要求输入密码(您不能使其无密码)。
注意:如果上面的 USER 不是 root,或者如果您以非 root 身份运行“vncserver :1 [options]”,那么在 XFCE 内部,sudo-ing 到 GUI 应用程序中将会出现问题,因为底层 sudo-ed 应用程序将找不到X 显示。我还没有找到解决这个问题的方法。使用 x11vnc 它可以工作,因为 x11vnc 连接到现有的 X 会话,包括 :0 会话。