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

发布时间:2026/10/2 8:18:20

【Linux】RK3568-系统镜像(六) 文章目录1.镜像根文件系统1.镜像根文件系统一、核心概念对照表概念定义举例类比根文件系统Linux 运行时挂载的/目录树是内容/bin、/etc、/opt/camera书的内容镜像存储介质的逐字节副本是一个文件sdcard.img、rootfs.img书的影印件固件固化在芯片里的程序单片机 hex、路由器系统硬件里刻的字烧录把镜像写入存储介质dd ifxxx.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 / systemdPID1总调度器 ↓ systemd 读取所有 .service 文件 ↓ camera.service 被触发 → 执行 start_camera.sh ↓ 启动 mediamtx / frpc / ffmpeg3.2 为什么 .service 能自动运行systemd 启动时扫描/etc/systemd/system/等目录下的.service文件。执行systemctl enable camera.service时systemd 在/etc/systemd/system/multi-user.target.wants/下创建一个软链接。开机进入multi-user.target时systemd 会启动所有被想要Wanted的服务。WantedBymulti-user.target就是告诉 systemd“我要跟着多用户模式一起启动”。本质enable 创建软链接。3.3 为什么不能用 rc.local对比项rc.localsystemd依赖管理无靠sleep硬等声明After、Wants自动排序崩溃重启无Restarton-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原型验证你现在做法手动配置逐台操作装系统拷贝文件到/home/baiwen/video1/写camera.servicesystemctl enable重启验证特点能跑通但不能批量复制。阶段 2小批量试产5~20 台做法SD 卡克隆 手动改 token在一台样机上配好所有东西用dd把 SD 卡做成.img每台烧完后手动 SSH 改frpc.toml的 token验证硬件和软件一致性# 制作镜像ddif/dev/mmcblk0ofsdcard.imgbs4M# 烧录到新卡ddifsdcard.imgof/dev/mmcblk0bs4M缺点手动改 token效率低易出错。阶段 3中批量100 台以上做法定制镜像 first-boot 自动化用Yocto或Buildroot定制精简根文件系统把mediamtx、frpc、脚本、camera.service直接编入镜像用厂商烧录工具如 RKDevTool、uuu批量烧录 eMMC首次启动运行first-boot.service自动个性化first-boot 脚本要做的事#!/bin/bash# 1. 生成唯一 tokenTOKEN$(openssl rand-hex16)# 2. 生成唯一序列号用 MAC 地址SERIAL$(cat/sys/class/net/eth0/address|tr-d:)# 3. 从模板生成配置文件seds/__TOKEN__/$TOKEN//opt/camera/frpc.toml.template/etc/frp/frpc.toml# 4. 设置唯一主机名echocamera-$SERIAL/etc/hostname# 5. 自我禁用只跑一次systemctl disable first-boot.service阶段 4正式产品做法CI/CD OTA 升级Yocto/Buildroot做完整构建流水线代码提交 → 自动编译 → 生成镜像镜像里预置应用打包成.deb或放到/opt/systemd 服务RAUC / SWUpdate做 OTA 升级框架A/B 分区方案升级失败可回滚生产线用夹具 自动化工具烧录写入序列号、MAC、密钥出厂后通过 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电脑的 BIOSKernelLinux 内核操作系统的心脏systemdLinux 的总调度器PID1工厂的调度中心Servicesystemd 管理的服务单元工厂里的一条产线烧录把镜像写入存储介质复印量产批量复制到多台设备批量印刷OTA空中升级手机系统更新A/B 分区双分区互为备份升级失败可回滚双系统启动first-boot首次启动时运行的个性化脚本新手机开机设置十、给你的下一步建议当前状态原型验证完成 ✅短期目标如果你想做几台设备自用在一台样机上配好所有东西用dd做成.img每台烧完后手动改 token验证一致性中期目标如果想做小批量产品学 Yocto 或 Buildroot做定制镜像写first-boot.sh做自动化个性化用厂商烧录工具批量写入长期目标如果要做正式产品引入 OTA 升级框架A/B 分区支持失败回滚云端设备管理十一、一句话总结整个项目你做的不是烧一个程序而是部署一个系统。镜像是打包方式根文件系统是运行内容systemd 服务是启动机制first-boot是个性化方案OTA是升级方案。这五点就是嵌入式 Linux 产品化的全部骨架。
延伸阅读

