news 2026/6/18 16:32:46

20241125从零构建NanoPi R3S开发板【RK3566】镜像:完整编译与备份指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
20241125从零构建NanoPi R3S开发板【RK3566】镜像:完整编译与备份指南

1. 环境准备与源码获取

第一次接触NanoPi R3S开发板时,我花了两天时间才搞清楚整个编译流程。RK3566这颗芯片性能不错,但官方文档有些细节没讲清楚,这里把我的踩坑经验完整分享出来。

硬件准备清单

  • 一台x86_64架构的Linux主机(实测Ubuntu 20.04/22.04最稳定)
  • 至少200GB可用磁盘空间(编译过程会产生大量中间文件)
  • 16GB以上内存(链接阶段很吃内存)
  • 稳定的网络连接(需要下载约2GB的源码和依赖)

先安装基础依赖包,这个步骤很多人会漏掉libssl-dev导致后续出错:

sudo apt update sudo apt install -y git make gcc g++ bison flex libssl-dev \ python3 unzip patchelf bc pigz rsync

获取源码有两种方式,我推荐直接用官方压缩包:

wget https://download.friendlyelec.com/NanoPiR3S/buildroot-rk3566-20241007.tar tar xvf buildroot-rk3566-20241007.tar cd buildroot-rk3566

如果是通过repo同步(适合需要最新代码的情况):

.repo/repo/repo sync -l

注意:国内用户可能会遇到同步缓慢问题,建议在晚上网络空闲时段操作。我在深圳电信网络下实测完整同步需要40分钟左右。

2. 编译配置与初始化

进入目录后先处理预编译文件,这个unpack.sh脚本很多人会漏执行:

cd pre-download ./unpack.sh # 解压内核驱动和文件系统 cd ..

关键的一步是选择板型配置,这里有个隐藏坑点:

./build.sh rk3566.mk # 必须带.mk后缀

执行后会生成.current_config.mk软链接,验证是否成功:

ls -l .current_config.mk # 应指向device/friendlyelec/rk3566/rk3566.mk

遇到过最头疼的问题是dl目录冲突。由于Rockchip的包管理策略变化,需要手动清理旧缓存:

cd buildroot mv dl dl_bak # 备份原有目录 mkdir dl # 新建空目录 cd ..

3. 完整编译流程

开始全量编译前,建议先开个screen会话防止中断:

screen -S build_rk3566 ./build.sh all # 首次编译约2小时

编译过程会输出各阶段日志,重点观察:

  1. uboot编译:约15分钟,输出idbloader.img和uboot.img
  2. 内核编译:约30分钟,生成resource.img和kernel.img
  3. 根文件系统:最耗时的部分,约1小时

遇到编译错误时,90%的情况是网络问题导致包下载失败。这时候可以:

  1. 检查buildroot/dl目录下是否有对应的.tar.gz包
  2. 手动下载后放入dl目录
  3. 重新执行./build.sh all

编译成功的标志是在scripts/sd-fuse/out目录下生成镜像文件:

ls -lh scripts/sd-fuse/out/*.img # 应该看到 buildroot_YYYYMMDD_rk3566_arm64_sd.img

4. 镜像备份与优化

备份策略是我特别要强调的。每次完整编译后,一定要保存这两个目录:

  1. dl目录:包含所有下载的源码包(约700MB)
cd buildroot tar --use-compress-program=pigz -cvpf dl_backup_$(date +%Y%m%d).tgz dl/
  1. output目录:包含编译产物(约15GB)
tar -cvpf output_backup_$(date +%Y%m%d).tar output/

实测备份后下次编译可节省90%时间。我的测试数据:

  • 首次编译:118分钟
  • 使用备份后编译:22分钟

镜像刷写技巧

xz -d buildroot_20241125_rk3566_arm64_sd.img.xz sudo dd if=buildroot_20241125_rk3566_arm64_sd.img of=/dev/sdX bs=1M status=progress

重要提醒:刷写前务必确认设备路径,误操作会导致数据丢失。我曾在凌晨3点误刷了工作硬盘...

5. 常见问题解决

问题1:编译中途报错"Failed to download package xxx"

  • 解决方案:手动下载对应的包到dl目录
  • 示例(以zlib为例):
wget https://www.zlib.net/zlib-1.2.13.tar.gz -P buildroot/dl/

问题2:uboot编译失败提示"missing dtc"

  • 原因:设备树编译器路径问题
  • 修复:
export PATH=$PATH:$(pwd)/buildroot/output/rockchip_rk3566/host/bin

问题3:生成的镜像启动卡在uboot阶段

  • 检查步骤:
    1. 确认板型配置正确(rk3566.mk)
    2. 验证电源供应是否充足(建议5V/3A)
    3. 更换质量更好的TF卡(推荐SanDisk Extreme)

最后分享一个实用技巧:在build.sh all之前先执行以下命令可以大幅减少编译时间:

export MAKEFLAGS="-j$(nproc) --load-average=$(nproc)"
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/2 1:13:02

时间模拟工具实战指南:实现时间隔离测试与独立时间环境

时间模拟工具实战指南:实现时间隔离测试与独立时间环境 【免费下载链接】RunAsDate 类型于 RunAsDate 软件,C#实现代码 项目地址: https://gitcode.com/malaohu/RunAsDate 在软件开发与测试过程中,时间相关功能的验证往往面临诸多挑战…

作者头像 李华
网站建设 2026/6/14 7:54:29

告别窗口尺寸困扰:WindowResizer让你的桌面布局尽在掌握

告别窗口尺寸困扰:WindowResizer让你的桌面布局尽在掌握 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 你是否遇到过这样的尴尬:精心设计的多显示器工作区…

作者头像 李华
网站建设 2026/6/15 13:34:08

OpenWRT应用商店安装失败完全解决指南:从报错分析到功能验证

OpenWRT应用商店安装失败完全解决指南:从报错分析到功能验证 【免费下载链接】istore 一个 Openwrt 标准的软件中心,纯脚本实现,只依赖Openwrt标准组件。支持其它固件开发者集成到自己的固件里面。更方便入门用户搜索安装插件。The iStore is…

作者头像 李华
网站建设 2026/6/16 1:10:45

3步搞定QQ音乐格式解锁:无损转换qmcflac到mp3全攻略

3步搞定QQ音乐格式解锁:无损转换qmcflac到mp3全攻略 【免费下载链接】qmcflac2mp3 直接将qmcflac文件转换成mp3文件,突破QQ音乐的格式限制 项目地址: https://gitcode.com/gh_mirrors/qm/qmcflac2mp3 你是否也曾遇到这样的尴尬:在QQ音…

作者头像 李华
网站建设 2026/6/12 13:39:48

游戏模组工具:解锁《杀戮尖塔》的无限可能

游戏模组工具:解锁《杀戮尖塔》的无限可能 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire ModTheSpire作为一款强大的《杀戮尖塔》外部模组加载器,让玩家能够轻…

作者头像 李华
网站建设 2026/6/7 8:31:00

从零到一:用Prometheus+Grafana打造SpringBoot应用的智能监控中枢

从零到一:用PrometheusGrafana打造SpringBoot应用的智能监控中枢 在当今快速迭代的微服务架构中,系统的可观测性已成为保障业务连续性的关键。想象一下,当你的SpringBoot应用在深夜突然出现性能下降,而你却只能通过零散的日志片段…

作者头像 李华