适用机型:Banana Pi BPI-R4 Pro

利用 U 盘启动绕过 SD/eMMC 通道冲突,无需读卡器,无需频繁拔插 SD 卡。

硬件准备

  • BPI-R4 Pro 开发板

  • U 盘 (建议 8GB 以上)

  • 网线 (连接电脑与路由器网口)

  • 电脑 (安装有 WinSCP 或类似 SFTP 工具)

文件准备

前往固件发布页下载以下两个文件,建议重命名以便后续操作:

  1. eMMC 专用引导 (Preloader)

    • 原文件名示例:*preloader*emmc*.bin

    • 重命名为preloader.bin

  2. eMMC 系统镜像 (System Image)

    • 原文件名示例:*emmc*.img (请解压 .gz 包)

    • 重命名为emmc.img

这里我使用了自编译的固件,因为需要v6plus(DS-Lite)与map-e

官方Github项目地址
https://github.com/BPI-SINOVOIP/BPI-R4PRO-8X-OPENWRT-V24.10.0-Master-Devel

1. 制作启动U盘

我们需要先让路由器跑起来,才能把系统刷进 eMMC

  1. 在电脑上运行烧录工具(如 RufusEtcher

  2. eMMC 版镜像烧录到 U 盘

2. 启动设备 (NAND + USB 模式)

此步骤利用板载 NAND 引导 U 盘系统,从而空出 eMMC 通道

  1. 断电,并务必 拔掉 SD 卡 (确保卡槽为空)。

  2. 插入制作好的 U 盘

  3. 调整拨码开关至 NAND 启动 (注:请以板载丝印 "NAND" 为准)

  4. 连接网线,上电开机

  5. 电脑设置自动获取 IP,确认能访问后台,通常是 192.168.1.1

3. 上传固件与刷写

系统启动后,通过网络将固件上传到内存 (/tmp) 进行写入

第一步:上传文件

  • 打开 WinSCP (协议选 SCP),登录路由器

    • 用户 root

    • 密码 toor

  • 将电脑里准备好的 preloader.binemmc.img 上传到路由器的 /tmp 目录

第二步:执行刷写命令

打开 SSH 终端 ,依次执行以下命令:

# 1. 进入目录
cd /tmp

# 2. 解锁 eMMC 引导分区写保护 (关键)
echo 0 > /sys/block/mmcblk0boot0/force_ro

# 3. 刷入 Preloader 引导文件
# 目标设备是 mmcblk0boot0
dd if=preloader.bin of=/dev/mmcblk0boot0

# 4. 刷入主系统镜像
# 目标设备是 mmcblk0 (eMMC主空间)
# OpenWrt 的 dd 通常不支持 status=progress,耐心等待完成
dd if=emmc.img of=/dev/mmcblk0 bs=1M

# 5. 激活 eMMC 启动分区功能
mmc bootpart enable 1 1 /dev/mmcblk0

4. 完工重启

  1. 在终端输入 poweroff 关机,等待电源灯灭

  2. 拔掉 U 盘

  3. 调整拨码开关至 eMMC 启动 (注:请以板载丝印 "eMMC" 为准)

  4. 重新上电

常见问题排查

  • Q: dd 命令提示 invalid status=progress

    • A: 這是因为系统内的 BusyBox 版本较旧,删除命令中的 status=progress 参数即可

  • Q: lsblk 看不到 mmcblk0

    • A: 检查是否忘记拔掉 SD 卡。如果插了 SD 卡,eMMC 会被硬件屏蔽

  • Q: 只有 mmcblk0 没有 mmcblk0boot0

    • A: 确保你的内核驱动正常加载。通常 eMMC 都会伴随 boot0/boot1 分区出现

  • Q: 刷完无法启动,卡在亮灯?

    • A: 检查第 3 步是否刷入了 preloader。如果只刷了 img 没刷 preloader 是无法引导的。此时只需重复整个流程重刷一遍即可

文章作者: Lien
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 彼方
喜欢就支持一下吧