Rock 5B Plus 安装 Armbian 到 NVMe 硬盘全攻略(含救砖技巧)
对于 Rock 5B Plus 开发板来说,将 Armbian 系统安装到 NVMe 硬盘,是提升运行速度、扩展存储容量的最优方案。但不同于普通的 SD 卡启动,NVMe 安装需要先解决“引导识别”的核心问题——RK3588 芯片默认不认识 NVMe 硬盘,必须通过 SPI Flash 引导才能实现正常启动。本文将详细拆解安装全流程、关键操作细节,以及常见问题解决方案,新手也能轻松上手。
一、核心原理:为什么需要 SPI Flash 引导?
在开始操作前,先搞懂一个关键问题:为什么不能直接把系统写到 NVMe 就开机?核心原因在于 Rock 5B Plus 的 CPU(RK3588)的启动机制。
RK3588 芯片内置了一段固化在硅片里的代码(叫 MaskROM),相当于“急救启动程序”,但它功能有限,只能识别 eMMC 和 microSD 卡,无法识别 NVMe 硬盘——因为 NVMe 依赖复杂的 PCIe 协议栈,这段精简的急救代码装不下对应的驱动。
而板载的 16MB SPI Flash 芯片,就相当于开发板的“BIOS”,它的作用是存储引导程序(U-Boot)。当我们把适配 Armbian 的引导程序写入 SPI Flash 后,开机时 CPU 会先读取这段引导程序,而引导程序自带 NVMe 驱动,能“看见”NVMe 硬盘,进而加载里面的系统。
简单总结:SPI Flash 是 NVMe 启动的“桥梁” ,没有它,CPU 根本不知道 NVMe 硬盘的存在,哪怕里面写了系统也无法启动。
补充说明:SPI Flash 在 Linux 系统中会被识别为 MTD 设备(Memory Technology Device,专门管理原始闪存的子系统),通常挂载为 /dev/mtd0 或块设备 /dev/mtdblock0,这也是后续操作中会用到的设备路径。
二、安装核心步骤(两种方法,优先推荐脚本安装)
安装的核心分为两步:① 写引导程序到 SPI Flash;② 写系统到 NVMe 硬盘。推荐使用 Armbian 自带的 armbian-install 脚本,自动化程度高,能避免手动操作的风险;也可以用 dd 命令手动烧录,适合有一定经验的用户。
方法一:用 armbian-install 脚本(推荐,新手友好)
前提:已准备好写入 Armbian 系统的 microSD 卡,且开发板能通过 SD 卡正常启动。
-
第一步:写入引导程序到 SPI Flash
- 启动 SD 卡中的 Armbian 系统,打开终端,输入命令:
sudo armbian-install - 在弹出的菜单中,选择选项 7(类似“Install/update bootloader on MTD Flash”),脚本会自动从当前运行的系统中提取适配的引导程序,通过 dd 命令写入 /dev/mtdblock0(SPI Flash)。
- 注意:如果 SPI Flash 数据损坏或引导程序过旧,导致 SD 卡都无法启动,需通过 PC 端 RKDevTool(Windows),在 Maskrom 模式下强行烧录 SPI 引导镜像(如 rkspi_loader.img)。
- 启动 SD 卡中的 Armbian 系统,打开终端,输入命令:
-
第二步:写入系统到 NVMe 硬盘
- 再次运行命令:
sudo armbian-install - 选择选项 4(“Boot from MTD Flash - system on SATA, USBvor NVMe”),进入目标磁盘选择界面。
- 选择 NVMe 驱动器,通常是 /dev/nvme0n1(可通过
lsblk命令确认设备名称)。 - 文件系统建议选择 ext4,兼容性好、稳定性高,适合日常使用。
- 再次运行命令:
脚本的优势:不仅能自动完成引导和系统写入,还会处理分区格式化、更新 UUID(确保重启后能正确挂载系统)、自动扩容等“琐事”,比手动操作更省心,也能避免很多踩坑点。
方法二:用 dd 命令手动烧录(进阶操作)
如果想手动控制烧录过程,可采用 dd 命令,核心分为“烧录系统镜像”和“烧录引导镜像”两步,缺一不可。
4.1 烧录系统镜像到 NVMe
- 确保 SD 卡中的 Armbian 系统能正常启动,且 NVMe 硬盘已正确插入开发板。
- 通过
lsblk命令确认 NVMe 设备名称(通常为 /dev/nvme0n1),避免写错设备导致数据丢失。 - 执行烧录命令(替换路径为你的 Armbian 镜像路径):
sudo dd if=/path/to/xxx.img of=/dev/nvme0n1 bs=1M status=progress conv=fsync
4.2 烧录引导镜像到 SPI Flash
- 牢记:仅烧录系统到 NVMe 无效,必须同步烧录引导程序到 SPI Flash,否则 CPU 无法识别 NVMe。
- 确认 SPI 设备路径为 /dev/mtdblock0(通过
lsblk或cat /proc/mtd确认)。 - 执行烧录命令(确保引导镜像适配 Armbian,如 rkspi_loader.img):
sudo dd if=/path/to/rkspi_loader.img of=/dev/mtdblock0
4.3 分区扩容(必做步骤)
Armbian 镜像通常只有几个 GB,而 NVMe 硬盘多为 256GB 及以上,烧录后剩余空间会显示为“未分配”,需要进行扩容:
- 自动扩容:大多数现代 Armbian 镜像,第一次从 NVMe 启动时会自动运行
armbian-resize-filesystem脚本,将根分区扩展到整个硬盘。 - 手动扩容:若未自动扩容,可通过
sudo armbian-config,进入“System”选项,选择“Resize”,按照提示完成扩容;也可手动用 fdisk 工具分区(适合进阶用户)。
三、关键注意事项(避坑重点)
-
不要随意用 dd 命令写入 SPI Flash(/dev/mtdblock0):除非使用 armbian-install 脚本或官方工具,否则错误写入数据会导致引导程序损坏,开发板无法从任何介质(SD 卡、eMMC、NVMe)启动,只能通过 Maskrom 模式救砖。
-
烧录前无需手动分区:dd 是块级拷贝工具,会直接覆盖目标硬盘的分区表,即使预先分区,也会被镜像中的分区结构替换,只需确保 NVMe 未挂载即可。
-
确认设备名称:操作前务必用
lsblk确认 NVMe 和 SPI Flash 的设备路径,避免误写其他设备(如 SD 卡)导致数据丢失。
四、常见问题答疑(含救砖方案)
1. Rock 5B Plus 的启动优先级是什么?
RK3588 芯片遵循固定启动顺序:1. SPI Flash → 2. eMMC → 3. microSD 卡 → 4. NVMe SSD。只要 SPI Flash 中有有效引导程序,就会按此顺序寻找系统;若 eMMC 为空,会自动加载 SD 卡中的系统。
2. 既然 SPI 为空也能读 SD 卡,为什么还要写引导?
核心原因是:SPI 为空时,CPU 靠内置的 MaskROM 识别 SD 卡,但 MaskROM 不支持 NVMe。当我们拔掉 SD 卡、eMMC 为空时,CPU 找不到可启动的设备,就会黑屏或进入 Maskrom 模式——而写入引导程序后,引导程序自带 NVMe 驱动,能识别 NVMe 硬盘,实现无 SD 卡启动。
3. 进不去 SD 卡系统,该怎么办?
这种情况多是 SPI Flash 中的引导程序配置错误,导致 CPU 卡在 SPI 启动阶段,跳过了 SD 卡。解决方案是通过 Maskrom 模式强制擦除 SPI Flash,具体步骤如下:
-
准备工具:USB-A to USB-C 数据线(支持数据传输)、PC 端 RKDevTool(Windows)。
-
操作流程:
- 断电,拔掉 SD 卡和 NVMe 硬盘。
- 按住开发板上的 Maskrom 按钮不放。
- 将 USB-C 数据线一端连 PC,另一端连开发板(通过 PC 供电,此时板子绿灯亮,黑屏属于正常现象)。
- 打开 RKDevTool,若显示“Found One MASKROM Device”,说明成功进入救砖模式。
- 点击“Erase Flash”(擦除整个 Flash)或“Advanced Device → Erase SPI”,擦除损坏的引导程序。
- 擦除完成后,拔掉数据线,重新插入 SD 卡,通电即可正常启动。
五、总结
Rock 5B Plus 安装 Armbian 到 NVMe 的核心,是解决“引导识别”问题——SPI Flash 引导程序是关键,armbian-install 脚本是最省心的实现方式,能自动处理引导写入、系统安装、分区扩容等所有步骤,新手优先选择。
手动 dd 烧录虽然灵活,但需要注意设备路径和引导镜像的适配,且烧录后需手动处理扩容和 UUID 配置,适合有一定 Linux 基础的用户。无论哪种方法,都要牢记:SPI Flash 是“命门”,切勿随意写入错误数据,否则会触发砖机,虽可救砖,但会增加额外操作成本。
按照本文步骤操作,就能顺利实现 NVMe 启动,享受更快的运行速度和更大的存储空间,让 Rock 5B Plus 发挥更强的性能~