android 系统分区与系统镜像文件
不要把分区与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
评论
onlooker82
回复可以补充一下对metadata 的说明吗?与vbmeta有何区别,谢谢。