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

【玩泰山派】4、制作ubuntu镜像-(5)总结制作镜像流程

文章目录

  • 前言
  • 镜像概念
    • sd卡镜像构成
    • 生成sd卡镜像
  • 制作根文件系统
    • 文件概述
    • 执行流程
      • 执行./mk-base-debian.sh
      • 执行mk-buster-rootfs.sh
      • 执行./mk-image.sh
    • 总结

前言

完整梳理制作镜像流程

镜像概念

这里描述的镜像就是指最终能烧写到sd卡种的一个文件(使用Rockchip的sdk生成的update.img文件)

sd卡镜像构成

使用Rockchip的sdk去执行./build.sh all和./mkfirmware.sh脚本后,会在rockdev目录下生成下列文件,这些文件是构成sd卡烧录镜像的组成成分

boot.img -> ../kernel/boot.img    # 内核
MiniLoaderAll.bin -> ../u-boot/rk356x_spl_loader_v1.13.112.bin  # Secondary Bootloader(SPL)
misc.img -> ../device/rockchip/rockimg/wipe_all-misc.img*    # misc镜像
oem.img        # 不熟悉可能和重置系统相关
parameter.txt -> ../device/rockchip/rk356x/parameter-buildroot-fit.txt # 分区配置文件
recovery.img -> ../buildroot/output/rockchip_rk356x_recovery/images/recovery.img # 不熟悉可能和重置系统相关
rootfs.ext4 -> ubuntu-xfce-rootfs.img  # 根文件系统,指向ubuntu-xfce-rootfs.img 
rootfs.img -> ubuntu-xfce-rootfs.img   # 根文件系统,指向ubuntu-xfce-rootfs.img 
uboot.img -> ../u-boot/uboot.img         # uboot
ubuntu-xfce-rootfs.img                        # 根文件系统
userdata.img										# 不熟悉,用户数据img

在 Rockchip 的启动流程中:
​BootROM​ → 2. ​MiniLoaderAll.bin (SPL)​​ → 3. ​U-Boot​ → 4. ​Kernel

生成sd卡镜像

执行./build.sh updateimg后生成名为update.img的sd卡镜像,可以使用Rockchip烧录工具烧录到sd卡中,插入泰山派sd卡卡槽中,就可以直接启动。

./build.sh updateimg执行日志如下,

root@lckfb:/home/lckfb# ./build.sh updateimg
processing option: updateimg
Make update.img
start to make update.img...
Android Firmware Package Tool v2.0
------ PACKAGE ------
Add file: ./package-file
package-file,Add file: ./package-file done,offset=0x800,size=0x28b,userspace=0x1
Add file: ./Image/MiniLoaderAll.bin
bootloader,Add file: ./Image/MiniLoaderAll.bin done,offset=0x1000,size=0x719c0,userspace=0xe4
Add file: ./Image/parameter.txt
parameter,Add file: ./Image/parameter.txt done,offset=0x73000,size=0x1f4,userspace=0x1
Add file: ./Image/uboot.img
uboot,Add file: ./Image/uboot.img done,offset=0x73800,size=0x400000,userspace=0x800
Add file: ./Image/misc.img
misc,Add file: ./Image/misc.img done,offset=0x473800,size=0xc000,userspace=0x18
Add file: ./Image/boot.img
boot,Add file: ./Image/boot.img done,offset=0x47f800,size=0x16eea00,userspace=0x2dde
Add file: ./Image/recovery.img
recovery,Add file: ./Image/recovery.img done,offset=0x1b6e800,size=0x1e5fa00,userspace=0x3cc0
Add file: ./Image/rootfs.img
rootfs,Add file: ./Image/rootfs.img done,offset=0x39ce800,size=0xec827000,userspace=0x1d904e
Add file: ./Image/oem.img
oem,Add file: ./Image/oem.img done,offset=0xf01f5800,size=0x10a6000,userspace=0x214c
Add file: ./Image/userdata.img
userdata,Add file: ./Image/userdata.img done,offset=0xf129b800,size=0x444000,userspace=0x888
Add CRC...
Make firmware OK!
------ OK ------
********rkImageMaker ver 2.0********
Generating new image, please wait...
Writing head info...
Writing boot file...
Writing firmware...Generating MD5 data...
MD5 data generated successfully!
New image generated successfully!
Making ./Image/update.img OK.
Running build_updateimg succeeded.

最终生成update.img文件,从日志中可以看出,update.img文件就是由其他文件组成的而已。这次我主要关注根文件系统(rootfs)的制作,可以根据自己的需求,去制作不同的根文件,其他部分可以复用。替换rootfs.ext4和rootfs.img软链到自己制作的根文件系统之后,就可以做出对应的镜像文件。

制作根文件系统

这里这要分析制作debian和ubuntu根文件系统的流程,不涉及buildroot根文件系统(sdk默认生成的就是buildroot根文件系统)。主要是粗略解读一下Rockchip sdk中的制作debian根文件系统的框架,这里也参考了鲁班猫的文档。

文件概述

进入debian目录下,有以下文件.

