这期干两件事:把 Ubuntu 系统烧进板子,把开发环境搭好。
看起来是"准备工作",但这是最容易卡住的一步------烧录方式选错、驱动没装、SSH 连不上,任何一个问题都能耗掉一整天。我把自己踩过的流程整理了一遍,Windows 和 Ubuntu 两种 PC 的操作都写清楚。
本文用的镜像(后面所有步骤都基于它):
Orangepi5plus_1.2.2_ubuntu_jammy_desktop_xfce_linux6.1.99.img
· 系统:Ubuntu 22.04 (Jammy)
· 桌面:Xfce(不是 Wayland,所以远程桌面能用)
· 内核:Linux 6.1.99
· 大小:约 2.5GB
下载地址(百度网盘,提取码 pjhv):
https://pan.baidu.com/s/1cQR1pcca0P-xuQbTrnGXAw?pwd=pjhv

【图 1:Orange Pi 5 Plus 开发板实物图 + 接口标注图】
0 PC 端准备(先看你用哪种系统)
| 用途 | Windows PC | Ubuntu PC |
|---|---|---|
| 烧 TF 卡 | balenaEtcher(exe 安装版) | balenaEtcher(AppImage,免安装) |
| 烧 eMMC | RKDevTool + 瑞芯微驱动 | 只能用 Windows 电脑(见下方说明) |
| 烧 NVMe | balenaEtcher 或 Win32Diskimager | dd 命令 |
| SSH 连接 | PowerShell 自带 ssh / MobaXterm | 终端自带的 ssh |
| 远程桌面 | NoMachine(Windows 客户端) | NoMachine(Linux 客户端) |
| 写代码 | VSCode + Remote-SSH | VSCode + Remote-SSH |
关键差异:
· eMMC 烧录(RKDevTool)只有 Windows 版
→ Ubuntu 用户烧 eMMC:借一台 Windows 电脑,或者用虚拟机跑 Windows
· TF 卡和 NVMe 两种系统都能烧,只是工具不同
1 系统烧录
先说清楚一件事:RK3588 有"loader"和"系统镜像"两层东西,搞混了就会出问题。
loader(u-boot)→ 负责引导,放在 SPI Flash 里
系统镜像(Ubuntu)→ 放在 TF 卡 / eMMC / NVMe SSD 里
只烧系统镜像、不烧 loader,板子可能启动不了(尤其从 NVMe 启动的场景)。所以顺序是:先烧系统镜像到 TF 卡 → 用 TF 卡启动 → 再烧 loader 到 SPI Flash。
1.1 loader 烧录
loader 烧到 SPI Flash(板载的 SPI NOR Flash),作用是让板子能从 NVMe SSD 启动。
为什么需要它:如果你想把 Ubuntu 系统装在 NVMe SSD 上(速度快、容量大),必须先把 loader 烧进 SPI Flash------因为板子上电时先读 SPI Flash 里的 loader,再由它去引导 NVMe 上的系统。
这一步在板子上操作,跟你的 PC 是 Windows 还是 Ubuntu 无关:
bash
# 1. 先用 TF 卡启动 Ubuntu 系统(TF 卡里已经有系统镜像,见 1.2)
# 2. 在板子上执行
sudo nand-sata-install
# 3. 菜单里选择
# 7 Install/Update the bootloader on SPI Flash
# 然后选 <Yes>,等待完成(左下角显示 Done)

