0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RK平台上不会移植第三方系统?读懂这个脚本,轻松掌握嵌入式系统构建

jf_44130326 来源:Linux1024 2026-02-04 16:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式开发领域,我们常遇到这样的场景:花了三天编译的系统镜像,启动后却发现摄像头无法工作;明明配置了SSH服务,却始终连不上设备;甚至有时候,一句"构建失败"的报错能让整个团队卡壳半天。

如果你也曾被这些问题困扰,那今天这篇文章值得深读。我们将通过分析一个真实的嵌入式系统构建脚本,带你看清系统从01的诞生过程,更重要的是——学会在调试时抓住问题的"七寸"

一、这到底是个什么脚本?

先看脚本的核心定位:这是一个基于Debian嵌入式系统构建脚本,负责将基础镜像、驱动模块、应用组件"缝合"成可直接烧录的系统镜像。简单说,它是系统的"接生婆",从基础镜像到最终可用的系统,全流程都由它掌控。

wKgZO2kamRqAVDVrAAFWLHaxB-Q124.png

我们可以把它的工作拆解5个关键阶段:

1.环境初始化:定好"施工图纸"

TARGET_ROOTFS_DIR="binary"# 目标根文件系统目录case"${ARCH:-$1}"in   # 处理架构参数,支持armhf和arm64  arm|arm32|armhf)    ARCH=armhf    ;;  *)    ARCH=arm64    ;;esacVERSION=${VERSION:-"release"}# 默认为release版本,支持debug模式

这部分就像施工前的"图纸设计":明确构建目标(根目录位置)、硬件适配(架构选择)、功能模式(release/debug)。调试时第一个要检查的就是这里——如果架构选错,后续所有驱动和软件都会"水土不服"

2.基础镜像处理:打好"地基"

# 检查基础镜像是否存在if[ ! -e linaro-bullseye-alip-*.tar.gz];then  echo"�33[36m Run mk-base-debian.sh first �33[0m"  exit -1fi# 解压基础镜像sudo tar -xpf linaro-bullseye-alip-*.tar.gz

基础镜像是系统的"地基",如果这一步出错(比如镜像缺失、解压失败),后续所有操作都是空谈。调试时若遇到"文件不存在"的报错,先检查基础镜像是否正确生成(脚本提示要先运行mk-base-debian.sh)。

3.组件集成:搭建"主体结构"

这部分是脚本的核心,像搭积木一样往基础系统里填充内容:

# 复制架构相关的软件包sudocp-rpf packages/$ARCH/*$TARGET_ROOTFS_DIR/packages# 复制系统配置文件(overlay层)sudocp-rpf overlay/*$TARGET_ROOTFS_DIR/# 复制网卡驱动模块sudocp../kernel/drivers/net/ethernet/realtek/r8125.ko$TARGET_ROOTFS_DIR/usr/lib/modules/
wKgZO2kamRqAAUPZAABGizoDswk857.png

这里藏着很多调试关键点:

如果某个硬件(比如网卡)无法工作,先检查驱动文件(r8125.ko)是否正确复制

如果系统配置异常(比如启动脚本丢失),大概率是overlay目录的文件没复制完整

不同架构(armhf/arm64)的软件包存在差异,若混用会导致"无法安装"的报错

4.系统配置:"精装修"阶段

通过chroot进入目标根文件系统后,脚本开始执行一系列"精装修"操作:

# 设置DNS,解决联网问题echo"nameserver 8.8.8.8">> /etc/resolv.conf# 安装核心工具(SSH、性能测试工具等)apt-get install -y openssh-server iperf3 stress-ng# 配置串口登录sed -i"s~(^ExecStart=.*)~# 1nExecStart=-/bin/sh -c '/bin/bash -l /dev/%I 2>&1'~"/usr/lib/systemd/system/serial-getty@.service# 安装硬件相关组件(视频、相机、显示服务等)${APT_INSTALL}gstreamer1.0-plugins-bad # 视频处理${APT_INSTALL}cheese v4l-utils     # 相机支持${APT_INSTALL}/packages/xserver/*.deb # 显示服务

这部分是调试的重灾区,常见问题包括:

网络不通:检查resolv.conf是否正确配置,软件源是否可用

