android系统分区大小设置的经验值


背景:

1、android手机出厂后,厂商经常会提供新版本ROM升级包给用户升级。

2、android系统除平台特定的分区外,必须的通用分区有:lk、 boot 、 recovery、system、cache、userdata。

3、新版本ROM升级包,由于两种原因ROM的size会不断增大:厂商添加新功能、升级android大版本。

4、局限:android系统的recovery升级ROM不支持分区大小调整。


android系统分区大小设置的经验值

1、 lk         >=1M               //虽然lk一般只有300k size左右,但如果需要添加一些开机logo等,空间需求还是会比较大,2M足够啦。                              

2、boot     >= 20M or 50M   // boot image 如果采用压缩方式:20M就足够了。如果采用非压缩方式,则最好配置50M 。

3 、recovery       >= 20M                //recovery 也是包括kernel、及ramdisk-recovery 。另外、如果需要优化recovery ui ,需要增加不少ui资源图片。   

4、 system         1.2G  -- 1.5G  // system分区是android系统ROM升级主要的内容了,需要预留足够的空间。

                                          //一般4G, 8G emmc项目,该分区可以设置1.2G-1.5G ,如果使用的是16G以上的emmc 可以设置成2G 

5、 cache   200M ......      //  一般该分区设置200M就可以啦,google官网对该分区的要求也不高。 设大了不知道是否有什么好处?

                 //当然,大容量emmc项目如果想将cache分区用于OTA升级时暂存升级包,那得将它设置成和system分区大小接近。比如: 1.5或2G 。  

6、 userdata           ........                 //android 2.2以后采用fuse文件系统将userdata与sdcard合并。那么平台一般会将剩余的emmc空间全部自动留给userdata 。


总之, 项目上市前,各系统各分区设置都要有一定的余量,使上市后OTA升级软件时,不会遇到某个分区空间不足的烦人情况!


OTA升级新版本,bootimg分区空间不足怎么解决???

/kernel/arch/arm/boot/compressed,kernel压缩代码中可以看到,bootimage解压支持GZIP, LZMA ,XZ LZO, 四种算法,默认gzip 。
gzip的压缩率不大,如果bootimg size太大,可以选择压缩率更大的LZMA或者XZ算法。当然压缩率符越大,解压时间越长。

CONFIG_KERNEL_GZIP=yes
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_XZ is not set


Kernel default使用GZIP, 建議修改為XZ演算法即可大幅縮減size.

但會有開機時間增加的sideeffect, 約略增加650ms~~

 

開機時間 vsKernel Image Size

 

start

end

Time(ms)

Size

GZIP

5166

5958

792

4372

1497

2289

792

5178

LZMA

1448

3295

1847

3261

1448

3295

1847

4068

XZ

1433

2875

1442

3067

1431

2874

1443

3874


 

你可能感兴趣的:(android,recovery)