[教程] NVIDIA Thor (Ubuntu 24.04) 配置 x11vnc 远程桌面全指南

在 NVIDIA Thor(Drive OS / Ubuntu 24.04)开发板上,默认显示协议通常为 Wayland,且未预配置远程桌面功能。为实现稳定、可交互的远程 GUI 操作,需切换至 X11 协议并部署 x11vnc 服务。

⚠️ 本教程适用于 Ubuntu 24.04 + GDM3 环境,操作前请确保已通过 SSH 或本地终端访问设备。


1. 环境准备:禁用 Wayland 并启用自动登录

x11vnc 依赖 X11 协议,且需用户已登录图形会话才能捕获屏幕内容。

修改 GDM3 配置

1
sudo nano /etc/gdm3/custom.conf

修改 [daemon] 部分如下(取消注释并调整值):

1
2
3
4
5
6
7
[daemon]
# 强制使用 Xorg (X11)
WaylandEnable=false

# 启用自动登录(将 'jetson' 替换为实际用户名)
AutomaticLoginEnable=true
AutomaticLogin=jetson

重启生效

1
sudo reboot

✅ 重启后,系统将默认使用 X11 并自动登录指定用户。


2. 安装 x11vnc

1
2
sudo apt update
sudo apt install x11vnc -y

3. 设置 VNC 连接密码

1
x11vnc -storepasswd
  • 按提示输入密码并确认。
  • 当提示 Write password to /home/jetson/.vnc/passwd? [y]/n 时,输入 y 并回车。

🔒 密码将保存至 ~/.vnc/passwd,请确保路径与后续配置一致。


4. 启动 VNC 服务

方式一:临时手动启动(用于调试)

1
2
x11vnc -auth guess -forever -loop -noxdamage -repeat \
-rfbauth /home/jetson/.vnc/passwd -rfbport 5900 -shared
参数 说明
-auth guess 自动探测 X 授权文件(如 .Xauthority
-forever 客户端断开后服务持续运行
-loop 断连后自动重试
-noxdamage 禁用 X DAMAGE 扩展,提升兼容性
-repeat 支持键盘重复事件
-rfbauth 指定密码文件路径
-rfbport 5900 VNC 服务监听端口
-shared 允许多客户端同时连接

方式二:配置开机自启(推荐)

创建 systemd 服务文件

1
sudo nano /lib/systemd/system/x11vnc.service

写入以下内容(请根据实际用户名调整 User 和路径):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=Start x11vnc at startup
After=display-manager.service

[Service]
Type=simple
User=jetson
ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat \
-rfbauth /home/jetson/.vnc/passwd -rfbport 5900 -shared
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

启用并启动服务

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service
sudo systemctl start x11vnc.service

检查服务状态

1
sudo systemctl status x11vnc.service

5. 客户端连接

  1. 在 PC 端安装 VNC 客户端(如 RealVNC Viewer、TigerVNC)
  2. 输入连接地址:<Thor_IP>:5900(例如 192.168.1.100:5900
  3. 输入第 3 步设置的密码即可进入远程桌面

💡 建议将 Thor 设备配置为固定 IP,便于长期连接。


💡 常见问题与避坑指南

❓ 问题 1:连接后黑屏或分辨率极低

原因:无物理显示器连接(Headless 模式)时,GPU 可能不渲染画面。

解决方案

  • 推荐:使用 HDMI 显卡欺骗器(HDMI Dummy Plug),模拟 1080P 显示器。
  • 备选:通过 xrandr 强制设置虚拟分辨率(需 X11 已启动):
    1
    2
    3
    xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
    xrandr --addmode HDMI-0 "1920x1080_60.00"
    xrandr --output HDMI-0 --mode "1920x1080_60.00"

❓ 问题 2:报错 “No protocol specified” 或 “X11 display not found”

排查步骤

  1. 确认已按第 1 步禁用 Wayland 并启用自动登录。
  2. 检查当前会话是否为 X11:
    1
    2
    echo $XDG_SESSION_TYPE
    # 正确输出应为:x11
  3. 确保 x11vnc 在用户登录后的图形会话中运行(非 TTY 终端)。

❓ 问题 3:无法连接 5900 端口

可能原因:防火墙拦截。

解决方法

1
2
3
4
5
# 若使用 ufw
sudo ufw allow 5900/tcp

# 或临时关闭防火墙测试
sudo ufw disable

❓ 问题 4:systemd 服务启动失败

查看详细日志定位问题:

1
journalctl -u x11vnc.service -f

常见原因:

  • 密码文件路径错误
  • x11vnc 启动时 X 会话尚未就绪 → 可在 ExecStart 前添加 sleep 10 延迟启动

✅ 验证清单

  • 已禁用 Wayland,确认使用 X11
  • 已启用自动登录
  • x11vnc 密码已正确生成并保存
  • systemd 服务已启用并运行正常
  • 防火墙已放行 5900 端口
  • (可选)已连接 HDMI 欺骗器解决黑屏问题

🚀 配置完成后,即可通过 VNC 客户端远程操作 Thor 的完整桌面环境,适用于调试 GUI 应用、RViz2 可视化等场景。如遇其他 NVIDIA Drive 平台问题,欢迎继续交流!