【Linux】RK3568-系统镜像(六)

OpenHarmony实战:RK3568 开发板镜像烧录指南 RK3568 开发板镜像烧录 阅读详情

1.镜像+根文件系统

一、核心概念对照表

概念定义举例类比
根文件系统Linux 运行时挂载的 / 目录树,是"内容"/bin、/etc、/opt/camera书的内容
镜像存储介质的逐字节副本,是一个文件sdcard.img、rootfs.img书的影印件
固件固化在芯片里的程序单片机 hex、路由器系统硬件里刻的字
烧录把镜像写入存储介质dd if=xxx.img of=/dev/mmcblk0复印
量产把原型方案批量复制到多台设备生产线批量烧录批量印刷

二、MCU 与 MPU 的本质区别

维度单片机(MCU)微处理器(MPU,跑 Linux)
运行内容只有一个程序Bootloader + Kernel + 根文件系统 + 多个服务
启动流程复位 → 执行 main()BootROM → SPL → U-Boot → Kernel → systemd → 你的服务
量产方式烧录 hex/bin 到 Flash制作整机镜像,批量写入 eMMC/SD
用户程序形态就是"整个程序"是系统里的一个服务
差异化一般无每台设备需唯一 token/序列号/MAC

关键结论:MCU 烧"程序",MPU 烧"系统 + 服务"。


三、Linux 启动与自启动机制

3.1 完整启动链路

芯片复位
  ↓
BootROM(芯片固化,无法修改)
  ↓
SPL(二级引导,很小)
  ↓
U-Boot(大引导,加载内核)
  ↓
Kernel(加载驱动、挂载根文件系统)
  ↓
init / systemd(PID=1,总调度器)
  ↓
systemd 读取所有 .service 文件
  ↓
camera.service 被触发 → 执行 start_camera.sh
  ↓
启动 mediamtx / frpc / ffmpeg

3.2 为什么 .service 能自动运行?

  1. systemd 启动时扫描 /etc/systemd/system/ 等目录下的 .service 文件。
  2. 执行 systemctl enable camera.service 时,systemd 在 /etc/systemd/system/multi-user.target.wants/ 下创建一个软链接。
  3. 开机进入 multi-user.target 时,systemd 会启动所有被"想要"(Wanted)的服务。
  4. WantedBy=multi-user.target 就是告诉 systemd:“我要跟着多用户模式一起启动”。

本质:enable = 创建软链接。

3.3 为什么不能用 rc.local?

对比项rc.localsystemd
依赖管理无,靠 sleep 硬等声明 After=、Wants=,自动排序
崩溃重启无Restart=on-failure 自动拉起
日志需自己重定向journalctl 统一管理
并行启动串行,慢并行,快
量产可控性弱强

结论:rc.local 是玩具,systemd 是产品。


四、你的项目架构回顾

4.1 数据流向

USB摄像头 → FFmpeg(H.264编码) → MediaMTX(本机RTSP) → frpc(内网穿透)
         → 阿里云服务器(frps) → 手机VLC远程拉流

4.2 目录结构(原型阶段)

/home/baiwen/video1/
├── mediamtx                # MediaMTX 可执行文件
├── mediamtx.yml            # MediaMTX 配置
├── frp_0.71.0_linux_arm64/ # FRP 客户端目录
│   ├── frpc
│   └── frpc.toml
├── start_camera.sh         # 开机自启脚本
└── camera.log              # 运行日志

4.3 三个关键文件

文件作用位置
start_camera.sh启动脚本,负责依次拉起三个服务/home/baiwen/video1/
camera.servicesystemd 服务定义,实现开机自启/etc/systemd/system/
frpc.tomlFRP 客户端配置(含 token)/home/baiwen/video1/frp_xxx/

五、从原型到量产:四个阶段

阶段 1:原型验证(你现在)

