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

English 简体中文 繁体中文 ภาษาไทย Tiếng Việt
Summary

Ubuntu users often face a "Gray Screen" issue when connecting via VNC, typically stemming from desktop environment initialization problems or Wayland's default usage. A robust solution involves installing a lightweight desktop environment like XFCE or GNOME Flashback alongside TightVNC. Key steps include disabling Wayland in GDM3's configuration to ensure X11 is used, preparing VNC configuration files for the desired user, and crafting an `xstartup` script to explicitly launch a `gnome-flashback-metacity` session. Finally, a Systemd service is created to manage and autostart the VNC server, ensuring persistent remote desktop access after a system reboot. This comprehensive approach resolves the common VNC display issues on Ubuntu systems.

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 ([email protected]) at 02/06/2025, if you have any problem, please send me a message.

  RELATED

No related programming articles found. Browse all programming tutorials and articles.

  COMMENT

1
小佳
Nov 13, 2025 at 4:46 am

太棒了,解決了我的烦恼。

对于startxfce4,我的问题出现在:

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

sudo nano /etc/gdm3/custom.conf

取消注释或修改以下行:

WaylandEnable=false
修改完这个,我再进行修改 配置,桌面就恢复了。

sudo vi .vnc/xstartup ,然后写入

 
 
#!/bin/sh

autocutsel -fork
xrdb $HOME/.Xresources
xsetroot -solid grey

# 禁用 X 键盘映射,避免乱码
export XKL_XMODMAP_DISABLE=1
# 清除会话管理器和 DBUS 地址,防止图形桌面冲突
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
# 启动 Xfce 桌面(若为 GNOME 桌面,替换为 "gnome-session &")
startxfce4 &
# gnome-session &