使用RealVNC连接无外接显示器的Ubuntu18.04

继续研究了VNC的使用,原来的博客:

https://blog.csdn.net/u012911347/article/details/81209222

能够实现Ubuntu的远程连接,但是需要外接显示器,这里主要任务就是如何在不外接显示器的情况下通过VNC连接到Ubuntu。

目前我用的是Ubuntu18.04,RealVNC6.4.1。由于树莓派用的是RealVNC工作良好,没外接显示器的情况下也能连接,我对RealVNC比较有好感。原来用过一些别的VNC都没有很好地工作,用RealVNC起码配置成功了一种工作模式,也就是前面博客记录的。树莓派上的RealVNC是预授权的,而且只是Home版权限,Service模式运行,就能实现无显示连接,所以我又去搞了下。

既然选了这个VNC,那就看文档:

https://www.realvnc.com/en/connect/docs/debian-install-remove.html

这里说:

这个截图没截完整,它说如果是服务模式,那么要禁用Wayland;如果是虚拟模式,那么要改环境。链接如下:

https://help.realvnc.com/hc/en-us/articles/360003474792?_ga=2.211863325.882477885.1557976466-1333241947.1556608434

这个说的是如果你遇到了灰屏情况,可能是内置Xvnc的问题,像是Ubuntu13.04+就有这种问题。接着说道:

从VNC6.2开始,他们推荐配置VNC为虚拟模式,以便和系统的Xorg server配合,而不是继续使用内置的老旧Xvnc。既然这么说了,我就用虚拟模式吧,其实上面博客我想实现的也是虚拟模式。如何设置呢,链接如下:

https://help.realvnc.com/hc/en-us/articles/360003474752

这里说,默认情况下,Linux在虚拟模式下用的是内置的老旧Xvnc,某些平台上,现代化的桌面环境就会加载失败,也就是表现为灰屏。现代化的应用和扩展程序,尤其是硬件加速有关的,也不会工作。从VNC6.2开始,我们就可以用Xorg server而不是Xvnc了。这样有很多应用能兼容,提供更好的用户体验,尤其是对小红帽来说。

但是呢,如果用Ubuntu,SUSE或者树莓派,还是得继续用Xvnc。这就意味着,不得不换桌面环境了,这也就是为什么,你搜索有关Ubuntu和vnc的博客,很多都是直接用xfce的,而不提原生Unity或者Ubuntu18.04新换的Gnome3。树莓派没问题是因为它虽然来自Debian,但是定制了自己的PIXEL桌面环境,该PIXEL来自lxde,能和Xvnc良好工作。这也就是为什么,我的树莓派好好的,但是想在Ubuntu上用RealVNC还要折腾的原因。

这就回到上一个链接继续开始换环境了,也就是这一节:

这里还是选择xfce吧,就是那个老鼠。命令如下:

sudo apt update
sudo apt install xfce4

然后看下有哪些桌面会话:

grep Exec= /usr/share/xsessions/*.desktop

我这里输出结果为:

/usr/share/xsessions/ubuntu-communitheme-snap.desktop:Exec=env GNOME_SHELL_SESSION_MODE=ubuntu-communitheme /snap/communitheme/current/session
/usr/share/xsessions/ubuntu-communitheme-snap.desktop:TryExec=/snap/communitheme/current/session
/usr/share/xsessions/ubuntu.desktop:Exec=env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
/usr/share/xsessions/ubuntu.desktop:TryExec=gnome-shell
/usr/share/xsessions/xfce.desktop:Exec=startxfce4

我这里选的是xfce,那么修改xstartup文件如下:

#!/bin/sh
DESKTOP_SESSION=xfce
export DESKTOP_SESSION
startxfce4
vncserver-virtual -kill $DISPLAY

这里我将该文件放在了/root/.vnc/目录下,且该文件有可执行权限。然后RENDER扩展会导致Xvnc和Xfce配合出错,所以需要禁用,创建一个/etc/vnc/config.custom文件,添加内容如下:

-extension RENDER

执行上面操作后,输入:

startxfce4

看到:

这个桌面环境就算安装好了。

为了保险起见,重启一下。然后登录的时候,可以选择Ubuntu会话还是xfce4。这里选xfce,那么进入后可以:

ps aux|grep xfce

得到:

/usr/lib/gdm3/gdm-x-session --run-script startxfce4
/bin/sh /etc/xdg/xfce4/xinitrc -- /etc/X11/xinit/xserverrc

等输出。结合前面的博客,设置了RealVNC虚拟模式开机自启动,那么你就可以直接输入ip连接了,比如我这个就是:

连接成功后:

注意此时服务器是带显示器的。

现在拔掉显示器,那么Ubuntu服务器就是headless模式了,完美运行:

wuser@hp:~$ ps aux|grep vnc
root      1339  0.0  0.0  36020  3688 ?        Ss   18:23   0:00 /usr/bin/vncserver-x11-serviced -fg
root      1340  0.0  0.0  40384  5256 ?        Ss   18:23   0:00 /usr/bin/vncserver-virtuald -fg
root      1346  0.3  0.0 146368 48996 ?        S    18:23   0:01 /usr/bin/vncserver-x11-core -service
root      2993  0.1  0.0  87776 34308 ?        S    18:24   0:00 /usr/bin/vncagent service 19
wuser       2996  0.0  0.0 208460 19876 ?        S    18:24   0:00 /usr/bin/vncserverui service 20
wuser       3007  0.0  0.0 146352 17936 ?        S    18:24   0:00 /usr/bin/vncserverui -statusicon 5
wuser       3667  0.0  0.0  21536  1004 pts/0    S+   18:30   0:00 grep --color=auto vnc

这里多了几个vncserverui的东西呢。

看下端口:

wuser@hp:~$ sudo netstat -tupln
激活Internet连接 (仅服务器)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      2026/smbd
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      1346/vncserver-x11-
tcp        0      0 0.0.0.0:5999            0.0.0.0:*               LISTEN      1340/vncserver-virt

看到vncserver用的是5900,那就很容易了,端口转发到一个有公网的服务器上:

功夫不负有心人,我终于可以随意连接我的Ubuntu服务器了。真的想要骄傲下,国内搜的各种帖子很少见到我这种需求的,Google的也很多不合适的,尝试了好多种办法,还是RealVNC的官方指导最给力。这种效果非常好,headless能省出显示器空间,别人也看不到你的操作。像是图像有关的任务,还是需要桌面环境更好开展工作。用Pycharm写python代码也很舒服,完美,十分,如图所示:

这里应该还不是虚拟模式,虚拟模式是可以多个用户连接到每人自己的桌面的。这种实际上虽然没有显示器,但是别人连接的话用的还是你这个桌面,就和普通电脑显示屏一样,仅仅有一个实例而不是多个。目前已经比较满意了,毕竟不是专业运维,机器也就我一个用。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页