SSH连不上:查看openssh-server是否安装,服务是否启用

硬件功能失效(如相机打不开):检查对应的包(cheesev4l-utils)是否安装成功

启动后黑屏:可能是xserverweston显示服务配置有误

5.清理与打包:"竣工交房"

# 清理缓存和临时文件rm-rf /var/lib/apt/lists/*rm-rf /var/cache/# 打包成最终镜像sudo tar zcf RN01-debian-base-$(date+%Y-%m-%d).tar.gz$TARGET_ROOTFS_DIR

清理步骤能减小镜像体积,如果不清除,镜像会比较大,但如果清理过度(比如误删必要文件),会导致系统启动失败。如果镜像能生成但无法启动,要检查这里是否误删了关键组件

二、调试时盯着这个脚本,到底能解决什么问题?

很多开发者调试时习惯"头痛医头":摄像头不行就只查摄像头驱动,网络不通就只看网卡配置。但实际上,嵌入式系统的问题往往是"牵一发而动全身",而这个构建脚本就是串联所有环节的"主线"

关注它的3个核心价值:

1.快速定位"失败环节"

脚本的每一步都有明确输出(比如echo -e "�33[36m Install camera... �33[0m"),构建失败时,最后出现的提示信息就是"案发现场"

比如看到"Install camera..."后报错,说明相机相关的包安装失败,此时应检查:

packages目录下的相机相关deb包是否存在

包的架构是否与目标系统匹配(armhf/arm64不能混)

依赖是否满足(可以在chroot环境手动执行apt安装命令排查)

2.理解系统"依赖关系"

嵌入式系统的组件依赖极其复杂:比如相机工作不仅需要相机驱动,还依赖视频框架(gstreamer)、显示服务(xserver)、硬件加速库(mpp)。

这个脚本清晰展示了依赖链条:先安装基础系统再装视频框架然后装相机应用最后配置显示服务。当某个功能失效时,顺着脚本的安装顺序倒推,能快速找到缺失的依赖

wKgZO2kamRqAFuJ3AABOJQnOk1A900.png

3.排查"环境配置"问题

很多时候,相同的代码在A电脑能构建成功,在B电脑却失败,问题往往出在环境差异。这个脚本将所有构建步骤"代码化",让环境配置变得可追溯:

是不是忘了复制某个overlay配置文件?

内核驱动的路径是否正确(脚本中是../kernel/drivers/...)?

debug版本需要的额外包(如glmark2)是否在VERSION=debug时才安装?

三、给开发者的3个调试技巧

1.善用echo输出中间变量

在关键步骤前增加输出,比如在复制驱动前加echo "Copying r8125.ko from $(pwd)/../kernel/...",确认路径是否正确。

2.保留chroot环境

脚本最后会退出chroot环境,调试时可以注释掉清理和打包步骤,手动进入chroot $TARGET_ROOTFS_DIR,逐条执行命令排查问题。

3.对比成功与失败的构建日志

保存一次成功构建的完整日志,当后续构建失败时,用diff命令对比日志,快速定位差异点。

写在最后

嵌入式系统构建就像搭积木,而这个脚本就是积木的"组装说明书"。读懂它,你不仅能快速解决眼前的调试问题,更能理解整个系统的"骨骼架构"——这才是从"解决问题""看透本质"的关键一跃。

下次遇到系统构建问题时,不妨先打开这个脚本,顺着它的步骤一步步排查。很多时候,答案就藏在那些看似平凡的cpapt-getsed命令里。