-rwxrwxr-x  1 1.1K 3月  10 11:04 mk-base-debian.sh
-rwxrwxr-x  1 8.1K 3月  10 11:25 mk-buster-rootfs.sh
-rwxrwxr-x  1  477 3月  10 10:49 mk-image.sh
-rwxrwxr-x  1  441 12月 26 15:18 mk-rootfs.sh
drwxrwxr-x  7   67 11月 30 11:19 overlay
drwxrwxr-x  5   49 11月 30 11:19 overlay-debug
drwxrwxr-x  4   28 11月 30 11:19 overlay-firmware
drwxrwxr-x  3   19 11月 30 11:19 packages
drwxrwxr-x  5   47 11月 30 11:19 packages-patches
-rwxrwxr-x  1 3.0K 11月 30 11:19 post-build.sh
-rw-rw-r--  1 2.6K 3月  10 11:17 readme.md
drwxrwxr-x  7  164 11月 30 11:19 ubuntu-build-service
  • mk-base-debian.sh:清理构建目录并调用live build开始构建。
  • mk-buster-rootfs.sh:添加Rockchip overlay层。
  • mk-image.sh:将根文件系统打包成img镜像文件
  • overlay:Rockchip overlay层,主要是rootfs中的配置文件
  • overlay-debug:Rockchip overlay层,主要是debug脚本和工具
  • overlay-firmware:Rockchip overlay层,主要是wifi/bt/npu的固件
  • packages:硬件加速包
  • ubuntu-build-service:用于搭建构建环境的依赖文件和live build配置文件

packages目录下有很多重要的deb包,和Rockchip芯片适配的硬件固件和加速包

├── chromium
├── glmark2
├── gst-plugins-bad1.0
├── gst-plugins-base1.0
├── gst-plugins-good1.0
├── gst-plugins-ugly1.0
├── gstreamer
├── gst-rkmpp
├── libdrm
├── libdrm-cursor
├── libmali
├── libv4l
├── mpp
├── openbox
├── pcmanfm
├── pulseaudio
├── rga
├── rga2
├── rkaiq
├── rkisp
├── rknpu2
├── rktoolkit
├── rkwifibt       # 这个里面有泰山派使用的博通网卡的固件
└── xserver

执行流程

Rockchip sdk中编译debian根文件系统的函数

function build_debian(){ARCH=${RK_DEBIAN_ARCH:-${RK_ARCH}}case $ARCH inarm|armhf) ARCH=armhf ;;*) ARCH=arm64 ;;esacecho "=========Start building debian for $ARCH========="cd debianif [ ! -e linaro-$RK_DEBIAN_VERSION-alip-*.tar.gz ]; thenRELEASE=$RK_DEBIAN_VERSION TARGET=desktop ARCH=$ARCH ./mk-base-debian.shln -rsf linaro-$RK_DEBIAN_VERSION-alip-*.tar.gz linaro-$RK_DEBIAN_VERSION-$ARCH.tar.gzfiVERSION=debug ARCH=$ARCH ./mk-rootfs-$RK_DEBIAN_VERSION.sh./mk-image.shfinish_build
}

从上面函数可以看出,执行流程分三步

  • 1、执行./mk-base-debian.sh
  • 2、执行./mk-rootfs-$RK_DEBIAN_VERSION.sh(这里也就是mk-buster-rootfs.sh)
  • 3、执行./mk-image.sh

执行./mk-base-debian.sh

这里主要是使用debian的livebuild工具,去做出一个基础的debian根文件系统

执行mk-buster-rootfs.sh

这里在上面的生成的根文件系统基础上,安装Rockchip相关的东西。主要是把overlay、 overlay-debug、overlay-firmware、packages相关的东西装进去。

鲁班猫在这一步会调用./mk-image.sh,所以就不用单独执行下面的脚本了。

执行./mk-image.sh

将上一步的内容打包成一个img文件,这个就是根文件系统文件。

总结

http://www.dtcms.com/a/439058.html

相关文章:

  • 红帽Linux-1.访问命令行
  • 永久免费建个人网站优秀个人网站推荐
  • 网站首页html制作代码深圳龙岗网络推广公司
  • 深圳公司建立网站建筑业大数据服务平台官网
  • 在电脑上哪里可以做网站向百度提交网站
  • vs做网站怎么上百度手机极速版
  • Spark专题-第三部分:性能监控与实战优化(3)-数据倾斜优化
  • gRPC从0到1系列【15】
  • 网站制作软件手机医疗机构网站模板
  • No021:具身智能——当DeepSeek拥有物理身体的全新纪元
  • XtQuant 能提供哪些服务
  • java数据权限过滤
  • 珠宝网站开发目的网站建设营销型号的区别
  • 网站建设方案书是什么意思wordpress最新官方默认主题
  • SPEA:强度帕累托进化算法
  • 沐风老师3DMAX快速地形插件QuickTerrain使用方法详解
  • 北京保障房建设网站图像处理专业网站
  • 丹东市住房和城乡建设网站通过手机建设网站
  • Linux 动静态库与加载原理
  • 东莞建外贸企业网站做网站需不需要购买服务器
  • 使用burp工具的intruder模块进行密码爆破
  • wordpress邮件设置广州网站优化效果
  • 做网站关键字网站建设培训心得体会
  • 清远专业网站建设服务百度如何建网站群
  • 能够做一镜到底的网站seo分析报告怎么写
  • LangChain源码分析(二)- Message系统
  • 做网站的公司推荐一 网站建设的总体目标
  • 建站资源深圳十大平面设计公司
  • 中文 网站模板网站设计模板 优帮云
  • 【Svelte】如何使用 SvelteKit load 函数中的 depends 功能?例子演示