
很多玩 Jetson Orin 的朋友第一次接触远程桌面时第一反应就是装个 VNC 或者用 Ubuntu 自带的桌面共享结果不是卡成幻灯片就是各种分辨率适配问题折腾到怀疑人生。我自己在 Orin 上踩了一圈坑之后最终固定下来的方案就是 NoMachine这篇文章就把我在 Nvidia Jetson OrinUbuntu 20.04上配置 NoMachine 远程桌面的完整过程、ARM64 版 deb 包的获取方式以及各种坑全部整理出来给有同样需求的朋友一个可以直接照抄的作业。1. 为什么远程桌面我首推 NoMachine先说结论在 Jetson Orin 这种 ARM 架构的板子上谈远程桌面方案选择真的不多但 NoMachine 几乎是体验最好的一个。1.1 VNC、XRDP 与 NoMachine 的对比很多朋友习惯性选择 VNC因为 Ubuntu 桌面环境自带配置起来似乎不难。但实际用过就会知道VNC 的短板非常明显帧率低、画面撕裂严重如果通过网络远程操作 Orin 上的可视化程序或者摄像头预览那体验基本属于能动就行的水平。XRDP 是另一个常见选项它基于 RDP 协议理论上兼容性不错但在 Jetson 平台上经常需要额外处理桌面会话和权限问题配置复杂度反而更高。而且 XRDP 在 Wayland 和 Xorg 之间切换时经常出幺蛾子。NoMachine 则是基于 NX 技术底层协议针对高延迟、低带宽场景做了大量优化实际体验下来在局域网内几乎感觉不到卡顿画面流畅度、色彩还原都远好于 VNC。更重要的是NoMachine 在 ARM64 平台上有官方原生支持安装包直接提供 arm64 版本不需要通过 QEMU 模拟或者 Wine 兼容层这对 Orin 用户来说简直太友好了。1.2 NoMachine 在 Jetson 平台上的独特优势NoMachine 在 Jetson Orin 上还有一个非常实用的特性它默认通过 4000 端口建立 NX 协议连接同时会自动开启 4080 端口的 Web 访问能力。也就是说你可以直接用浏览器远程访问也可以在电脑、手机上安装 NoMachine 客户端连接灵活性很高。另外NoMachine 的一大好处是它创建的是一个独立的虚拟显示会话而不是抢占物理桌面。这意味着即使你人在现场已经在 Orin 上接了一个显示器正在用着远端再连上去也不会互相干扰LogMeIn 和很多 VNC 实现根本做不到这一点。我在实际使用中经常是一边连着显示器调试硬件一边通过 NoMachine 从笔记本上拉取截图和日志两边互不影响效率提升非常明显。2. 准备工作确认环境与下载 ARM64 版 deb 包这个环节虽然看起来简单但恰恰是最容易出问题的地方很多朋友下载完安装包发现装不上十有八九就是架构搞错了。2.1 确认 Jetson Orin 的系统版本与架构首先明确一个关键概念Jetson Orin 有多个型号包括 Orin Nano、Orin NX 和 AGX Orin它们的核心都是 ARM64 架构aarch64。所以在下载任何软件包时都必须选择 arm64 版本而不是 x86_64amd64版本。我的测试环境是硬件Nvidia Jetson Orin NX 开发套件系统Ubuntu 20.04JetPack 5.x 自带系统桌面环境GNOME默认架构aarch64安装前用这条命令确认一下架构确保万无一失uname -m输出结果如果是aarch64那就没问题可以放心下载 arm64 版的 deb 包。如果输出是x86_64说明你拿到的根本不是 Orin 的系统镜像那就要先解决系统问题。还有一个容易忽略的点确认系统里没有残留的旧版 NoMachine 或者其它远程桌面软件。尤其是之前装过 VNC 或者 XRDP 的建议先卸载干净否则端口冲突和服务抢占会让排查过程非常痛苦。2.2 ARM64 版 deb 包下载渠道详解关于 NoMachine 的下载网上信息非常混乱很多教程给的都是 x86 版的下载链接用 Orin 的朋友照着装就会报错。这里明确告诉大家几个靠谱的渠道最权威的下载地址是 NoMachine 官网的 Linux 下载页面在 Download for ARMv8/AArch64 栏下会提供 deb 格式的安装包。注意官网下载可能会根据 IP 自动匹配地区如果找不到 ARM64 的入口可以切换访问方式再试。另一个渠道是 Nvidia 官方开发者论坛很多老玩家会在帖子里分享针对 Jetson 平台验证过的 NoMachine 版本号和下载链接这些信息通常更贴近 Jetson 用户的实际使用场景。无论从哪个渠道下载拿到安装包后第一件事就是检查文件名和 SHA256 校验值。文件名里通常会包含arm64字样例如nomachine_8.x.x_1_arm64.deb。我已经见过太多人拿着 x86_64 的安装包硬装然后跑过来问为什么依赖错误。下载完再用sha256sum核对一下文件完整性避免下载损坏的包sha256sum nomachine_8.x.x_1_arm64.deb比对官网给出的校验值一致后再进行安装这一步能帮你省去很多莫名奇妙的安装失败问题。3. 安装与基础配置一步步操作环境准备好、安装包下载完成后就可以开始正式安装了。这里我会把每一步操作和背后的原因都说明白避免大家只知道敲命令、不知道命令在干什么。3.1 使用 dpkg 安装 deb 包及依赖处理安装 NoMachine 非常简单使用dpkg命令即可不需要额外配置 apt 源sudo dpkg -i nomachine_8.x.x_1_arm64.deb如果安装过程中提示缺少依赖先执行一下sudo apt --fix-broken install然后再重新执行一次dpkg -i。我在多台 Orin 上实操下来新版 NoMachine 对 Ubuntu 20.04 的依赖控制做得非常好通常不会出现依赖地狱的情况。安装完成后NoMachine 会自动注册系统服务无需手动设置开机启动。安装完成后你会在系统应用列表里看到 NoMachine 的图标同时/usr/NX目录下会出现完整的程序文件。这个目录是 NoMachine 的核心配置文件、日志、服务脚本都集中在这里后面排查问题经常要跟它打交道。3.2 服务启动确认与常见安装报错处理安装完成后第一件事是确认服务是否正常运行sudo systemctl status nxserver正常情况下会看到active (running)的状态。如果服务没有自动启动手动启动一下sudo systemctl start nxserver若要设置为开机自启sudo systemctl enable nxserver考虑到 Jetson 设备常做嵌入式部署这个自启设置很有必要否则每次重启板子都要手动开服务太不省心。注意如果你此前装过旧版 NoMachine直接覆盖安装新版后配置文件可能会残留旧参数。建议在安装新版前先彻底卸载旧版sudo dpkg -r nomachine再装新的。不要图省事直接覆盖否则连接阶段容易碰到莫名其妙的授权问题。安装过程中如果碰到Package architecture (amd64) does not match system (arm64)这段报错说明你的安装包下载错了去重新下载 arm64 版本没有别的捷径。如果碰到dpkg: error processing package nomachine优先看日志文件sudo tail -f /usr/NX/var/log/nxserver.log日志文件里的信息远比终端输出的报错内容要详细得多排查方向可以准确很多。4. NoMachine 客户端连接与核心设置服务端配置好之后就到了真正使用的环节。NoMachine 支持多种客户端连接方式不同方式对应的使用场景和配置要点也不一样。4.1 局域网内客户端连接与配置建议局域网连接是最常用的方式。你需要先在电脑或手机上下载对应系统的 NoMachine 客户端然后在地址栏输入 Orin 的 IP 地址。查看 IP 的方法很简单ip addr show | grep inet一般在eth0或wlan0下能看到类似192.168.x.x的地址。首次连接时客户端会提示输入用户名和密码。这里有个关键点NoMachine 默认使用系统用户认证所以输入的是 Ubuntu 系统的用户名和密码不是单独注册 NoMachine 账号。连接成功后客户端工具栏里会有几个非常实用的选项分辨率设置可以根据本地屏幕调整也可以选择自动伸缩画质模式局域网内建议选清晰优先远程办公的话选流畅优先更合适声音传输如果在 Orin 上播放视频或运行语音程序可以开启声音转发我个人习惯把分辨率设置成自动调整这样可以适配笔记本屏幕的缩放比例画面基本不会出现黑边或者比例失调的问题。帧率方面默认设置已经足够流畅如果要在远程打开实时摄像头预览或者 3D 可视化界面可以手动把帧率限制拉高体验会有所改善。4.2 浏览器 Web 远程访问的启用与安全设置NoMachine 一个经常被忽略但很实用的功能就是基于浏览器的 Web 访问。在局域网内只要在电脑浏览器地址栏输入https://Orin的IP:4080就能看到一个网页登录界面输入系统用户名密码后可以直接在浏览器里操作远程桌面。这个方案在临时借用电脑、不方便安装客户端的场景下极其好用。不过有一点需要特别提醒4080 端口默认走的是 HTTPS 加密通道浏览器会提示证书不受信任这是正常的点击继续访问即可因为证书是自签名的。如果想让 Web 访问更安全可以在/usr/NX/etc/server.cfg中修改默认端口、限制访问来源或者关闭 HTTP 明文访问只保留 HTTPS。配置文件里的注释很详细改起来不难但改完记得重启服务sudo systemctl restart nxserver5. 分辨率调整、GPU 加速与性能优化远程桌面的体验好不好很大程度上取决于分辨率设置和图形渲染效率。在 Orin 上这一步明显比普通 PC 更值得花心思。5.1 通过 NX 配置调整默认分辨率NoMachine 默认接入屏幕分辨率并不总是能匹配本地电脑的显示器比例偶尔会出现画面过大或过小的情况。最简单的办法是在客户端连接界面的设置里把显示配置选为与客户端屏幕大小一致或者调整为客户端窗口大小。但如果你希望不通过客户端界面直接固定服务端的会话分辨率可以通过修改配置文件实现。编辑sudo nano /usr/NX/etc/node.cfg找到与显示相关的配置项例如自定义分辨率的参数DisplayGeometry 1920x1080x24保存后重启nxserver服务即可。这个方法在嵌入式项目里特别实用因为很多时候你是希望设备固定输出到某个特定分辨率的屏幕而不是跟着远程客户端走。5.2 启用 GPU 硬件加速及带宽优化Jetson Orin 的 GPU 性能很强如果 NoMachine 没有正确调用 GPU 加速远程桌面在渲染 3D 应用或者高清视频时就会白白消耗大量 CPU 资源性能发挥不出来。安装完 NoMachine 后默认配置文件一般已经开启了硬件加速选项但有的版本默认设置比较保守。可以检查/usr/NX/etc/node.cfg中的相关参数确保没有锁定软件渲染。开启 GPU 加速后最直观的感受是画面拖动不再掉帧视频播放的 CPU 占用率也会明显下降。如果远程使用 ROS 的 RViz 或 Gazebo 这类图形密集型应用这个优化几乎是必须的否则 Orin 性能再强远程体验也会被渲染瓶颈死死卡住。再补充一个带宽优化技巧。如果是在公网或者跨网络环境下连接 Orin受制于上行带宽画面可能会出现明显的延迟和模糊。NoMachine 会根据当前网络质量自动调整画质你也可以手动在客户端的连接设置里把画质模式调整为优化速度和响应而不是优化画质。实测在有 10Mbps 左右上行带宽的情况下流畅度可以保持得很好虽然不是全分辨率清晰度但操作响应几乎不打折。6. 常见问题与排查技巧实录最后这部分是我个人反复踩坑总结出来的排障经验几乎能覆盖 80% 的 NoMachine 在 Jetson 平台上的问题。6.1 连接失败与认证错误最常见的连接失败原因有三个第一杀毒软件或防火墙拦截了 4000 端口。Ubuntu 系统默认不一定启用了 ufw但如果之前手动开过务必放行sudo ufw allow 4000/tcp sudo ufw allow 4080/tcp第二服务没有启动。连接前先用systemctl status nxserver确认服务在线而不是想当然认为安装完就一直在跑。第三用户名或密码错误。注意 NoMachine 认证的是系统账户如果系统账户带有密码策略而你又新创建了无密码账户需要在系统端先设置好密码再连接。还有一个比较隐蔽的问题如果你对 Orin 的系统用户做过重命名或者权限调整NoMachine 的 PAM 认证模块可能无法正常读取用户信息。这种情况下的解决方法不是在 NoMachine 里折腾而是检查系统用户权限是否正常。6.2 黑屏与花屏处理思路连接成功但显示黑屏这是 NoMachine 在 Jetson 平台上最容易被问到的场景。黑屏原因主要集中在两点一是桌面会话启动异常二是当前用户没有加载 GNOME 桌面会话。处理思路是sudo systemctl restart gdm3 sudo systemctl restart nxserver如果在重启前有一些正在运行的程序没有保存这两个命令执行后不要慌程序数据显示不会受影响只是图形界面重载一下。注意这条命令会强制结束当前桌面会话涉及未保存的文件请提前处理。如果黑屏频繁出现重点是查看会话日志cat /usr/NX/var/log/nxserver.log看有没有关于桌面启动失败的报错。很多时候是 Orin 上自带的桌面环境与 NoMachine 虚拟显示会话之间的兼容性问题可以通过在连接设置里更改桌面环境协议来规避。针对 Jetson 平台特有的双屏场景物理 HDMI 屏 NoMachine 虚拟屏如果虚拟屏显示花屏或异常拉伸可以在/usr/NX/etc/node.cfg中强制指定虚拟显示的分辨率和刷新率参数将显示模式固定为常用规格即可。6.3 卡顿延迟排查与性能调优排除网络因素后卡顿的另一个常见原因是 Orin 内置的 GPU 电源管理策略太保守。在远程操作时如果负载不高GPU 频率会降到很低导致画面渲染跟不上。可以通过以下命令查看 GPU 频率sudo jetson_clocks这个命令的最大作用是强制把 CPU/GPU 频率拉高到最高值。不过要留意开启后功耗和发热会显著上升如果是靠电池供电的设备需要合理权衡续航与性能。另外一个比较容易忽略的卡顿源是 NoMachine 的显示捕获方式。默认情况下 NoMachine 使用高效捕获机制但在 Wayland 环境下偶尔会出现异常。如果你的 JetPack 版本默认用的是 Wayland而你又遇到鼠标漂移、画面刷新异常的问题可以尝试在显示服务器层面切回 Xorg很多莫名的兼容性问题能一次性消除。6.4 卸载与重装时的注意事项如果实在排查不出问题选择卸载重装也是可以的sudo dpkg -r nomachine卸载后重新安装时要注意清理残余的配置目录sudo rm -rf /usr/NX这样做的好处是彻底恢复全新状态但也意味着你之前做过的所有自定义配置都会丢失。所以在执行这个操作前务必先把有用的配置项备份出来。有些朋友在卸载后遇到dpkg: warning: ignoring request to remove nomachine which is not installed这类提示说明卸载不彻底或者安装时就已经出了问题这时可以手动确认/usr/NX目录是否存在并同步清理对应的 systemd 服务残留。写在最后NoMachine 在 Jetson Orin 上的使用体验我个人认为是当前所有远程桌面方案里最省心的。它不像 VNC 那样需要折腾各种权限和桌面适配也不会像 XRDP 那样在 Wayland 环境里频繁踩坑。只要跟着上面的步骤走对了架构、下对了包、配置好了服务和显示参数基本能做到开机即用。最后分享一个小技巧如果你打算长期在无头模式下远程访问 Orin也就是不接物理显示器使用建议在 NoMachine 配置好之后把 GNOME 桌面的自动锁屏关闭这样可以避免远程会话闲置时被锁屏挡住减少很多不必要的麻烦。用 NoMachine 跑 Jetson 设备时间和耐心花在刀刃上收益还是很可观的。