(如果觉得有用,欢迎转发给你的开发伙伴~)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3817

    浏览量

    133865
  • 移植
    +关注

    关注

    1

    文章

    417

    浏览量

    29523
  • 脚本
    +关注

    关注

    1

    文章

    411

    浏览量

    29269
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何在LabVIEW中嵌入第三方软件界面

    如何把第三方软件的界面嵌入到labview中,并且能够在LabVIEW的前面板中对第三方软件进行操作。LabVIEW中有Active用于IE回调的例子,可以在LabVIEW前面板中操作IE。想把IE换成
    发表于 04-27 23:06

    嵌入式AI语音平台已对第三方开放 你更支持谁家的“助手”?

    亚马逊Alexa。星更是在今年底推出自家Bixby智能语音应用。同时,科技巨头们也纷纷针对智能语音推出第三方开发者,意图在更多领域设备产品上获得嵌入式语音集成。苹果(Siri)从12年6月开始
    发表于 12-28 17:24

    国内知名第三方检测认证机构排名

    的商品检验活动。第三方检测机构企业的存在有着其自己特别的意义,能为产业转型升级提供支持,为产业的发展提供强有力的服务平台等。随着人们生活水平的提高以及国际贸易壁垒的加剧,我国第三方检测行业快速发展
    发表于 07-19 16:57

    如何利用第三方软件快速实现FPGA嵌入式系统设计?

    这还是“新鲜事物”。学习并掌握一项新的技术或具备某种能力,比如学习FPGA开发技术并将其应用到实际系统中,这是一项艰巨任务。AltiumDesigner 提供了一种简单轻松的方法,可以帮助软/硬件工程师共同应对FPGA
    发表于 09-20 07:10

    嵌入式JavaPOS系统接口怎么测试?

    的规范、开发和调试平台系统升级和移植困难,尤其对于一体机等需要第三方开发软件的应用,造成开发上更大的难度。虚拟机VM的改进,Java应用的速度已经不是太大的问题。
    发表于 10-08 08:05

    请问第三方平台授权如何实现?

    第三方平台授权如何实现
    发表于 11-10 07:27

    buildroot如何添加支持第三方软件?

    iMX6ULL终结者Buildoot文件系统构建篇buildroot添加支持第三方软件
    发表于 04-02 06:06

    嵌入式系统中动画设计方法的适用度分析,不看肯定后悔

    不需安装第三方软件的动画设计方法分析需要安装第三方软件的动画设计方法分析可用于嵌入式系统开发的脚本语言
    发表于 04-28 06:38

    浅析嵌入式系统移植

    Linux 在嵌入式中应用的条件与前景嵌入式系统越来越追求数字化、网络化和智能化。这就要要求整个嵌入式系统必须是开放的、提供标准的API,并
    发表于 07-28 07:07

    鸿蒙开源第三方组件资料合集

    展示1、测试界面。 如图1所示,这是一个为了测试Timber_ohos功能而简单构建的UI页面。点击“测试”按钮即可输出相应的log。2、鸿蒙开源第三方组件
    发表于 03-23 09:53

    最受欢迎的第三方平台——呼叫中心系统

    中小企业一定要选择正规的呼叫中心供应商,只有应有强大的第三方合作平台,才能拥有更专业的系统团队以及系统维护平台,只有可信的团队才能为企业带来
    发表于 09-20 17:54

    基于第三方信号无源探测系统研究

    文中主要讨论了基于第三方信号检测隐形目标的无源探测系统,并对侦察第三方信号作用距离和基于第三方信号无源探测系统的作用距离进行仿真,证明基于
    发表于 03-01 15:35 29次下载
    基于<b class='flag-5'>第三方</b>信号无源探测<b class='flag-5'>系统</b>研究

    B/S模式下电子商务第三方物流体系的构建

    特点与作业过程,应该更加有效的利用B/S现代信息技术,高效地实现对电商第三方物流企业的管理,在B/S模式下设计构建出有效的电子商务第三方物流体系信息管理系统。结果证实,在B/S模式下
    发表于 10-30 14:49 2次下载
    B/S模式下电子商务<b class='flag-5'>第三方</b>物流体系的<b class='flag-5'>构建</b>

    第三方脚本成为网络攻击“重灾区”,多管齐下防范第三方脚本安全隐患

      第三方脚本攻击利用的是第一网站对第三方脚本的控制力不足和难以实现的全面监测,造成较为严重的攻击后果。除此之外,
    的头像 发表于 09-04 14:51 4613次阅读

    阿里云加入IBM Cloud Paks第三方生态系统

    为了构建更大更开放的混合云生态,IBM 近日还宣布计划在未来年内向混合云生态系统投资 10亿美元,助力第三方软件提供商和数字化 IT 提供商的行业解决方案迁移到 IBM 的混合云
    的头像 发表于 09-27 11:30 3261次阅读