做法:手动配置,逐台操作

  1. 装系统
  2. 拷贝文件到 /home/baiwen/video1/
  3. 写 camera.service
  4. systemctl enable
  5. 重启验证

特点:能跑通,但不能批量复制。

阶段 2:小批量试产(5~20 台)

做法:SD 卡克隆 + 手动改 token

  1. 在一台样机上配好所有东西
  2. 用 dd 把 SD 卡做成 .img
  3. 每台烧完后,手动 SSH 改 frpc.toml 的 token
  4. 验证硬件和软件一致性
# 制作镜像
dd if=/dev/mmcblk0 of=sdcard.img bs=4M

# 烧录到新卡
dd if=sdcard.img of=/dev/mmcblk0 bs=4M

缺点:手动改 token,效率低,易出错。

阶段 3:中批量(100 台以上)

做法:定制镜像 + first-boot 自动化

  1. 用 Yocto 或 Buildroot 定制精简根文件系统
  2. 把 mediamtx、frpc、脚本、camera.service 直接编入镜像
  3. 用厂商烧录工具(如 RKDevTool、uuu)批量烧录 eMMC
  4. 首次启动运行 first-boot.service,自动个性化

first-boot 脚本要做的事:

#!/bin/bash
# 1. 生成唯一 token
TOKEN=$(openssl rand -hex 16)

# 2. 生成唯一序列号(用 MAC 地址)
SERIAL=$(cat /sys/class/net/eth0/address | tr -d ':')

# 3. 从模板生成配置文件
sed "s/__TOKEN__/$TOKEN/" /opt/camera/frpc.toml.template > /etc/frp/frpc.toml

# 4. 设置唯一主机名
echo "camera-$SERIAL" > /etc/hostname

# 5. 自我禁用,只跑一次
systemctl disable first-boot.service

阶段 4:正式产品

做法:CI/CD + OTA 升级

  1. Yocto/Buildroot 做完整构建流水线(代码提交 → 自动编译 → 生成镜像)
  2. 镜像里预置:
    • 应用(打包成 .deb 或放到 /opt/)
    • systemd 服务
    • RAUC / SWUpdate 做 OTA 升级框架
    • A/B 分区方案(升级失败可回滚)
  3. 生产线用夹具 + 自动化工具烧录,写入序列号、MAC、密钥
  4. 出厂后通过 OTA 推送更新

六、量产镜像里应该装什么?

6.1 完整交付包结构

你的应用包/
├── opt/camera/                       # 应用目录
│   ├── mediamtx                      # 可执行文件
│   ├── mediamtx.yml                  # 配置
│   ├── frpc                          # FRP 客户端
│   ├── frpc.toml.template            # 配置模板(token 留空,首启时填)
│   └── start_camera.sh               # 启动脚本
├── etc/systemd/system/
│   ├── camera.service                # 服务定义
│   └── first-boot.service            # 首启个性化服务
└── etc/first-boot.d/
    └── 01-personalize.sh             # 个性化脚本

6.2 关键点

项目原型阶段量产阶段
token硬编码在 frpc.toml用模板 + 首启生成
主机名手动设置用 MAC 地址自动生成
服务启动手动 systemctl start编入镜像,开机自动
升级方式手动 SSH 替换OTA 推送

七、打包方式对比

方式适合场景做法
直接拷贝到 rootfs自己维护镜像放进 Yocto/Buildroot 的 recipes 或 overlay
打成 .deb 包Debian/Ubuntudpkg-deb --build 生成,安装自动放好服务
Docker 容器应用隔离应用做成镜像,宿主 systemd 拉起容器
只读分区防篡改根文件系统只读,应用分区单独可写

八、镜像 vs 根文件系统:核心区别

维度根文件系统镜像
本质目录树(内容)文件(副本)
运行时是"活"的,被挂载使用是"死"的,只能被读写
包含关系是镜像的一部分可以包含根文件系统
路径/xxx.img
制作方式用 cp、dpkg 填充用 dd、mkfs、mksquashfs 生成
使用方式挂载后直接访问用 dd 写入存储介质
类比书的内容书的影印件

