本文主要以Go2EDU为例, 使用G1的朋友们请直接跳转到[[开机自启动]]

本教程目的为:
- 使得Nano可以无线上网, 不需要有线连接, 可当成开发电脑使用
- 不需要命令行ssh操作的情况下, 实现
- 开机自动
- 开机自动启动Nano的nomachine服务器
- 只需要打开nomachine等待Nano初始化完毕后自动连接

最终, 本教程思路为:
1. 有线连接使Nano能访问互联网 -> 拽包(没有依赖包不一定能成功安装网卡驱动)
2. 插入无线网卡, 安装无线网卡驱动
3. 设置开机在无用户登录&无图形界面加载前自动连接WIFI
4. 设置开机在无用户登录&无图形界面加载前自动启动nomachine服务器

前置知识:

  • Go2EDU搭载的高算力平台拓展坞内置的开发板是Jetson Nano, 仅具有一个有线网卡, 没有无线上网功能, 需要外接USB网卡
  • Go2搭载的拓展坞(Nano开发板接口)固定IP地址为192.168.123.18, 用户名为unitree, 密码为123
  • Nano的系统为Ubuntu20.04, 内置了foxy(ROS2)和noetic(ROS1)

你需要准备以下材料:

  • 搭载了高算力平台(拓展坞) 的Go2EDU
  • 一台Ubuntu系统的<电脑>
  • 支持Liunx内核的USB无线网卡
  • 一根网线
  • USB转网口电脑外接转换器/带网口的电脑拓展坞(如果你的电脑没有自带网口的话)

一. 有线连接&加载图形界面

由于Nano无法无线联网, 操作+传输数据只能依靠有线+ssh

先了解一下思路, 你现在不需要进行操作
大致思路为:

  • 有线连接<电脑>, 命令行ssh进入Nano开启nomachine服务器
  • <电脑>安装nomachine, 192.168.123.18(有线局域网)远程桌面连接Nano, 使得可以在<电脑>上操作Nano的图形界面
  • 设置<电脑>连接Nano的网口为NAT转发, 使得Nano可以通过<电脑>访问互联网
  • 然后可以愉快进行各种拽包 + 驱动下载了😋

接下来进行具体操作:

确保Ubuntu<电脑>连接Nano的 有线网口 ip地址为192.168.123.xxx(本文档设置为192.168.123.99), 设置 有线网口静态ip 方式见 如何为 Ubuntu 24.04 LTS 设置固定 IP 地址 (图形界面 / 命令行) - 系统极客

在Nano中进行以下操作:

  1. 在使用Ubuntu系统的<电脑>上(作者仅尝试过原生Ubuntu系统, 不推荐虚拟机), 使用网线连接<电脑>和拓展坞上的RJ45网口
  2. <电脑>打开终端 -> ping 192.168.123.18
    • 成功ping通 ->进行第三步
    • ping不通 -> 有线连接有问题, 查看自己网卡是否在123网段下/考虑网线或USB转网口转换器有问题
  3. 终端 ssh unitree@192.168.123.18, 输入密码123然后回车(linux里密码不会显示, 直接回车), 显示成功连接上Nano
  4. 输入1或者2进入任意一个ros环境(foxy-ROS2或noetic-ROS1)
  5. 当前路径应该是/home/unitree, 执行pwd可查看当前路径
  6. 执行ls -a查看当前目录下所有文件, 应该存在一个名为nomachine.sh文件
  7. 执行./nomachine.sh, 输入密码回车
    • 注: Linux中需要显式路径来运行一个程序, 不能使用隐式路径如nomachine.sh
    • .表示当前文件夹, ./某个文件表示当前文件夹下的某个文件
  8. 服务器NX Server成功启动

在<电脑>中进行以下操作:
利用远程桌面访问Nano图形界面

  1. 官网下载nomachine, 安装见官方文档
  2. 我们目前先通过有线连接到远程桌面, 打开nomachine, 点击”Add”添加远程桌面. 名字自取, 地址填写192.168.123.18, 点击”Add”
  3. ![[Pasted image 20250725163359.png]]
  4. ![[Pasted image 20250725163555.png]]
  5. 回到主页面, 点击”Connect”
  6. 登录界面, user栏输入unitree, password栏输入123
  7. ![[Pasted image 20250725164421.png]]
  8. 成功远程连接

让Nano可访问互联网
6. 在<电脑>终端中运行ifconfig 注: ctrl+alt+T快速开启新终端窗口
7. 找到外网接口, 通常是wlp…开头的网卡, 这是你连接路由器的网卡, ip通常为192.168.1.xxx eg. 作者的外网接口为wlp6s0
8. 找到内网接口, 是你连接Nano板的有线网卡, ip是192.168.123.xxx eg. 作者的是enx6c1ff723fd4b
9. 配置NAT模式

1
2
3
4
5
6
7
8
9
#把这里的中文替换成你的外网接口和内网接口
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o 你的外网接口 -j MASQUERADE
sudo iptables -A FORWARD -i 你的Nano接口 -o 你的外网接口 -j ACCEPT
sudo iptables -A FORWARD -o 你的Nano接口 -m state --state RELATED,ESTABLISHED -j ACCEPT

#保存你的设置
sudo apt install iptables-persistent
sudo netfilter-persistent save

在Nano中进行以下操作:

  1. 设置Nano有线网卡网关为192.168.123.99(作者Ubuntu的Nano接口IP), dns为8.8.8.8
    使用netpaln
1
2
3
4
5
6
7
8
9
sudo nano /etc/network/interfaces

# 设置 eth0 网卡为静态 IP
auto eth0
iface eth0 inet static
address 192.168.123.18
netmask 255.255.255.0
gateway 192.168.123.99
dns-nameservers 8.8.8.8
  1. ping baidu.com尝试是否连接到互联网
  2. <电脑>和Nano开发板各sudo reboot后仍然可以ping通即为成功