【图 2:SPI Flash 在开发板上的位置】
踩坑提醒:
- 这一步必须在 TF 卡启动的系统里做(不能是 NVMe 启动的系统)
- 烧完可以读一下 SPI Flash 的头部,能看到 u-boot 标识就说明成功
1.2 系统镜像烧录
三种介质,按使用场景选:
| 介质 | 速度 | 容量 | 适合 | Windows PC | Ubuntu PC |
|---|---|---|---|---|---|
| TF 卡 | 慢 | 16-256GB | 第一次试用 | ✓ Etcher | ✓ Etcher |
| eMMC | 中 | 32-256GB | 稳定使用 | ✓ RKDevTool | ✗ 需 Windows |
| NVMe | 快 | 256GB-2TB | 长期使用 | ✓ Etcher | ✓ dd |
方式 A:烧到 TF 卡
准备(两种系统都一样):
- TF 卡 16GB 以上,class10 或更高(推荐闪迪等品牌)
- 读卡器
A-1 Windows PC 操作
1. 下载镜像压缩包(百度网盘链接见开头),用 7-Zip 解压出 .img 文件(约 2.5GB)
2. 下载 balenaEtcher Windows 版:https://www.balena.io/etcher/
→ 选 Portable 版本(免安装,双击就用)
3. 插上读卡器
4. 打开 Etcher → Select image(选 .img)→ Select target(选 TF 卡)→ Flash
5. 等待烧录 + 校验(进度条紫色=烧录,绿色=校验中)
Windows 常见问题:
· Etcher 打不开/报错 → 右键"以管理员身份运行"
· 烧完提示"需要格式化" → 千万别点格式化(Windows 认不出 Linux 分区)
· 解压后没有 .img → 检查是不是只解压了一层(有的压缩包是套娃)
A-2 Ubuntu PC 操作
bash
# 1. 解压镜像(7z 格式)
7z x Orangepi5plus_1.2.2_ubuntu_jammy_desktop_xfce_linux6.1.99.7z
# 解压出 .img 和 .sha(校验文件)
# 2. 校验镜像完整性(重要,能省掉后面一半的怪问题)
sha256sum -c *.sha
# 输出 "OK" 说明镜像没问题
# 3. 方式一:用 balenaEtcher(图形界面)
# 下载 Linux 版(AppImage),双击打开(无需安装)
./balenaEtcher-1.19.25-x64.AppImage
# 然后 Select image → Select target → Flash
# 4. 方式二:直接用图形化的"磁盘写入器"(Ubuntu 自带)
# 右键 .img 文件 → 用"磁盘映像写入器"打开 → 选 TF 卡 → 写入
Ubuntu 特有的坑:
· AppImage 打不开 → 先给它执行权限:chmod +x xxx.AppImage
· 需要 fuse 支持:sudo apt install libfuse2(22.04 上常见)
· 用 dd 直接写 TF 卡也行,但设备名容易搞错(/dev/sdb 还是 /dev/mmcblk0?)
→ 建议先用 lsblk 确认,别手快
Ubuntu 下用 dd 烧 TF 卡(进阶用法):
bash
# 1. 先确认 TF 卡的设备名(别选错,选错会毁掉你的硬盘)
lsblk
# 2. 卸载已挂载的分区
sudo umount /dev/sdX*
# 3. 写入(把 sdX 换成实际设备名,比如 sdb)
sudo dd bs=4M if=Orangepi5plus_1.2.2_ubuntu_jammy_desktop_xfce_linux6.1.99.img \
of=/dev/sdX status=progress
sudo sync
方式 B:烧到 eMMC(只能在 Windows 上做)
先说结论 :RKDevTool 是瑞芯微的 Windows 工具,Ubuntu PC 用不了。
Ubuntu 用户的三个选择:
① 借一台 Windows 电脑(最省事)
② 在 Ubuntu 里装个 Windows 虚拟机(VirtualBox/VMware,USB 直通给虚拟机)
③ 干脆跳过 eMMC,直接烧 NVMe(推荐,见方式 C)
准备(Windows PC):
- eMMC 模块(要单独买,插到板子的 eMMC 接口)
- Type-C 数据线(品质要好)
- 瑞芯微驱动
DriverAssitant_v5.12 - 烧录工具
RKDevTool_Release_v3.15 MiniLoader文件夹
步骤:
1. 安装驱动:解压 DriverAssitant → 运行 DriverInstall.exe → 点"驱动安装"
2. 打开 RKDevTool(免安装,解压即用)
3. 板子不插 TF 卡、不接电源
4. 按住 MaskROM 键不放
5. 接 Type-C 电源上电,然后松开 MaskROM
6. 工具左下角显示"发现一个 MASKROM 设备"→ 进入烧录模式
7. 右键空白区域 → 导入配置 → 选择 MiniLoader 里的配置文件
8. 点"执行",等待完成