一句话:根文件系统是 Linux 运行时看到的 /;镜像是把它打包成的 .img 文件。


九、术语速查表

术语含义类比
镜像 (Image)存储介质的逐字节副本书的影印件
根文件系统 (rootfs)Linux 运行时的 / 目录树书的内容
固件 (Firmware)固化在芯片里的程序硬件里刻的字
Bootloader启动引导程序(U-Boot)电脑的 BIOS
KernelLinux 内核操作系统的心脏
systemdLinux 的总调度器(PID=1)工厂的调度中心
Servicesystemd 管理的服务单元工厂里的一条产线
烧录把镜像写入存储介质复印
量产批量复制到多台设备批量印刷
OTA空中升级手机系统更新
A/B 分区双分区互为备份,升级失败可回滚双系统启动
first-boot首次启动时运行的个性化脚本新手机开机设置

十、给你的下一步建议

当前状态:原型验证完成 ✅

短期目标(如果你想做几台设备自用):

  1. 在一台样机上配好所有东西
  2. 用 dd 做成 .img
  3. 每台烧完后手动改 token
  4. 验证一致性

中期目标(如果想做小批量产品):

  1. 学 Yocto 或 Buildroot,做定制镜像
  2. 写 first-boot.sh 做自动化个性化
  3. 用厂商烧录工具批量写入

长期目标(如果要做正式产品):

  1. 引入 OTA 升级框架
  2. A/B 分区,支持失败回滚
  3. 云端设备管理

十一、一句话总结整个项目

你做的不是"烧一个程序",而是"部署一个系统"。

镜像是打包方式,根文件系统是运行内容,systemd 服务是启动机制,first-boot是个性化方案,OTA是升级方案。

这五点就是嵌入式 Linux 产品化的全部骨架。

RK3568 Linux驱动学习——SDK安装编译 rk3568的sdk安装与编译 阅读详情

相关推荐

【鸿蒙OH 5.0】2.RK3568 开发板镜像烧录指南

如果手里不是 RK3568 这块开发板就不用往下看了。烧录开发板是每个开发者的必修课,每次对系统的修改务必进行烧录测试,确保修改正确和不会引入新问题。本文基于 Windows10,以 RK3568 开发板为例,指导如何烧录 OpenHarmony 镜像,镜像也叫固件。Hihoop(润和)是开发板集成商,Dayu200 是开发板型号,RK3568(瑞芯微)是芯片型号, 很多地方名称不同却指的是同一块开发板。

xiaolizibie的博客 2991

基于RK3568的Linux开发

本文主要介绍了如何编译官方的RK356X_Linux_SDK包。针对自制的RK3568板卡对Linux系统进行移植和裁剪。操作系统:Ubuntn18.04内存:4GB及其以上。

weixin_60508885的博客 1万+

【鸿蒙OH实战开发】2.RK3568 开发板镜像烧录指南

如果手里不是 RK3568 这块开发板就不用往下看了。烧录开发板是每个开发者的必修课,每次对系统的修改务必进行烧录测试,确保修改正确和不会引入新问题。

2401_88547687的博客 1844

制作RK3568 ubuntu20.04桌面版镜像

RK3568 是一款强大的处理器,适用于多种应用场景。它支持 Ubuntu 操作系统,为开发人员提供了更大的灵活性和选择空间。通过下载官方的基础镜像包制作适用于RK3568的ubuntu系统镜像包.

ansondroider的博客 6409

【鸿蒙南向开发】—— PREPARE工作准备 2.RK3568 开发板镜像烧录指南

一般是下载不完整造成的,即文件大小较小,所以重新下载完成再烧录即可解决。

huchenghe2的博客 1575