现在你可以拽个包试试了

1
sudo apt update #没报错就是说明可以正常联互联网拽包了

安装无线网卡驱动

把买来的USB无线网卡插在拓展坞上
按照无线网卡商家指南去官网下载驱动(如果不是免驱无线网卡)
安装驱动的方式见网卡官方指南, 此处不多赘述

设置Nano连接Wi-Fi

如果能正常连接wifi, 就正常连接

如果遇到“System policy prevents Wi-Fi scans” 问题, 是因为 Ubuntu 系统的权限策略阻止了普通用户进行wifi扫描, 解决方法如下:
创建一个 polkit 权限配置文件

1
sudo nano /etc/polkit-1/localauthority/50-local.d/47-allow-wifi-scans.pkla

添加以下内容, 添加完了ctrl+X退出, y同意保存, 回车确认保存的文件名

1
2
3
4
5
6
7
8
9
10
[Allow Wifi Scan]
Identity=unix-user:*
Action=org.freedesktop.NetworkManager.wifi.scan;
org.freedesktop.NetworkManager.enable-disable-wifi;
org.freedesktop.NetworkManager.settings.modify.own;
org.freedesktop.NetworkManager.settings.modify.system;
org.freedesktop.NetworkManager.network-control
ResultAny=yes
ResultInactive=yes
ResultActive=yes

终端里重启NetworkManager

1
sudo systemctl restart NetworkManager

现在你应该不会遇到弹窗了

设置开机自启动

问题根本原因: ssh本质是用户登录, 正常来说Ubuntu的Wi-Fi只有在用户登录后才会连接, 并且只有在用户登录后才会显示图形界面,
但是 NetworkManager 被 polkit 权限策略限制,开机无 GUI/用户登录时禁用自动连接

->问题变成: 在用户登录前强制连接Wifi, 然后运行~/nomachine.sh文件启动服务器

原理(可跳过):
  • systemd 是 Linux 的初始化系统,接管启动时所有服务/脚本调度。
  • 服务文件通过 WantedBy= 字段挂靠到特定目标(target):
    • multi-user.target:登录前的基本服务;
    • graphical.target:图形桌面环境加载完成;
    • network-online.target:网络已连接;
  • polkit 控制了非 GUI 登录时对 Wi-Fi 扫描/连接权限,造成阻断;
  • USB 网卡通常在 Linux 启动后期由驱动加载,需使用脚本或延迟等待确保设备就绪

具体设置步骤如下:

使用 nmcli 工具进行网络手动配置,并开启自动连接功能。

1
2
nmcli device wifi connect "你的WiFi名称" password "Wifi密码" name mywifi #创建并连接Wifi
nmcli connection modify mywifi connection.autoconnect yes #启动自动连接

解决polkit权限???

1
2
3
4
5
6
```

在主目录下创建`jetson-init.sh`脚本整合任务
```bash
cd ~ #回到主目录
sudo nano jetson-init.sh

添加以下内容, ctrl+X退出, y同意保存, 回车确认保存的文件名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash

LOG="/var/log/nano-boot.log"
exec >> $LOG 2>&1

echo "启动时间:$(date)"
echo "[STARTUP] 脚本开始执行"

# 后续步骤...

systemctl daemon-reload
sleep 5

# 启动 nomachine.sh
if [ -f /home/unitree/nomachine.sh ]; then
echo "[INFO] 启动 NoMachine 脚本"
bash /home/unitree/nomachine.sh
fi

echo "[COMPLETE] 脚本执行结束 $(date)"

添加可执行权限

1
chmod +x ~/jetson-init.sh

创建服务文件/etc/systemd/system/jetson-init.service, 并添加以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=Jetson Nano 初始化脚本
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/home/unitree/jetson-init.sh
User=root
WorkingDirectory=/home/unitree/
Restart=on-failure

[Install]
WantedBy=multi-user.target

启用并测试systemed服务

1
2
3
4
5
6
# 修改或部署新的 service 文件后,建议顺序如下:
sudo systemctl daemon-reexec # 如果你更新了 systemd 本身
sudo systemctl daemon-reload # 加载新的服务定义文件
sudo systemctl enable jetson-init.service # 设置开机启动
sudo systemctl restart jetson-init.service # 启动服务以验证配置

无线连接nomachine
给Nano的无线网卡设置静态ip为192.168.1.102
创建并编辑 Netplan 配置文件

1
sudo nano /etc/netplan/01-netcfg.yaml

添加内容并保存

1
2
3
4
5
6
7
8
9
10
11
12
13
network:
version: 2
renderer: networkd
wifis:
你的网卡名字:
dhcp4: no
addresses: [192.168.1.102/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
access-points:
"你的Wi-Fi名称":
password: "你的Wi-Fi密码"

防止你看不懂, 可以参考作者的范例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
network:
version: 2
renderer: networkd
wifis:
wlan0:
dhcp4: no
addresses: [192.168.1.102/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
access-points:
"thisIsMyWifi":
password: "00000000"

应用更改

1
2
sudo netplan apply
ifconfig #检查确认Nano无线网卡的ip地址是否为192.168.1.102

在同一局域网下<任意装了nomachine的电脑>上, 添加地址为192.168.1.102的远程连接, 同上文操作后即可使用, 记得勾选自动登录

![[Pasted image 20250725163733.png]]
![[Pasted image 20250725163818.png]]
现在只要开机启动Go2, 电脑上打开nomachine对应的远程桌面, 等待一段时间初始化后(大概3-5分钟), 就会自动连接上Nano![[Pasted image 20250725164057.png]]