NanoPi R5C 安装 Armbian Debian 13 并迁移到 eMMC 全记录
目标板:FriendlyElec NanoPi R5C(RK3568B2 / 4GB LPDDR4X / 32GB eMMC / 双 2.5G 网口 / M.2 Key E)
镜像:Armbian Debian 13 (trixie) Minimal (CLI),内核6.18.56-current-rockchip64
方案:TF 卡启动 →armbian-install写入 eMMC → 拔卡从 eMMC 启动
实际耗时:写卡约 4 分钟,首次启动约 1.5 分钟,写入 eMMC 1 分 22 秒,全程约 30 分钟
目录
- 1. 环境与目标
- 2. 准备清单
- 3. 镜像下载与校验
- 4. 阶段一 写入 TF 卡
- 5. 阶段二 首次从 TF 卡启动
- 6. 阶段三 找到 IP 并登录
- 7. 阶段四 写入前预检
- 8. 阶段五 执行 armbian-install
- 9. 阶段六 写入后 UUID 校验
- 10. 阶段七 切换到 eMMC 启动
- 11. 阶段八 验收
- 12. 阶段九 收尾配置
- 13. 故障对照表
- 14. 救砖流程 Maskrom
- 15. 附录 A 命令速查
- 16. 附录 B 本次实测数据
- 17. 参考链接
1. 环境与目标
1.1 硬件事实(决定方案的关键点)
| 项目 | 规格 | 对安装的影响 |
|---|---|---|
| SoC | Rockchip RK3568B2,4×Cortex-A55 | 主线内核支持良好 |
| 内存 | 4GB LPDDR4X | — |
| 存储 | 32GB eMMC + microSD | 引导只能放 eMMC 或 SD |
| 网口 | 2×2.5GbE(PCIe 挂载) | 接口名叫 enP1p17s0 / enP2p33s0(非 lan1/wan1) |
| M.2 | Key E,仅 PCIe 2.1 ×1 + USB 2.0 | 只能插 WiFi/BT 模块,不能插 NVMe SSD |
| 启动限制 | BootROM 不能从 USB / M.2 引导 | 引导必须落在 eMMC 或 TF 卡 |
| 电源 | USB-C 5V 输入,建议 ≥2A | 劣质电源是最大玄学故障源 |
| 调试口 | 3Pin 2.54mm,1500000 8N1 | 不是常见的 115200 |
| 按键 | MASK(eMMC 刷机)+ User | MASK 用于进 Maskrom |
1.2 为什么分两步(TF → eMMC)
1 | TF 卡(临时引导) eMMC(最终归宿) |
先让系统从 TF 卡跑起来,再用 armbian-install 把”引导 + 系统”整体搬到 eMMC,最后拔卡。这样全程可回退,TF 卡天然成为救援盘。
2. 准备清单
2.1 硬件
- NanoPi R5C 主板(含 CNC 外壳)
- USB-C 5V/≥2A 电源(必须能稳定输出 5V,避免 PD 诱骗不出电的快充头)
- microSD 卡 8–32GB,Class10 / A1 以上,正品
- USB 读卡器
- 网线 ×1~2
- 电脑(Windows)
- USB-A 公对公数据线(仅救砖用,很多 A-A 线只有电源)
- USB-TTL 串口线 3.3V(可选,强烈建议;波特率 1500000)
- HDMI 线 + 显示器(可选)
2.2 软件(Windows)
| 工具 | 用途 | 备注 |
|---|---|---|
| Armbian Imager | 下载 + 校验 + 写卡一体 | 推荐,自动核对 SHA256 |
| balenaEtcher | 写卡 | 可直接吃 .img.xz |
| Rufus | 写卡 | 必须选 DD 镜像模式 |
| 7-Zip | 手动解压 | 不建议解压后再写,易损坏 |
| RKDevTool + DriverAssistant | 救砖 / Maskrom | 从 FriendlyElec 网盘或 Radxa 文档获取 |
| MobaXterm / PuTTY | SSH | 可选 |
⚠️ 用 Windows 自带解压
.xz后用 Win32DiskImager 写卡,曾出现”解压损坏但工具不报错 → 烧完不启动”。要么交给 Etcher 直接吃.xz,要么先核对哈希。
3. 镜像下载与校验
直链(约 336 MB,.img.xz):
1 | https://dl.armbian.com/nanopi-r5c/Trixie_current_minimal |
同目录提供 .sha 与 .asc:
1 | https://dl.armbian.com/nanopi-r5c/Trixie_current_minimal.sha |
Windows 校验:
1 | cd D:\HA |
两串 64 位十六进制必须完全一致。
4. 阶段一 写入 TF 卡
- Armbian Imager → 选
NanoPi R5C→Debian 13 (trixie) Minimal (CLI)→ Flash
或手动:
- Etcher 选择
.img.xz→ Flash(Etcher 自行解压) - 或 Rufus → DD 镜像模式
写完后 Windows 提示”需要格式化” → 点取消(那是 Linux 分区表,正常现象)。
安全弹出读卡器。
5. 阶段二 首次从 TF 卡启动
- 断开 R5C 电源
- 插入 TF 卡
- 接网线到任一 2.5G 口(两个口默认都发 DHCP 请求)
- 插入 USB-C 5V 电源
- 等待 1–2 分钟(首启自动扩分区 + 生成 SSH 密钥)
启动成功的标志:
| 指示灯 | 状态 |
|---|---|
| SYS(红) | 由常亮转为慢闪 |
| 网口灯 | 亮起 / 闪烁 |
有串口线时:3Pin 调试口,1500000 8N1,可看到完整启动日志。
6. 阶段三 找到 IP 并登录
6.1 找 IP
1 | # 方法 1:路由器后台 → DHCP 客户端列表 → 找新增设备 |
本次实测 IP:192.168.*.30
6.2 首次登录
1 | ssh [email protected].*.30 # 默认密码:1234 |
首次登录必须一次完成三步(中断需重来):
- 修改 root 密码(输入两遍)
- 创建普通用户 + 密码(该用户拥有 sudo)
- 确认时区(可先回车跳过,之后用
timedatectl改)
键盘为 QWERTY 布局;密码避免中文与特殊符号。
7. 阶段四 写入前预检
这一步的核心目的:确认哪块盘是 eMMC。选错会抹掉正在运行的 SD 卡。
7.1 基础信息
1 | findmnt -no SOURCE / # 当前根分区 |
7.2 精确区分 eMMC 与 SD 卡
1 | for d in /dev/mmcblk[0-9]; do |
判定规则:device/type 输出 MMC = eMMC,输出 SD = 内存卡。
本次实测输出:
1 | /dev/mmcblk0 SD 29.5G ← 正在运行的 TF 卡,绝对不能碰 |
7.3 官方探测器(最权威,自动排除运行中的盘)
1 | sudo armbian-install --api detect |
输出格式为 TSV:名字 角色 字节数 扇区 总线 旋转 型号。本次实测:
1 | mmcblk1 mmc 31037849600 512 mmc false - |
只列出
mmcblk1,说明mmcblk0(SD)已被自动排除 —— 安装菜单里不会出现可误选的项。
7.4 如需备份 eMMC 内原厂数据
原厂 FriendlyWrt 在 eMMC 上有 9 个分区(p1–p9,p9 为根分区)。只读挂载拷出数据:
1 | sudo mkdir -p /mnt/emmc_old |
8. 阶段五 执行 armbian-install
当前 Armbian 中
armbian-install已是armbian-config的module_partitioner模块的兼容入口,菜单文字与下面一致。
8.1 方式一:交互式(可看清每一屏)
1 | sudo apt install -y tmux 2>/dev/null; tmux new -s inst # 防 SSH 掉线打断 |
| 屏幕 | 提示文字 | 选择 |
|---|---|---|
| ① | What would you like to do? |
Install Armbian to a disk (SD / eMMC / NVMe / SATA / USB) |
| ② | Select the destination disk: |
mmcblk1 28.9GiB(eMMC,唯一一项) |
| ③ | Choose how /dev/mmcblk1 should boot: |
emmc — Full install to this device (boot + system) |
| ④ | Root filesystem for /dev/mmcblk1: |
ext4(Default, most compatible) |
| ⑤ | This will ERASE /dev/mmcblk1 and install Armbian (emmc, ext4). Proceed? |
Erase and install |
| ⑥ | Installing to /dev/mmcblk1 - please wait... |
等待 1–8 分钟,勿断电 |
| ⑦ | Installation to /dev/mmcblk1 finished successfully... |
成功 |
操作键:方向键/Tab 移动,Enter 确认,Esc 取消(取消不会写盘)。
第 ③ 屏的另一个选项sd是”引导留在当前介质”,不要选。
8.2 方式二:一条命令(等价,避免点错)
1 | sudo armbian-install --target /dev/mmcblk1 --boot emmc --fs ext4 --yes |
参数说明:
| 参数 | 可选值 | 说明 |
|---|---|---|
--target |
/dev/mmcblkX |
目标整盘设备,必须是块设备 |
--boot |
emmc sd mtd spi standalone uefi bios … |
emmc = 引导+系统都装到该盘 |
--fs |
ext4 btrfs f2fs |
新手用 ext4;要快照可 btrfs |
--yes |
— | 不加会拒绝执行(安全设计) |
8.3 安装过程实际做了什么
本次 /var/log/armbian-install.log 摘要:
1 | [INFO] scenario: inheriting source partition table 'gpt' for emmc |
即:
- 沿用 GPT 分区表,新建单个
root分区占满全盘 - 保留 Rockchip 裸扇区 7168–16383(u-boot 专用区,不能覆盖)
- 写入 3.5 MiB idbloader + 2.0 MiB u-boot.itb
mkfs.ext4+ rsync 整个根文件系统- 全程 1 分 22 秒
8.4 失败处理
1 | sudo tail -n 80 /var/log/armbian-install.log |
界面会显示 Installation FAILED (code N)。失败不影响 TF 卡系统,修好可重试。
9. 阶段六 写入后 UUID 校验
这是”装完起不来”最常见的原因:
armbianEnv.txt的 rootdev 与/etc/fstab的 UUID 不一致。
9.1 检查分区结果
1 | sudo lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS /dev/mmcblk1 |
预期(原来的 9 个分区消失):
1 | NAME SIZE FSTYPE MOUNTPOINTS |
9.2 挂载 eMMC 并核对三处 UUID
1 | sudo mkdir -p /mnt/ec |
本次实测结果(三处一致 ✅):
| 检查项 | 实际值 |
|---|---|
armbianEnv.txt → rootdev |
UUID=82de9fba-****-****-****-************ |
/etc/fstab → / |
UUID=82de9fba-****-****-****-************ |
blkid /dev/mmcblk1p1 |
82de9fba-****-****-****-************ |
/boot 内容 |
Image uInitrd boot.scr dtb/ armbianEnv.txt 等齐全 |
| 设备树 | rockchip/rk3568-nanopi-r5c.dtb,overlay nanopi-r5c-leds |
/boot/armbianEnv.txt 实际内容:
1 | verbosity=1 |
三处不一致时:同步修改 armbianEnv.txt 的 rootdev 与 /etc/fstab 的 UUID,再重启。
10. 阶段七 切换到 eMMC 启动
1 | sudo poweroff |
- 等红灯完全熄灭(约 5 秒,别只等屏幕黑)
- 拔掉 TF 卡(本板 SD 优先级高于 eMMC,不拔会继续从卡启动)
- 插电源上电
预期:3–10 秒出内核日志,SYS 慢闪,网口灯亮,30–60 秒可 SSH。
IP 可能变化,需重新在路由器里查一次。
11. 阶段八 验收
1 | findmnt -no SOURCE / |
本次实测:
| 检查项 | 实际输出 | 结论 |
|---|---|---|
findmnt -no SOURCE / |
/dev/mmcblk1p1 |
根在 eMMC ✅ |
mmcblk0 |
不存在(No such file or directory) |
SD 已拔出,系统里只剩一块盘 ✅ |
df -h / |
29G,已用 1.6G,可用 26G | 分区铺满 32GB eMMC ✅ |
systemctl --failed |
0 loaded units listed |
无失败单元 ✅ |
ip -br a |
enP1p17s0 UP 192.168.*.30/24enP2p33s0 DOWNwlp1s0 DOWN |
网络正常,但接口未重命名 ⚠️ |
⚠️ 注意:eMMC 单独存在时在本板仍枚举为
mmcblk1,但不同内核/插卡组合下编号可能变。
判断是否为 eMMC 永远看device/type(MMC / SD),不要依赖编号。
12. 阶段九 收尾配置
12.1 系统更新与时区
1 | sudo apt update && sudo apt full-upgrade -y |
12.2 网口重命名(可选,软路由建议)
问题:Armbian 板级 udev 规则写的是旧内核 PCI 地址 0001:01:00.0 / 0002:01:00.0,
6.18 内核下实际为 0001:11:00.0(0x11=17)与 0002:21:00.0(0x21=33),规则未命中,
因此显示为 enP1p17s0 / enP2p33s0 而不是 lan1 / wan1。
功能不受影响,仅名字不同。
先确认物理口对应关系(把网线插到丝印 WAN 口,看哪个接口变 UP):
1 | watch -n1 'ip -br a' |
用 MAC 绑定重命名(比 PCI 地址更可靠):
1 | sudo tee /etc/udev/rules.d/70-persistent-net.rules >/dev/null <<'EOF' |
重命名后 NetworkManager 连接会按新名字重建,重启后需重新确认 IP:
1 | nmcli device status |
12.3 固定 IP
1 | nmcli device status |
12.4 iperf3 是否开机自启(armbian-config 对话框)
armbian-config 安装 iperf3 时会问:
Choose this option if Iperf3 should start automatically as a daemon, now and at boot time.
Start Iperf3 as a daemon automatically?
选 No / Cancel。
- iperf3 是临时测速工具,默认监听 5201 且无认证,常驻等于平白多一个暴露面
- 选 No 不影响安装,
iperf3命令照常可用
手动测速:
1 | # 板子上当服务端(-D 为临时后台,重启不复活) |
1 | # Windows 端(下载 iperf3 二进制后在该目录执行) |
判读:2.5G 口理论 2.35 Gbit/s,实测 2.0–2.3 Gbit/s 为优秀;只有 ~940 Mbps 说明链路卡在千兆(网线或对端口)。
万一需要自启:
1 | sudo systemctl enable --now iperf3 |
12.5 eMMC 寿命优化
/var/log已挂zram1(Armbian 默认日志内存化),无需额外操作- 大量写日志的服务,建议把数据目录放到 USB 硬盘
- 定期查看寿命:
sudo mmc extcsd read /dev/mmcblk1 | grep -i life
12.6 保留 TF 卡
不要格式化那张 TF 卡 —— 它就是救援盘:eMMC 系统起不来时插上照样能启动。
13. 故障对照表
| 现象 | 原因 | 解决 |
|---|---|---|
| 上电红灯常亮、不闪、无网络 | 电源不足 / 卡没插好 / 镜像写坏 | 换 5V/3A 好电源;重写卡并核对哈希 |
| 插卡后进的仍是原厂 FriendlyWrt | eMMC 引导优先 | Maskrom EraseAll 擦 eMMC |
--api detect 目标为空 |
eMMC 未识别 | 重启一次;换卡排除;仍空则查硬件 |
armbian-install 命令不存在 |
缺 armbian-config | sudo apt install -y armbian-config |
Installation FAILED (code N) |
设备/传输/工具错误 | sudo tail -100 /var/log/armbian-install.log |
| 装完拔卡黑屏/不启动 | bootloader 未写成功 / 误选 sd 模式 |
插回 TF 卡 → sudo armbian-install bootloader --target /dev/mmcblk1 --yes |
| 拔卡后还是老系统 | 未完全断电就插拔 | 完全断电 10 秒再上电 |
| 网口没拿到 IP | 接口未重命名 / 线序 | nmcli device status;换口试;sudo dhclient enP1p17s0 |
| 温度 80℃+ | 被动散热、通风差 | 检查外壳装配;可加 5V 小风扇 |
| SSH 提示 host key 变更 | 重装后密钥变化 | ssh-keygen -R <IP> |
armbianEnv.txt 与 fstab UUID 不一致 |
安装异常 | 手动同步两处 UUID |
14. 救砖流程 Maskrom
适用:完全无法启动、--api detect 看不到 eMMC、需要彻底清空存储。
- 安装 DriverAssistant 驱动
- 板子断电
- 按住 MASK 键不放,插上电源,状态灯亮约 3 秒后松开
- 用 USB-A 公对公数据线连接电脑与靠 TF 卡那一侧的 USB 口
- 打开 RKDevTool,应显示
Found One MASKROM Device Advanced Function→ Boot 选MiniLoaderAll.bin(RK3568 版)→ 点Download- 勾选
EMMC→Switch Storage(板子有 SPI Flash 时必须先切存储) - 点
EraseAll清空 eMMC - 之后插 TF 卡引导,或重新烧写镜像
原厂固件可从 FriendlyElec 网盘 获取(
-eflasher-/-usb-后缀版本)。
15. 附录 A 命令速查
1 | # ── 识别设备 ────────────────────────────────────────── |
16. 附录 B 本次实测数据
| 项目 | 值 |
|---|---|
| 镜像 | Armbian Debian 13 trixie Minimal (CLI) |
| 内核 | 6.18.56-current-rockchip64 |
| U-Boot | v2026.01(nanopi-r5c-rk3568_defconfig) |
| 分区表 | GPT,单 root 分区 100% ext4 |
| 安装前 TF 卡 | /dev/mmcblk0,type=SD,29.5G,根分区 mmcblk0p1 29.2G |
| 安装前 eMMC | /dev/mmcblk1,type=MMC,28.9G,9 个分区(原厂 FriendlyWrt) |
| eMMC 原始容量 | 31037849600 字节(512B 扇区) |
| 新根分区 UUID | 82de9fba-****-****-****-************ |
| 安装耗时 | 21:34:11 → 21:35:33,1 分 22 秒 |
| 安装后根分区 | /dev/mmcblk1p1,29G,已用 1.6G |
| 网卡命名 | enP1p17s0(UP,192.168.*.30)、enP2p33s0(DOWN)、wlp1s0(DOWN) |
| 日志内存化 | /var/log → zram1(50M),/var/log.hdd 在根分区 |
| 交换 | zram0 1.9G |
17. 参考链接
| 内容 | 链接 |
|---|---|
| Armbian R5C 镜像页 | https://armbian.com/boards/nanopi-r5c |
| 安装到内部存储 | https://docs.armbian.com/getting-started/install-to-internal-storage/ |
| 首次启动与登录 | https://docs.armbian.com/getting-started/first-boot-and-login/ |
| 写入镜像 | https://docs.armbian.com/getting-started/writing-the-image/ |
| Armbian Imager | https://imager.armbian.com |
| R5C 官方 Wiki(Maskrom / eMMC 烧写) | https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R5C |
| FriendlyElec 固件网盘 | http://download.friendlyelec.com/NanoPiR5C |
| 板级配置源码 | https://github.com/armbian/build/blob/main/config/boards/nanopi-r5c.csc |
记录日期:2026-10-17
设备:NanoPi R5C(RK3568B2 / 4GB / 32GB eMMC)
结果:✅ 系统已成功运行在 eMMC,单分区 29G,无失败服务单元