鸿蒙OH实战开发:【PREPARE工作准备】2.RK3568 开发板镜像烧录指南

如果手里不是 RK3568 这块开发板就不用往下看了。烧录开发板是每个开发者的必修课,每次对系统的修改务必进行烧录测试,确保修改正确和不会引入新问题。本文基于 Windows10,以 RK3568 开发板为例,指导如何烧录 OpenHarmony 镜像,镜像也叫固件。Hihoop(润和)是开发板集成商,Dayu200 是开发板型号,RK3568(瑞芯微)是芯片型号, 很多地方名称不同却指的是同一块开发板。

pengjiadashaoye的博客 891

将QT移植到RK3568开发板

在这里使用的是韦东山老师的RK3568开发板,接下来我将演示如何移植QT程序到该开发板。我们需要先搭建开发环境,编译 rk3568 Linux SDK资源包。SDK包含了开发rk3568平台所需的各种软件组件、源代码、工具、库、文档以及示例代码等。这些资源旨在帮助开发人员基于rk3568芯片进行高效的软件开发、系统定制以及应用程序开发。下面将进行的操作皆在 Ubuntu20.04 上执行。

wei_Embedded_z的博客 4836

【PREPARE工作准备】2.RK3568 开发板镜像烧录指南

一般是下载不完整造成的,即文件大小较小,所以重新下载完成再烧录即可解决。

CTrup的博客 2047

RK3568 AB分区+OTA升级(Linux)

RK3568 AB分区+OTA升级(Linux)

CATTLE_L的博客 4734

openEuler Embedded构建实战:如何用Yocto为RK3568定制专属Linux镜像

本文详细介绍了如何利用openEuler Embedded和Yocto构建框架为RK3568工业级处理器定制专属Linux镜像。从开发环境配置、硬件适配到Qt5图形界面集成,提供了全流程实战指南,帮助开发者高效完成嵌入式系统定制,满足边缘计算和工业控制等场景需求。

weixin_33701251的博客 693

【鸿蒙南向开发】—— PREPARE工作准备:2.RK3568 开发板镜像烧录指南

如果手里不是 RK3568 这块开发板就不用往下看了。烧录开发板是每个开发者的必修课,每次对系统的修改务必进行烧录测试,确保修改正确和不会引入新问题。本文基于 Windows10,以 RK3568 开发板为例,指导如何烧录 OpenHarmony 镜像,镜像也叫固件。Hihoop(润和)是开发板集成商,Dayu200 是开发板型号,RK3568(瑞芯微)是芯片型号, 很多地方名称不同却指的是同一块开发板。

pengjiadashaoye的博客 1102

RK3568 Linux驱动学习——SDK烧录

rk3568的sdk烧录方法

xhj12138的博客 2359

RK3568开发板Linux SDK编译实战:从源码到镜像的完整指南

本文提供了一份详尽的RK3568开发板Linux SDK编译实战指南。从理解SDK目录结构、准备Ubuntu编译环境,到分步编译U-Boot、内核、根文件系统,最终打包成可烧录的update.img镜像。文章以迅为iTOP-3568为例,深入讲解了设备树配置、编译命令及常见问题排查,旨在帮助开发者掌握从源码到镜像的完整构建流程,高效驾驭RK3568平台开发。

prometheus9mon的博客 759

RK3568开发板的镜像烧录,镜像制作和碰到的问题

RK3568开发板的镜像烧录,镜像制作和碰到的问题

weixin_46495125的博客 6341

c++界面开发入门

c++界面开发 DialogBox MessageBox

jiaodou2的博客 6514

基于FPGA的ov5640摄像头简易图像采集装置详解

本文介绍一种基于FPGA的,通过流模式DDR实现OV5640摄像头数据采集并显示的方法。

qq_42230252的博客 1万+

手把手教你在rk3568上进行linux系统移植

