Steps to Solve the VNC "Gray Screen" Issue on Ubuntu Systems

  liuyuancheng        2025-06-02 00:40:44       913        0          English  简体中文  繁体中文  ภาษาไทย  Tiếng Việt 

title20.png

诸如TeamViewer、AnyDesk和LogMeIn等图形化桌面共享工具允许用户远程控制另一台计算机的屏幕、键盘和鼠标。在这些工具中,像TigerVNC、TightVNC、RealVNC等工具通过VNC (Virtual Network Computing) 协议提供跨平台控制。通过利用远程帧缓冲 (RFB) 标准来传输屏幕更新和输入事件,VNC实现了远程桌面控制。然而,Ubuntu用户在通过VNC连接时经常会遇到一个破坏性的“灰屏”问题——一个空白、无响应的显示器,会中断生产力。本指南提供了明确的步骤来诊断和解决这个常见的VNC服务器问题,从而恢复您在Ubuntu系统上的远程桌面功能。

Author:      Yuancheng Liu
Created:     2025/05/31
Version:     v_0.0.1
Copyright:   Copyright (c) LiuYuancheng

问题描述

在某些Ubuntu系统上设置VNC服务器时,用户可能会遇到一个令人沮丧的问题:远程连接后,屏幕仅显示一个灰色的背景,光标显示为一个小的黑色“X”,如下所示:

s_0310.png

在其他情况下,桌面背景变为灰色,仅显示单个文件资源管理器窗口(如Files或Nautilus):

s_0414.png

当您单击桌面时,您可能会遇到无法找到Desktop的错误,即使Desktop文件夹显示在那里:

s_0512.png

此问题通常是由于VNC会话期间初始化桌面环境时出现问题引起的。常见原因包括:

  • 缺少或配置错误的桌面环境(例如,GNOME、XFCE或MATE)

  • VNC服务器中不正确的显示索引设置

  • 关键配置文件的权限或所有权不正确

  • 以root身份运行VNC服务器,这可能导致环境冲突

虽然网上有很多教程提供了各种修复方法,但本文提供了一个逐步指南,用于解决灰屏问题,从一个干净的Ubuntu系统开始。即使VNC服务器以root身份运行,该解决方案也有效,并且已经在Ubuntu 18.04、20.04和22.04上进行了测试。


解决问题的详细步骤(支持Root访问)

本节提供了一个完整的、逐步的解决方案,以解决Ubuntu系统上TightVNC中的灰屏问题。该解决方案配置了一个轻量级的XFCE桌面环境或GNOME Flashback会话,并使VNC能够正常运行——即使在root用户下运行。

步骤1:安装XFCE桌面环境

XFCE是一个轻量级的桌面环境,可以很好地与VNC配合使用。

sudo apt-get update
sudo apt-get install xfce4 -y

同时安装XFCE goodies(可选工具和实用程序):

sudo apt-get install xfce4-goodies

步骤2:安装TightVNC和GNOME Flashback会话

TightVNC是此设置中使用的VNC服务器。GNOME Flashback提供了一个更简单的会话,适合远程访问。

sudo apt-get install tightvncserver -y
sudo apt-get install gnome-session-flashback -y

XFCE或GNOME Flashback确保了VNC会话的轻量级、兼容的桌面。


步骤3:禁用Wayland(启用X11)

Ubuntu默认使用Wayland,它与许多VNC配置不兼容。

编辑GDM3配置:

sudo nano /etc/gdm3/custom.conf

取消注释或修改以下行:

WaylandEnable=false

保存并关闭文件。这确保了重启后使用X11。当Wayland被禁用时,允许VNC在X11下运行。


步骤4:准备VNC配置文件(以Root身份)

本指南配置VNC以供root用户演示。对于正常使用,建议在常规用户下进行配置。

sudo mkdir -p /root/.vnc
sudo chmod 0644 /root/.vnc

设置VNC密码:

sudo touch /root/.vnc/passwd
sudo chmod 0600 /root/.vnc/passwd
sudo bash -c 'echo "" | tightvncpasswd -f > /root/.vnc/passwd'

步骤5:初始化VNC并创建xstartup脚本

启动VNC以初始化配置文件:

vncserver

然后停止它以进行下一步:

vncserver -kill :1

创建或覆盖xstartup文件:

sudo touch /root/.vnc/xstartup
sudo chmod 0600 /root/.vnc/xstartup
sudo nano /root/.vnc/xstartup

粘贴以下内容:

#!/bin/sh
autocutsel -fork
xrdb $HOME/.Xresources
xsetroot -solid grey
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="GNOME-Flashback:Unity"
export XDG_MENU_PREFIX="gnome-flashback-"
unset DBUS_SESSION_BUS_ADDRESS
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check --debug &

确保该文件是可执行的:

chmod +x /root/.vnc/xstartup

该xstartup脚本显式启动图形会话并禁用DBUS冲突。


步骤6:创建一个Systemd服务以自动启动VNC

创建VNC服务文件:

sudo nano /etc/systemd/system/tightvncserver.service

添加以下内容:

[Unit]
Description=TightVNC Server
After=syslog.target network.target

[Service]
Type=forking
User=root
ExecStartPre=-/usr/bin/tightvncserver -kill :0
ExecStart=/usr/bin/tightvncserver -geometry 1920x1080 -depth 24 :0
ExecStop=/usr/bin/tightvncserver -kill :0

[Install]
WantedBy=multi-user.target

设置权限:

sudo chmod 0600 /etc/systemd/system/tightvncserver.service

启用并启动服务:

bashCopyEditsudo systemctl daemon-reexec
sudo systemctl enable tightvncserver
sudo systemctl start tightvncserver

Systemd 服务确保 VNC 在启动时自动启动。


步骤 7:重启并通过 VNC 连接

现在,重启机器:

sudo reboot

重启后,使用 VNC 客户端,如 TigerVNC ViewerRealVNC 连接到:

s_0713.png

:5900

或者如果使用显示器 :1

:1

您应该看到一个功能齐全的桌面,如下所示:

s_0614.png

问题解决了!


参考


Last edit by LiuYuancheng (liu_yuan_cheng@hotmail.com) at 02/06/2025, if you have any problem, please send me a message.

           

  RELATED


No related articles

  0 COMMENT


No comment for this article.



  RANDOM FUN

Hot deployment


  SUPPORT US