【图 3:MaskROM 按键在板子上的位置】
踩坑:
- 进不去 MASKROM 模式:检查 TF 卡是否拔了、电源是否接对
- 驱动装不上:Windows 要临时关掉驱动签名强制
- 烧录中途失败:换一根好的 Type-C 线(劣质线是常见原因)
方式 C:烧到 NVMe SSD
前提:loader 已经烧进 SPI Flash(见 1.1)
C-1 Windows PC 操作
用 balenaEtcher 烧到 NVMe:
1. 把 NVMe SSD 装进 USB 硬盘盒(或用 M.2 转 USB 转接卡)
2. 插到 Windows 电脑
3. Etcher → 选 .img → 选 NVMe 盘 → Flash
4. 烧完拔下来,装回开发板
注意:Windows 下 Etcher 可能认不出 NVMe(如果它在主板 M.2 上)。用 USB 硬盘盒最稳。
C-2 Ubuntu PC 操作(板子上直接用 dd)
bash
# 1. 确认 SSD 被识别
sudo fdisk -l | grep nvme0n1
# 2. 可选:清空 SSD 的前 2000MB(把 target 换成实际设备节点)
sudo dd bs=1M if=/dev/zero of=/dev/nvme0n1 count=2000 status=progress
sudo sync
# 3. 烧录 Ubuntu 镜像
sudo dd bs=1M if=Orangepi5plus_1.2.2_ubuntu_jammy_desktop_xfce_linux6.1.99.img \
of=/dev/nvme0n1 status=progress
sudo sync
这一步也可以在板子上做(TF 卡启动后,把镜像 scp 上去,然后 dd 到 nvme0n1)------效果一样。
踩坑:
if=是镜像路径,of=是目标设备,别写反(写反会毁盘)- 烧完必须
sync,不然可能没写完就断电 - 镜像如果是
.7z/.xz压缩包,先解压
2 环境准备
Ubuntu 系统跑起来了,接下来把开发环境配好------目标是"不用坐在板子前面也能开发"。
2.1 NoMachine:局域网远程桌面
为什么用它:RK3588 跑 Ubuntu 桌面时,你需要看到图形界面(跑 GUI 程序、看摄像头画面)。NoMachine 比 VNC 流畅,而且是免费的。
板子端安装(Windows/Ubuntu 都一样,在板子上操作):
bash
# 下载 arm64 版本的 deb 包(认准 Armv8/Arm64)
# 上传到板子后安装
sudo dpkg -i nomachine_x.x.x_x_arm64.deb
PC 端:
| 系统 | 操作 |
|---|---|
| Windows | 下载 NoMachine Windows 版 → 安装 → 重启 → 打开会自动扫描局域网 |
| Ubuntu | 下载 NoMachine Linux (deb) 版 → sudo dpkg -i nomachine_*.deb → 打开会自动扫描 |
连接步骤(两种系统一样):
- 确保 PC 和板子在同一局域网
- 打开 NoMachine → 设备列表里会看到板子 → 点连接
- 输入板子的用户名密码(
orangepi/orangepi)
关于桌面环境(重要):
本文用的镜像是 Xfce 桌面 → NoMachine 可以正常用 ✓
但如果你用的是 Ubuntu Gnome Wayland 镜像:
→ NoMachine/VNC 会连不上(Wayland 的限制)
→ 解决:换 Xfce 桌面版,或者用 SSH + VSCode(下面这个)
判断自己用的是哪个 :登录后执行 echo $XDG_SESSION_TYPE
· 输出 x11 → NoMachine 可用
· 输出 wayland → NoMachine 不可用
2.2 VSCode Remote:本地写代码,板子上跑
这是最舒服的开发方式------代码在本地写(有补全、有插件),编译运行在板子上。
两种 PC 操作基本一样:
1. 本地装 VSCode
· Windows:官网下载 exe 安装
· Ubuntu:官网下载 deb 包,或 sudo snap install code --classic
2. 装插件:Remote - SSH
3. Ctrl+Shift+P → Remote-SSH: Connect to Host
4. 输入 root@<板子IP>,密码 orangepi
5. 连上后,文件树就是板子的文件系统
前提:板子的 SSH 要能通。
bash
# Windows(PowerShell)
ssh root@192.168.x.x
# Ubuntu(终端)
ssh root@192.168.x.x
Windows 下的 SSH 工具选择:
· PowerShell 自带 ssh(Win10 以上即可用)
· 或者用 MobaXterm(免费版够用,带文件管理)
· 或者用 Xshell(商业软件)
踩坑:
- 连不上先
ping板子 IP - ping 通但 SSH 连不上:板子上执行
sudo reset_ssh.sh - 密码输错:默认 root 和 orangepi 用户密码都是
orangepi
2.3 Docker:环境隔离
为什么要 Docker:后面会用到一堆工具链和依赖,直接装在系统里容易把环境搞乱。用 Docker 隔离,出问题删掉重来,不影响板子上的系统。
板子端(不区分 PC 系统):
bash
# Orange Pi 的 Ubuntu 镜像预装了 Docker,只是服务没启动
enable_docker.sh
# 验证
docker run hello-world
# 看到 "Hello from Docker!" 就成功了
PC 端(如果你也想在自己的电脑上用 Docker):
| 系统 | 安装方式 |
|---|---|
| Windows | 装 Docker Desktop(需要开 WSL2) |
| Ubuntu | sudo apt install docker.io 或官方脚本 |
踩坑:
- Windows 下 Docker Desktop 需要 WSL2,装之前先确认
- 拉镜像慢:换国内镜像源(配 Docker 的 registry-mirrors)
enable_docker.sh找不到:确认用的是 Orange Pi 官方镜像
2.4 添加交换空间
打开终端执行下面的命令可以查看交换空间swap的大小一般只有3G左右,一般都需要扩充交换空间,避免内存使用不足系统卡掉。
# 查看内存和swap
free -h
# 1.添加swap,就下面这几步
sudo swapoff /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1G count=20 # bs是单位1G,count是数量,创建多少个,这样算法下来就是的20G
sudo mkswap /swapfile
sudo swapon /swapfile
# 添加启动挂载,没有这个每次重启后就没有了,需要自己手动执行sudo swapon /swapfile
# 2.添加自动挂载
sudo vim /etc/fstab
最后一行添加
/swapfile swap swap defaults 0 0

3 这期小结
烧录三步:
1. Ubuntu 镜像 → TF 卡(Windows: Etcher / Ubuntu: Etcher 或 dd)
2. TF 卡启动 → 烧 loader 到 SPI Flash(板子上操作)
3. Ubuntu 镜像 → NVMe SSD(Windows: Etcher / Ubuntu: dd)
环境三件套:
1. NoMachine(看图形界面,PC 端有 Windows/Ubuntu 两个版本)
2. VSCode Remote(写代码,两种系统操作一样)
3. Docker(隔离工具链)
4. Swap交换空间
下一期:模型转换------把 ONNX 模型转成 RKNN,在板子的 NPU 上跑起来。
如果本文对你有帮助,欢迎点赞、关注、收藏 。
遇到问题可以评论区留言交流,也欢迎转发给需要的朋友。