android的存储分为两种
一种叫做RAM,如emmc标准的ddr2/3/4,容量比较小
一种叫做ROM,rom大小比较大,如8G/16G/32G/64G/128G。
我们给手机刷机,是把system.img/recovery.img/userdata.img等按照分区表烧写在对应地址的ROM上,这部分叫系统部分,如16G的手机,开机后只有11G,
其中5G被这些分区占据了,用户能使用的存储大小为11G。
我们在bootloader阶段会从boot/recovery分区中读取kernel/ramdisk到ram上,然后引导kernel,加载虚拟文件系统ramdisk,启动init,然后读取rom中的文件系统的内容。
在boot.img/recovery.img的内容如下,bootloader会从boot header得到kernel/ramdisk/second/device的大小和要加载到ram上的地址,读取aboot/recovery分区的内容到ram上。
recovery.img/boot.img的构成是一样的,只是里面文件的大小和信息不同,文件名是一样的。
struct boot_img_hdr
{
unsigned char magic[BOOT_MAGIC_SIZE];
unsigned kernel_size; /* size in bytes */ //kernel表