Press "Enter" to skip to content

Month: March 2015

Ubuntu14.04使用VNC解决gnome-session-is-accelerated: No composite extension

Ubuntu14.04目前仍是非常不稳定,使用VNC的时候,只有一个终端,检查日志以后,发现了如下错误:

$ cat /home/brett/.vnc/bt-desktop:1.log
……
gnome-session-is-accelerated: No composite extension.
gnome-session-check-accelerated: Helper exited with code 256
gnome-session-is-accelerated: No composite extension.
gnome-session-check-accelerated: Helper exited with code 256
 
** (process:6694): WARNING **: software acceleration check failed: Child process exited with code 1
 
** (gnome-session:6694): CRITICAL **: We failed, but the fail whale is dead. Sorry....
……

简单看了下,可能是gnome-session无法识别到OpenGL硬件加速导致的。该问题普遍存在于DELL大部分系列的服务器上。这个帖子提供了一种解决办法,但我试了下,貌似是无效的。

解决办法:

$ sudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal

$ vim ~/.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-session &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
vncconfig -nowin &

然后重新启动VNC终端即可

也可以通过安装KDE/XFCE来解决:

$ sudo apt-get install gnome-core xfce4 firefox
$ vim ~/.vnc/xstartup  #修改此文件,写入以下内容
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &
#gnome-session --session=gnome-flashback &

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

参考文章1
参考文章2
参考文章3
============================================
后续补充:
Ubuntu14.04真是很差劲,使用VNC连接成功上桌面以后,S键、D键与Alt功能键相反了。
解决办法:

#必须在图形界面的终端里操作,不能在远程的终端里操作
gsettings set org.gnome.desktop.wm.keybindings panel-main-menu "['<Alt>F1']"
gsettings set org.gnome.desktop.wm.keybindings switch-applications "['<Alt>Tab']"
gsettings set org.gnome.desktop.wm.keybindings show-desktop "['<Alt>d']"
gsettings set org.gnome.desktop.wm.keybindings maximize "['<Alt>Up']"
gsettings set org.gnome.desktop.wm.keybindings unmaximize "['<Alt>Down']"
#也可以运行dconf-editor在GUI界面中展开指定的项进行修改

2015.03.23补充:
VNC日志里出现如下错误:

error opening security policy file /etc/X11/xserver/SecurityPolicy
Could not init font path element /usr/share/fonts/X11/cyrillic, removing from list!
Could not init font path element /usr/share/fonts/X11/100dpi/:unscaled, removing from list!
Could not init font path element /usr/share/fonts/X11/75dpi/:unscaled, removing from list!
Could not init font path element /usr/share/fonts/X11/100dpi, removing from list!
Could not init font path element /usr/share/fonts/X11/75dpi, removing from list!
Could not init font path element built-ins, removing from list!

解决办法:

sudo aptitude install xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic

2015.03.24,关于windows下无法连接Ubuntu 14.04 VNC的问题,在网上发现了一个解决办法(参考文章),但我试了下貌似不成功:

#必须在图形界面的终端里操作,不能在远程的终端里操作
sudo apt-get install dconf-tools
sudo dconf write /org/gnome/desktop/remote-access/require-encryption false

gsettings set org.gnome.Vino require-encryption false

更改背景图片:

#必须在图形界面的终端里操作,不能在远程的终端里操作
sudo dconf write /org/gnome/desktop/background/picture-uri file:///usr/share/backgrounds/Forever_by_Shady_S.jpg

gsettings set org.gnome.desktop.background draw-background false
gsettings set org.gnome.desktop.background picture-uri file:///usr/share/backgrounds/Forever_by_Shady_S.jpg
gsettings set org.gnome.desktop.background draw-background true

改成debian的背景图片
gsettings set org.gnome.desktop.background picture-uri file:///usr/share/images/desktop-base/joy-wallpaper_1920x1080.svg
1 Comment

Port Forwarding & Port Triggering

发现一篇关于“端口触发”(Port Triggering)很有意思的的文章,转载过来记录一下。

在使用NAT的网络中,内部终端的IP地址为私网地址,发出去的IP包在NAT网关处进行地址转换,以公网地址与外部联系。在转换过程中,网关建立映射表,并维护对应连接的状态。当来自公网的包返回时,按照目的地址查找映射表,找到对应的私网地址,然后再次转换后发送给内部终端。这样,映射表中条目的增加是由内部发往外部的数据流触发的。因此,如果外部想直接访问内部是不可能的。

在实际应用中,被NAT网关隐藏起来的内网很可能架设FTP服务器、HTTP服务器、邮件服务器等等,那么如何从外部访问这些服务器呢?Port Forwarding提供了这样的机制。Port Forwarding根据来自公网的IP包的端口,将其转发到指定的内部IP地址上。例如,一个NAT网关的WAN侧地址为123.4.5.6,内部架设了一台FTP服务器,地址为192.168.0.8,端口21,及一台HTTP服务器,地址为192.168.0.9,端口8080。NAT网关(可能是路由器)上设置Port Forwarding规则:

路由器的WAN口inbound为流入,outbound为流出。

若Inbound的IP包目的地址为123.4.5.6,端口21,则将其地址转换为192.168.0.8,端口21,然后向内网转发;若Inbound的IP包目的地址为123.4.5.6,端口80,则将其地址转换为192.168.0.9,端口8080,然后向内网转发。

这样,通过设置Port Forwarding,从外网可以直接访问到内网的服务器。这里还有一个好处,对于某些linux服务器,只有root权限才可开放端口号小于1024的服务,而使用root帐号具有一定的风险,因此如上例,可设置内网HTTP服务器端口为8080,当外部采用常规的HTTP 80端口访问时,会映射到8080端口。

Port Triggering,是指当Outbound的流来自指定的内网端口(triggered port),自动打开网关WAN口的指定端口(forwarded port),并将指向forwarded ports的流转发到内网触发triggered ports的终端上。这里举一个例子,当内网的某机器(192.168.0.8)试图访问公网某IP(8.8.8.8)的某端口时,则自动打开WAN口(123.4.5.6)的指定端口(forwarded port)。这样,公网上的任意计算机(例如8.8.8.8)就可以通过WAN口(123.4.5.6)的指定端口访问位于内网的机器。这样的应用有时候会用到,最典型的就是XDMCP协议。

Leave a Comment

ubuntu自定义登录xsession和桌面环境

查看系统内置的xsession

$ ls /usr/share/xsessions/
gnome-classic.desktop  gnome-fallback.desktop  ubuntu-2d.desktop  xsession.desktop
gnome.desktop          gnome-shell.desktop     ubuntu.desktop     xterm.desktop

修改默认登陆的Xsession

$ sudo vim /etc/lightdm/lightdm.conf
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu    #修改为如上的xsession即可
……

注意,Ubuntu 14.04的配置文件位于/usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

切换X管理程序
以下命令需要远程操作,因为停止X管理程序会导致黑屏

$ sudo apt-get install gdm
$ sudo dpkg-reconfigure gdm  #切换显示管理器(将lightdm换为gdm)
$ sudo /etc/init.d/lightdm stop  #注意此时会黑屏
$ ps -ef | grep Xorg         #找到Xorg的进程,并kill之
$ sudo /etc/init.d/gdm start #然后就会发现桌面恢复了
Leave a Comment