通过这次系统移植操作,对linux系统的启动过程和启动方式更加清晰了,也解决了驱动模块加载不正常的问题(之前zynq的移植以太网驱动是不正常工作的,估计也是这个原因)。但是uboot的制作方式正确性还没有验证,后续如果有机会会去验证一下(这里使用官方烧录工具失败)。不过对uboot的具体启动过程,内核的具体启动过程进行了什么操作还不得而知,后面可能也会看一些启动源码,进一步理解一下。

weixin_53042232的博客 2937

深入解析璞致PZ-ZU47DR RFSoC核心板:硬件架构与多通道ADC/DAC设计实战

本文深入解析璞致PZ-ZU47DR RFSoC核心板的硬件架构与多通道ADC/DAC设计实战。作为Xilinx Zynq UltraScale+ RFSoC系列的代表产品,PZ-ZU47DR集成了8通道5GSPS ADC和8通道9.85GSPS DAC,支持直接射频采样,大幅简化射频链路设计。文章详细介绍了其技术优势、设计挑战及实战技巧,为5G小基站、毫米波等应用场景提供高效解决方案。

meat5的博客 830

RK3568技术笔记十五 固件烧写

当烧写buildroot文件系统或debian文件系统时使用parameter.txt文件,当烧写ubuntu系统时使用parameter-ubuntu.txt文件,这里一定要对应正确,否则会导致烧写完成后系统启动失败;在未烧录固件时,芯片会引导进入Maskrom模式,可以进行初次固件的烧录;开发板正常进入系统后,烧写工具上显示“发现一个ADB设备”,然后点击工具上的 “切换” 按钮,进入 Loader 烧写模式。点击驱动安装,等待驱动安装完成,弹出如下所示对话框,点击确定,关闭驱动助手,驱动安装完成。

3089

麒麟和UOS系统编写桌面点击可执行文件

在桌面上创建一个快捷方式(.desktop 文件)来运行脚本。打开文本编辑器,创建一个新文件,如。这可以通过文本编辑器来完成。首先,确保您的脚本具有执行权限。现在,您应该可以双击桌面上的。保存此文件到桌面目录,例如,在桌面上创建一个快捷方式(文件来运行您的脚本了。使用图形界面或命令行给。现在您可以双击桌面上的。为您脚本的实际路径。是您脚本的实际路径。文件来运行您的脚本了。

u013934107的博客 7246

利用大模型和聚类算法找出 Excel 文件中重复或相似度高的数据,并使用 FastAPI 进行封装的详细方案

tokenizer将输入的文本列表texts转换为 PyTorch 张量,同时进行填充和截断操作,以确保所有输入具有相同的长度。对输入进行推理,得到模型的输出。对模型的最后一层隐藏状态求平均,得到每个文本的向量表示。.numpy()将 PyTorch 张量转换为 NumPy 数组。使用DBSCAN算法对文本向量进行聚类。eps是邻域半径,是形成核心点所需的最小样本数。fit方法对输入的向量进行聚类,并返回每个样本所属的簇标签。try:定义了一个 POST 请求的 API 路由,路径为。

AI的内部世界的博客 1069

基于RK3568开发板的根文件系统镜像定制与优化实践

本文详细介绍了基于RK3568开发板进行根文件系统镜像定制与优化的完整实践流程。通过导出原系统、创建镜像、注入文件、优化瘦身等步骤,帮助开发者构建精简、高效且稳定的定制化运行环境,有效提升系统启动速度并节省存储空间,适用于物联网网关等嵌入式产品开发。

weixin_29169899的博客 546

2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++小学组:带解析)(7月4日试卷一)【文末附答案和解析】

2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++小学组:带解析)(7月4日试卷一)【文末附答案和解析】

王老师青少年编程 1734
上一篇: 【Linux】RK3568-NPU加载失败问题(九)
下一篇: 【Linux】RK3568-OpenCV+YOLO(八)
Long-Run
博客等级 码龄3年 4597粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值