boot.img Android系统中,通常会把zImage
( 内核镜像uImage⽂件) 和ramdisk.img打包到⼀起,⽣成⼀个 boot.img镜像⽂件,放到boot分区,由bootloader来引导启动,其启动过程本质也是和分开的uImage&ramdisk.img类似,只不过把两个 镜像按照⼀定的格式合并为⼀个镜像⽽已。 ramdisk.img会被打包到boot.img和recovery.img中 (不是同⼀个ramdisk.img).在不同分区中的作⽤不同 ramdisk.img中⽐较重要的⽂件是"init",“init.rc”,其中init是system/core/init/init.c编译⽽来,boot.img中ramdisk⾥的init.rc 位于system/core/init/init.rc,⽽recovery.img中ramdisk⾥的init.rc位于bootable/recovery/etc/init.rc。 ramdisk.img中⽐较重要的⽂件是"init",“init.rc”,其中init是system/core/init/init.c编译⽽来,boot.img中ramdisk⾥的init.rc 位于system/core/init/init.rc,⽽recovery.img中ramdisk⾥的init.rc位于bootable/recovery/etc/init.rc。
dtbo-imx8mp.img 设备树镜像文件
logo.img 开机logo的镜像
Partition-table.img 对Android系统的磁盘进行分区
Super.img 负责配置动态分区 分区数据是对磁盘上数据分布的描述,系统挂载磁盘时读取数据,在内存中建立相应数据结构,用于后续对磁盘进行管理。可见这里需要先提前生成分区数据,然后读取数据,一旦分区数据写入后就固定了。 动态分区,顾名思义就是分区是动态的,不是一成不变的,可以根据需要改变。动态分区管理的本质就是对分区数据的增删改查操作,操作的对象就是动态分区描述数据 metadata。
编译阶段build_super_image.py内部调用 lpmake 工具生成 super.img 文件 安卓启动时系统通过 liblp 库函数解析 super.img 头部的metadata,在内存中建立 LpMetadata 数据结构。 fs_mgr 基于
LpMetadata 内的分区信息,得到映射表,然后通过 libdm 库调用 linux 的 device mapper 驱动映射设备。
u-boot-imx8mp.imx 编译uboot生成的镜像
vbmeta.img ⽤于安全验证,bootloader验证vbmeta的签名,再⽤vbmeta的key以及hash值验证dtbo/boot/system/vendor。
vendor.img |
|小黑屋|
飞凌嵌入式
( 冀ICP备12004394号-1 )
GMT+8, 2025-5-5 12:31
Powered by Discuz! X3.4
© 2001-2013 Comsenz Inc.