在使用 Jetson 开发板、Ubuntu 服务器或树莓派进行嵌入式开发时,NoMachine 凭借其高效的NX协议,成为了远程桌面的首选工具。然而,许多开发者(尤其是刚接触Linux或嵌入式设备的朋友)经常会遇到一个令人头秃的问题:连接成功,但只有黑屏、白屏,或者卡在一个NVIDIA/厂商Logo界面,死活进不去桌面。

别慌,这通常不是系统坏了,而是显示服务(Display Manager)和 NoMachine “打架”了。本文将带你深入原理,并提供一套行之有效的解决方案。

问题根源:为什么会出现黑屏?

在深入解决方案之前,我们需要理解“黑屏”背后的逻辑。

NoMachine的工作原理是接管或模拟一个图形显示环境。但在Linux系统中,默认的显示管理器(如Ubuntu的GDM3)通常会独占显卡资源,尤其是在系统启动时。

当你远程连接时,可能会出现以下两种冲突:

  • 资源抢占:GDM3(GNOME Display Manager)已经启动了物理显示会话,NoMachine试图创建新会话时被拒绝,导致黑屏。
  • 无头模式(Headless)失效:如果你的设备(如Jetson Nano/Xavier)没有连接物理显示器,显卡驱动可能不会加载,导致X Server无法启动,NoMachine也就没有画面可以传输。
场景一:Jetson/Ubuntu设备,卡在Logo或黑屏(最常见)

这是最典型的情况。你看到 NVIDIA 的 Logo 转圈,然后黑屏,或者连接后只有一个鼠标光标。这是因为 GDM3 占用了物理显示通道,阻止了 NoMachine 创建虚拟桌面。

解决方案:停止GDM服务,释放显卡资源

这是目前针对 Jetson 和 Ubuntu 系统最有效的“杀手锏”。我们需要通过SSH(命令行)来操作。

  1. 通过SSH连接到你的设备
    既然图形界面进不去,我们需要用终端工具(如PuTTY或Windows Terminal)SSH登录后台。
  2. 停止GDM3服务
    在SSH终端中输入以下命令:
    sudo systemctl stop gdm3
    
    这条命令会立即停止 Ubuntu 默认的图形登录界面,释放显卡控制权。
  3. 重启NoMachine服务
    紧接着,强制 NoMachine 重新检测显示环境:
    sudo /etc/NX/nxserver --restart
    
  4. 重新连接
    回到NoMachine客户端,断开并重连。此时,NoMachine应该会弹出一个提示框:“Cannot detect any display running...”,请务必点击“Yes”。NoMachine将为你创建一个全新的虚拟桌面,你就能顺利看到熟悉的 Ubuntu 界面了。

场景二:无显示器连接(Headless)导致的黑屏

如果你是在调试无人机机载板、服务器,或者单纯不想接显示器,系统可能因为检测不到EDID(显示器识别信息)而不启动图形界面。

解决方案:安装虚拟显示器驱动

我们需要“欺骗”系统,让它以为接了一个高性能显示器。

  1. 安装Dummy驱动
    sudo apt-get update
    sudo apt-get install xserver-xorg-video-dummy
    
  2. 配置Xorg
    创建或编辑配置文件 /usr/share/X11/xorg.conf.d/xorg.conf(如果没有该目录可手动创建),添加以下内容以定义一个虚拟的1920x1080显示器:
    Section "Device"
        Identifier  "DummyDevice"
        Driver      "dummy"
        VideoRam    256000
    EndSection
    
    Section "Monitor"
        Identifier  "DummyMonitor"
        HorizSync   28.0-80.0
        VertRefresh 48.0-75.0
        Modeline "1920x1080" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +HSync +VSync
    EndSection
    
    Section "Screen"
        Identifier  "DummyScreen"
        Device      "DummyDevice"
        Monitor     "DummyMonitor"
        DefaultDepth 24
        SubSection "Display"
            Depth 24
            Modes "1920x1080"
        EndSubSection
    EndSection
    
  3. 重启系统
    执行 sudo reboot。重启后,系统会认为连接了一个1080P的屏幕,NoMachine连接时自然就有画面了。
场景三:Wayland协议冲突

Ubuntu 20.04/22.04默认使用Wayland作为显示协议,而NoMachine对Xorg(X11)的支持更为成熟。Wayland的安全机制有时会阻止NoMachine抓取屏幕。

解决方案:切换回Xorg

  1. 编辑GDM配置
    在SSH中执行:
    sudo nano /etc/gdm3/custom.conf
    
  2. 取消注释
    找到 #WaylandEnable=false 这一行,去掉前面的 # 号,使其变为:
    WaylandEnable=false
    
  3. 重启GDM
    sudo systemctl restart gdm3
    
    这将强制系统使用Xorg协议,通常能解决大部分兼容性问题。
场景四:Windows远程连接黑屏

如果你是用NoMachine连接Windows电脑出现黑屏,原因通常是显卡驱动的硬件加速冲突。

解决方案:禁用硬件加速

  1. 修改配置文件
    在Windows上找到 C:\ProgramData\NoMachine\server.cfg
  2. 添加参数
    用记事本打开,添加或修改以下行:
    EnableOpenGL 0
    UseSoftwareRendering 1
    
    这会强制NoMachine使用CPU进行渲染,虽然会稍微增加CPU负载,但能完美解决NVIDIA/AMD显卡驱动导致的黑屏问题。
总结与排查清单

NoMachine黑屏虽然烦人,但通常只要找准了“病灶”,解决起来非常快。为了方便大家记忆,我整理了一个简易排查表:

现象 可能原因 核心解决手段
Jetson/Ubuntu黑屏 GDM3抢占资源 sudo systemctl stop gdm3
无显示器黑屏 显卡未初始化 安装 xserver-xorg-video-dummy
Ubuntu 22.04黑屏 Wayland协议不兼容 修改 custom.conf 禁用Wayland
Windows黑屏 GPU硬件加速冲突 修改 server.cfg 开启软件渲染
树莓派黑屏 缺少桌面环境 安装 lxdexfce4

最后,如果以上方法都无效,请检查你的NoMachine日志(通常在 /usr/NX/var/log/ 下),那里往往藏着最真实的错误代码。希望这篇指南能帮你告别黑屏,享受流畅的远程开发!

                                                   老徐,2026/03/31

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