一、android系统ROM分区

所谓ROM芯片就是断电后不丢失数据的芯片,可以用来储存数据。 

2.1.boot分区——系统内核。

这个分区上有Android的引导程序,包括内核和内存操作程序。如果没有这个分区,该设备将根本就没有能够启动。恢复系统的时候会擦拭此分区,并且必须重新安装引导程序和ROM才能重启系统。

2.2.system分区——系统文件。

此分区基本上包含了整个操作系统的内核和引导以外。这包括了Android用户界面,以及所有的系统预安装在设备上的应用程序来。擦拭这个分区将删除设备的Android系统,以你需要进入recovery模式或者bootloader模式去安装一个新的ROM。

2.3.recovery分区——负责恢复。

可以启动设备进入recovery控制台去执行高级的系统恢复和管理操作。

2.4.data分区——用户数据。 

这个分区保存着用户数据。通讯录、短信、设置和你安装的apps都在这个分区上。擦除这个分区相当于恢复出厂设置,当第一次启动设备的时候或者在安装了官方或者客户的ROM之后系统会自动重建这个分区。当执行恢复出厂设置时,就是在擦除这个分区。

2.5.cache分区——系统缓存。

这个分区是Android系统存储频繁访问的数据和app的地方。擦除这个分区不影响你的个人数据,当你继续使用设备时,被擦除的数据就会自动被创建。


2.6.misc分区——杂项。


这个分区包含各种复杂的类似于on/off的系统设置。这些设置可能是USB配置和某些硬件配置信息。这是一个重要的分区,如果该分区损坏或者丢失,设备的功能可能就工作不正常。

2.7.sdcard分区——内置储存卡。

这个分区不是内部的存储区,而是SD card。这是你个人存储大文件的地方,存储多媒体文件、文档、ROM文件等等。如果你备份了这个分区上文件,那么擦除这个分区将会很安全。不过请注意一些用户安装的apps会存储数据和设置参数到SD card上,擦除这个分区会掉的这些数据。

2.8. /sd-ext

这个分区不是Android设备的标准分区,但是在修改版的自定义ROM的情况下变得很流行。


二、android正常启动流程


当按下电源键手机上电源启动后,首先从bootloader分区中一个固定的地址开始执行指令, bootloader分区分成两个部分,分别叫做primary bootloader和secondary stage bootloader。Primary bootloader主要执行硬件检测,确保硬件能正常工作后将secondary stagebootloader拷贝到内存(RAM)开始执行。Secondary stage bootloader会进行一些硬件初始化工作,获取内存大小信息等,然后根据用户的按键进入到某种启动模式。比如说大家所熟知的通过电源键和其它一些按键的组合,可以进入到recovery,fastboot或者选择启动模式的启动界面等。我们在论坛上看到的bootloader通常指的就是secondary stage bootloader。不过我们不需要关心太多的细节,可以简单的理解为bootloader就是一段启动代码,根据用户按键有选择的进入某种启动模式。

当我们只是按下电源键开机时,会进入正常启动模式。Secondary stagebootloader会从boot分区开始启动。Boot分区的格式是固定的,首先是一个头部,然后是Linux内核,最后是用作根文件系统的ramdisk。Secondary stagebootloader根据某些标志来决定是载入boot分区(正常启动)还是载入recovery分区(recovery模式)。

 

当Linux内核启动完毕后,就开始执行根文件系统中的init程序,init程序会读取启动脚本文件,执行脚本中指定的动作和命令,脚本中的一部分是运行system分区的程序。