news 2026/4/17 19:26:19

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/4/17 21:39:48

英雄联盟换肤新体验:R3nzSkin内存级技术完全指南

英雄联盟换肤新体验:R3nzSkin内存级技术完全指南 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL).Everyone is welcome to help improve it. 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin 你是否曾想过在不修改游戏文件的情…

作者头像 李华
网站建设 2026/4/18 3:35:45

Windows Android子系统配置指南:打造跨平台应用运行环境

Windows Android子系统配置指南:打造跨平台应用运行环境 【免费下载链接】WSABuilds Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (root s…

作者头像 李华
网站建设 2026/4/18 3:35:33

Claude Code在火山方舟模型中的实战应用:从接入到性能优化

Claude Code在火山方舟模型中的实战应用:从接入到性能优化 摘要:本文针对开发者在集成Claude Code与火山方舟模型时面临的API兼容性、并发控制和成本优化等痛点,提供了一套完整的实战解决方案。通过详细的代码示例和架构设计,帮助…

作者头像 李华
网站建设 2026/4/18 5:25:59

探索式3D模型编辑实战指南:从技术原理到创意实现

探索式3D模型编辑实战指南:从技术原理到创意实现 【免费下载链接】nifskope A git repository for nifskope. 项目地址: https://gitcode.com/gh_mirrors/ni/nifskope 3D模型文件处理是游戏资源开发的核心环节,涉及模型结构解析、参数调整与视觉呈…

作者头像 李华
网站建设 2026/4/18 8:54:57

虚拟输入设备开发核心技术指南:从驱动虚拟到跨平台适配

虚拟输入设备开发核心技术指南:从驱动虚拟到跨平台适配 【免费下载链接】vJoy Virtual Joystick 项目地址: https://gitcode.com/gh_mirrors/vj/vJoy 解析设备虚拟化技术原理 如何突破物理硬件限制构建自定义输入设备?虚拟驱动技术通过在操作系统…

作者头像 李华