当前位置: 首页 > news >正文

Linux必学知识点:单独编译、烧写构建某个镜像,打包Linux系统镜像

本文目录

  • 一、单独编译uboot镜像
  • 二、单独编译内核和设备树镜像
  • 三、单独编译Recovery 镜像
  • 四、单独编译文件系统镜像
  • 五、打包所有镜像文件
  • 六、单独烧写某个镜像文件

  
在这里插入图片描述
使用相同的Uboot和Kernel,加上不同的文件系统,构成不同的系统。

一、单独编译uboot镜像

  在使用命令./build.sh uboot编译 U-Boot 时,会使用默认的配置文件进行编译,针对 RK3568 平台,默认配置文件位于 configs/rk3568_defconfig。当你修改了 U-Boot 的配置后,需要将修改保存到默认配置文件中。

  1. 修改uboot配置
      在u-boot目录下使用命令:export ARCH=arm64选择arm架构,然后使用make menuconfig来打开图形化配置界面,然后根据实际来选择配置。选择完成后选择保存,会在当前目录下生成.config配置文件。

  2. 替换默认配置文件
      将修改配置后生成的.config文件,替换原来的默认文件的内容。使用命令:cp .config configs/rk3568_defconfig

  3. 编译uboot
      在Linux源码目录下,输入./build.sh uboot命令单独对uboot镜像进行编译。编译成功以后会在u-boot日录下生成uboot.img镜像文件,如下图所示:
    在这里插入图片描述

二、单独编译内核和设备树镜像

  在Linux源码目录下,输入./build.sh kernel命令单独对kernel镜像进行编译。编译完成后映像文件 kernel.imgresource.img(设备树镜像) 会打包成 boot.img 放到kernel目录,如下图所示:
在这里插入图片描述

  在编译内核时,使用默认的配置文件来进行编译,针对 RK3568 平台的默认配置文件为 arch/arm64/configs/rockchip_linux_defconfig。当你修改了内核配置后,需要将更改保存到这个默认配置文件,并单独编译内核。

  1. 修改kernel配置
      在kernel目录下使用命令:export ARCH=arm64选择arm架构,然后使用make menuconfig来打开图形化配置界面,然后根据实际来选择配置。选择完成后选择保存,会在当前目录下生成.config配置文件。

  2. 替换默认配置文件
      将修改配置后生成的.config文件,替换原来的默认文件的内容。使用命令:cp .config arch/arm64/configs/rockchip_linux_defconfig

  3. 编译kernel
    输入./build.sh kernel命令单独对kernel镜像进行编译。

三、单独编译Recovery 镜像

  1. 概述
      Recovery 镜像(Recovery Image)是嵌入式设备或移动设备中常见的一种系统映像,它通常包含一个最小化的操作系统和工具,用于恢复、修复或重新刷入设备的主系统。当主系统出现故障、损坏或无法启动时,Recovery 镜像可以作为备用系统,帮助用户恢复设备到正常状态。
  2. 编译
      在Linux源码目录下,输入./build.sh recovery 命令单独对kernel镜像进行编译。编译完成后会在rockdev目录下生成recovery.img镜像文件。
    在这里插入图片描述

四、单独编译文件系统镜像

更详细的文件系统构建流程查看地址。

  1. 选择板级配置
       首先,需要选择适用于 RK3568 开发板的板级配置(这里指的是 rk3568-evb1-ddr4-v10)。这个配置文件包含关于开发板硬件的定义和编译选项,用于构建系统。
      ./build.sh BoardConfig-rk3568-evb1-ddr4-v10.mk,这个命令会加载开发板的硬件配置,为接下来的文件系统编译做好准备。
  2. 选择文件系统
    (1)编译 Buildroot 文件系统: 如果你选择使用 Buildroot,可以通过以下命令编译文件系统:./build.sh rootfs,编译完成后,生成的文件系统镜像可以在以下位置找到:Linux 源码目录下的buildroot/output/rockchip_rk3568/images
    (2)编译 Debian 文件系统: Debian 是一个广泛使用的 Linux 发行版,适用于较为完整的嵌入式系统开发。如果你需要使用 Debian 文件系统,运行以下命令:./build.sh debian,编译完成后,生成的 Debian 文件系统镜像可以在以下位置找到:Linux 源码目录下的 debian/linaro-rootfs.img
    (3)编译 Yocto 文件系统: Yocto 是一个灵活的工具集,用于创建定制的嵌入式 Linux 系统。如果你选择使用 Yocto,运行以下命令:./build.sh yocto,编译完成后,生成的 Yocto 文件系统镜像可以在以下位置找到:Linux 源码目录下的 yocto/build/latest/rootfs.img

