android 系统分区与系统镜像文件

sancaiodm Android源码学习 2021-09-15 2458 1

不要把分区与img镜像文件混为一体,并不是每一个img镜像文件都会对应生成同名系统分区。


Android系统的启动可分:BootRom > Bootloader > Kernel > Init > Zygote > SystemServer > Launcher

前一天有一个人问我公司的系统userdata.img 系统分区是什么格式的?今天查了一下备注一下,

除userdata.img是f2ts格式,其它分区都是ext4,由此可见 f2fs是针对用户数据区做的修改,并没是将所有系统分区ext4都替换掉(Linux 系统的文件系统一般都是用EXT4)


【1】系统格式化后是清空data/目录下所有数据,镜像文件userdata.img就是系统挂载的data目录(双清就是指对userdata分区和cache分区的清理)

【2】vbmeta.img:用于安全验证,bootloader验证vbmeta的签名,再用vbmeta的key以及hash值验证dtbo/boot/system/vendor。

【3】userdata.img(用户数据镜像):将会被挂接到 /data 下,包含了所有应用相关的配置文件,以及用户相关的数据 

【4】recovery.img: recovery分区的镜像,一般用作系统恢复(刷机)。

【5】boot.img包含内Linux内核镜像zImage和根文件系统ramdisk文件。boot.img会放在一个独立分区当中。该镜像一般是通过mkbootimg(out/host/linux-x86/bin/)来打包,boot分区:由 kernel 和 ramdisk 构成,

【6】system.img会提供android所需要的命令,内置app,运行动态库,以及系统配置文件, 在system-as-root特性中, system镜像会被直接挂载成根目录下

【7】super.img 自Android Q(10.0)以后,系统支持动态分区(dynamic partition),它将多个系统只读分区(包括system、product、vendor、odm或者其他厂商自定义分区)合并为一个super分区

【8】vendor:包含有厂商私有的可执行程序、库、系统服务和app等。可以将此分区看做是system分区的补充,厂商定制ROM的一些功能都可以放在此分区

【9】cache.img 主要用于缓存系统升级OTA包等。双清就是指对userdata分区和cache分区的清理。在A/B设备中,OTA包就不需要存储在此


高通平台:镜像文件 ,高能的镜像文件可以通过rawprogram.xml文件查看

boot.img ,   dtb.img ,dtbo.img, fs_image.tar.gz.mbn.img,      metadata.img   odm.img, persist.img

product.img     ramdisk.img     recovery.img            super.img       system.img   system_ext.img

userdata.img    vendor.img      vm-bootsys.img  


高通平台:系统根目录 # ls

acct        cache   data_mirror    init             lost+found  odm_dlkm     product                 sys         vendor_dlkm

apex        config  debug_ramdisk  init.environ.rc  metadata    oem          sdcard                  system

bin         d       dev            init.ls.rc       mnt         postinstall  second_stage_resources  system_ext

bugreports  data    etc            linkerconfig     odm         proc         storage                 vendor



MTK平台:镜像文件 ,MTK的镜像文件可以查看 platform_Android_scatter.txt

boot.img    cache.img  dtbo-verified.img   lk-verified.img   recovery.img  scp-verified.img 

spmfw-verified.img       sspm-verified.img     super.img     tee-verified.img   vbmeta.img

vbmeta_system.img    vbmeta_vendor.img    userdata.img


MTK平台:系统根目录 #ls

acct        cache   data_mirror    init             lost+found  odm_dlkm     product                 sys         vendor_dlkm

apex        config  debug_ramdisk  init.environ.rc  metadata    oem          sdcard                  system

bin         d       dev            init.ls.rc       mnt         postinstall  second_stage_resources  system_ext

bugreports  data    etc            linkerconfig     odm         proc         storage                 vendor


MTK平台分区名称:

 有同名img文件或bin文件 partition_name: preloader ,recovery ,vbmeta_system,vbmeta_vendor,md1img,spmfw,scp1,scp2,sspm_1,sspm_2,lk,lk2,boot,vendor_boot,,logo,dtbo,tee1,tee2,super

,vbmeta,cache,userdata


 无镜像文件分区 partition_name: persist, proinfo,pgpt , para ,expdb,boot_para  ,frp,nvcfg,nvdata,md_udc,metadata,protect1,protect2,seccfg,sec1,gz1,gz2,nvram,otp,flashinfo,sgpt





Android 根目录下的sys 与system 目录差异:

dr-xr-xr-x  14 root   root          0 2010-01-01 08:00 sys

drwxr-xr-x  15 root   root       4096 2023-03-20 05:29 system

如上sys目录下root用户都无写的权限。

sys 目录是 Linux 系统内核文件 , 偏硬件底层,

system 目录是 Android 系统文件 , Linux 内核更底层 , Android 系统是基于 Linux 内核



 Windows系统的文件系统是 NTFS;

grep "_FILE_SYSTEM_TYPE" -srn ./

aosp/device/sprd/platformname/productname/BoardConfig.mk:36:BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4

aosp/device/sprd/platformname/productname/BoardConfig.mk:48:BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := ext4

aosp/device/sprd/platformname/productname/BoardConfig.mk:49:BOARD_PRODNVIMAGE_FILE_SYSTEM_TYPE := ext4

aosp/device/sprd/platformname/productname/BoardConfig.mk:58:BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4

aosp/device/sprd/platformname/productname/BoardConfig.mk:61:BOARD_SOCKOIMAGE_FILE_SYSTEM_TYPE := ext4

aosp/device/sprd/platformname/productname/BoardConfig.mk:62:BOARD_ODMKOIMAGE_FILE_SYSTEM_TYPE := ext4

aosp/device/sprd/platformname/productname/s9863a2h10_Base.mk:81:BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs


评论

精彩评论
2023-08-03 14:42:12

可以补充一下对metadata 的说明吗?与vbmeta有何区别,谢谢。