Linux下VNC server可选的很多,vnc4server, tightvnc …, 我更喜欢tigervnc.
unity桌面环境在vnc中不能正常使用,我翻遍互联网还是没找到很好的解决办法,退而求其次就是使用gnome (见https://askubuntu.com/questions/518041/unity-doesnt-work-on-vnc-server-under-14-04-lts),但是这玩意儿真心丑,还不如换成mate或xfce4.
Mate是gnome2的fork,在tigervnc下,mate-panel有bug,不能正常关机注销。如果不介意这个功能还是可以选择mate的——如果你是gnome2的忠实用户。
xfc4简洁实用,完全满足我们的业务需求,所以我选择了xfce4桌面环境。
简单描述一下安装步骤。
移除其他vnc server,如果你安装了其他的先删除。
sudo apt-get remove vnc4server tightvncserver
安装xfce4桌面环境及工具包
sudo apt-get install xfce4 xfce4-goodies
ubuntu仓库中并没有编译好的tigervnc, 我们直接从https://bintray.com/tigervnc/stable/tigervnc 下载安装包。
wget https://bintray.com/tigervnc/stable/download_file?file_path=ubuntu-16.04LTS%2Famd64%2Ftigervncserver_1.9.0-1ubuntu1_amd64.deb
安装
sudo dpkg -i tigervncserver_1.9.0-1ubuntu1_amd64.deb
但是会提示依赖不满足,直接修复安装依赖
sudo apt-get install -f
再装
sudo dpkg -i tigervncserver_1.9.0-1ubuntu1_amd64.deb
尝试启动vnc server, 会在home目录创建.vnc目录,里面有config, xstartup,用于配置vnc启动属性。
vncserver
如果没有配置过vnc密码,会要求输入密码,密码文件会存放于~/.vnc/passwd.
启动之后就可以用vnc viewer连接了。 但是我们还需要继续配置,所以停掉
vncserver -kill :1
编辑分辨率
vim .vnc/config
## Supported server options to pass to vncserver upon invocation can be listed
## in this file. See the following manpages for more: vncserver(1) Xvnc(1).
## Several common ones are shown below. Uncomment and modify to your liking.
##
securitytypes=vncauth,tlsvnc
# desktop=sandbox
geometry=1920x1080
# localhost
alwaysshared
修改启动脚本,设置xfce4桌面环境。 VNC的环境变量必须在这里设置,在start xfce4之前
vim .vnc/xstartup
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &startxfce4 &
创建服务, 为了使其能够开机运行, :1 代表了5901端口,如果是其他端口可以自行更改
sudo vim /etc/systemd/system/tigervncserver.service
[Unit]
Description=Start TigerVNC server at startup
After=syslog.target network.target[Service]
Type=forking
User={你的用户名}
PAMName=loginPIDFile=/home/{你的用户名}/.vnc/%H:1.pid
ExecStartPre=-/usr/bin/vncserver -kill :1 > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 :1
ExecStop=/usr/bin/vncserver -kill :1[Install]
WantedBy=multi-user.target
设置开机启动,并立刻运行tigervnc
sudo systemctl daemon-reload
sudo systemctl enable tigervncserver.service
sudo systemctl start tigervncserver