五、打包所有镜像文件

   当你在 Linux 源码目录下单独编译完所有镜像(如 Buildroot、Debian、Yocto)后,可以将这些镜像打包为 update.img,用于烧写到设备上。以下是打包镜像的具体步骤:

  1. 打包固件镜像:./build.sh firmware
  2. 生成 update.img 镜像:./build.sh updateimg

   打包完成后,最终的 update.img 文件会存放在 rockdev 目录下,可以通过工具(如 RKDevTool)将其刷入到 RK3568 开发板中。

六、单独烧写某个镜像文件

   这里总的镜像文件的烧写就不做过多的介绍,可以查看其他博客来学习。我们来学习如何单独烧写某个镜像文件,如kernel、设备树、buildroot等。

注意:在单独烧写某个镜像前,最好先烧写一个完整的镜像,来验证设备的硬件和基础软件(如引导加载程序、内核、文件系统等)都工作正常,一旦你在这个基础上单独烧写某个镜像(如单独升级内核或文件系统),如果发现设备功能异常,你可以快速排查出是否是新烧写的镜像导致的问题,缩小排查范围。

  1. 完整流程
    (1) 准备Linux单独镜像(可以自己编译Linux系统)。
    (2)安装RKTools驱动。
    (3)下载烧写工具:RKDevTool Release_v2.84
    (4)设置拨码开关为烧写模式,并且连接好硬件。
    (5)开始烧写。

  2. 烧录工具使用步骤
    (1)将单独的镜像放到烧录工具以下目录中。
    在这里插入图片描述
    (2)导入配置
    在这里插入图片描述
    在这里插入图片描述
       linux.cfg 是 Rockchip 平台烧录工具的重要配置文件,定义每个镜像的存放位置和加载地址。它描述了设备的分区布局、镜像路径、烧写顺序等信息,用于指导烧录工具将固件正确烧写到设备中。
    在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AI日常绘画【国庆海报】:盛世迎华诞,最强AI绘图大模型Flux国庆节海报制作教程
  • 管家婆分销费用分摊功能使用说明!
  • Gradio 自定义组件
  • 三天搞了7000,AI绘本副业赚钱新途径,抓住绘本创业,轻松开启副业
  • PostgreSQL 主从的进程和Oracle dataguard的进程对比介绍
  • 计算机毕业设计 基于 Hadoop平台的岗位推荐系统 SpringBoot+Vue 前后端分离 附源码 讲解 文档
  • [Redis][Zset]详细讲解
  • PHP转Go很丝滑开发框架设计思路-把php优秀设计借鉴到Go框架设计里面-保留php开发习惯又能提供高软件性能
  • 主流的消息队列
  • Java语言的Springboot框架+云快充协议1.5+充电桩系统+新能源汽车充电桩系统源码
  • 极狐GitLab 17.4 升级指南
  • 2024年一区极光优化+分解+深度学习!VMD-PLO-Transformer-GRU多变量时间序列光伏功率预测
  • 研究生三年概括
  • 【实战篇】join语句怎么优化?
  • [leetcode]216_组合总和III_给定数字范围且输出无重复
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 08.Android之View事件问题
  • 230. Kth Smallest Element in a BST
  • AngularJS指令开发(1)——参数详解
  • Docker 笔记(2):Dockerfile
  • Laravel核心解读--Facades
  • nfs客户端进程变D,延伸linux的lock
  • node.js
  • springboot_database项目介绍
  • SpriteKit 技巧之添加背景图片
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 聊聊sentinel的DegradeSlot
  • 前端性能优化--懒加载和预加载
  • 使用common-codec进行md5加密
  • 在weex里面使用chart图表
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 最近的计划
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • Java总结 - String - 这篇请使劲喷我
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • # centos7下FFmpeg环境部署记录
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #if 1...#endif
  • #QT(QCharts绘制曲线)
  • (1)(1.13) SiK无线电高级配置(五)
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (二)原生js案例之数码时钟计时
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (回溯) LeetCode 46. 全排列
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)SpringBoot3---尚硅谷总结
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)Sublime Text3配置Lua运行环境
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET 8 跨平台高性能边缘采集网关
  • .NET业务框架的构建