更多相关文章

2026/10/2 8:18:20

015-0601-numpy与pandas-numpy与pandas-series

环境搭建 Anaconda 什么是Anaconda Anaconda官网地址:Advance AI with Open Source | Anaconda 简单来说,Anaconda = Python + 包和环境管理器(Conda)+ 常用库 + 集成工具。它适合那些需要快速搭建数据科学或机器学习开发环境的用户。Anaconda和Python相当于是汽车和发…

2026/10/2 8:13:20

dbx命令行数据库管理工具实战:多源连接、备份与自动化运维

上个月接手一个老项目,开发库、测试库、生产库分别用的是三个不同客户端,连接信息还散落在同事的聊天记录里。我花了一个下午,把十几套数据源全部收编到一个叫 dbx 的命令行数据库管理工具下面,从那以后所有环境的连接和维护都在同…

2026/10/2 18:08:48

模型优化器实战:剪枝、量化与算子融合的工程化落地

1. 模型优化器到底在优化什么第一次看到“Model-Optimizer”这个词,很多人会下意识觉得它就是一个调参工具,或者是一个自动搜超参的脚本。我刚开始接触的时候也这么想,后来踩了几次坑才明白,模型优化器真正做的事情,是…

2026/10/2 18:08:48

模型部署优化实战:Model-Optimizer 从能跑到跑得动

做模型部署的人大概都经历过这种时刻:模型在训练环境里各项指标都很漂亮,一上生产环境立刻翻车——推理延迟压不下去,显存被大 batch 顶爆,运维盯着内存曲线来敲你桌子。Model-Optimizer 这类项目,就是专门处理“模型能…

2026/10/2 18:08:48

Oracle 19C Data Guard 实战:RHEL 7.6+ASM 备库搭建与切换全解析

简介:面向Oracle DBA及运维工程师的实操型部署指南,聚焦在RHEL 7.6(Maipo)环境下搭建Oracle 19C ASM与DataGuard一体化高可用架构,解决双节点物理备库部署中路径规划、网络配置、依赖包检查等常见问题。资料为一份PDF文…

2026/10/2 18:08:48

湖南大学编译原理实验一拆包:从正则到DFA的词法分析器实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 18:08:48

DAMO-YOLO实战:从架构解析到部署优化的完整踩坑记录

目标检测这个圈子,每隔一段时间就会冒出一个新框架,宣称在精度或速度上"吊打"现有方案。大多数时候,这些宣称要么是在特定数据集上精调过、要么是拿自己的强项去比别人的弱项。所以当达摩院开源 DAMO-YOLO 并声称超越一众 YOLO 系列…

2026/10/2 8:16:46

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/10/1 17:09:46

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 10:48:55

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/2 0:02:57

PWN入门:从栈溢出原理到ROP链实战

1. 这不是“学PWN”,是重新理解你每天敲的每一行C代码我第一次在CTF赛场上写出能控制程序流的exp时,手抖得连gdb的c命令都输错三次。那道题只有23行C代码,一个gets()调用,一个printf(),一个return——它甚至没开NX&…

2026/10/2 0:02:57

Windows下cudaMallocHost显存占用之谜:WDDM与TCC模式差异及优化方案

1. 一个反直觉的显存占用现象第一次在 Windows 上看到cudaMallocHost把显存吃掉的时候,我的反应是打开任务管理器反复确认了三遍。明明调用的是主机端锁页内存分配,按 CUDA 文档的说法,这块内存应该落在系统 RAM 里,跟 GPU 的显存…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