android各分区大小,扫盲:安卓系统各大分区介绍1

1. bootloader 当我们拿到一款手机,第一件事应该就是按下 电源键开机,那么从开机到进入到桌面程序这中 间发生了些什么呢,

大 家可以简单的把手机的ROM存储类比为我 们电脑上的硬盘,这个硬盘被分成了几个分区: bootloader分区,boot分区,system分区等等。 后 面我们会逐渐介绍各个分区的用途。所谓的刷 机我们可以简单的理解成把软件安装在手机的某 些分区中,类似于我们在电脑上安装Windows系 统。 当 按下电源键手机上电启动后,首先从bootlo ader分区中一个固定的地址开始执行指令,bootloader分区分成两个部分,分别叫做 primary bootloader和secondary stage bootloa der。Primary bootloader主要执行硬件检 测, 确保硬件能正常工作后将secondary stage bootl oader拷贝到内存(RAM)开始执行。 Secondary s tage bootloader会进行一些硬件初始化工作,获 取内存大小信息等,然后根据用户的按键进入到 某种启动模式。比如说大 家所熟知的通过电源键 和其它一些按键的组合,可以进入到recovery,f astboot或者选择启动模式的启动界面等。我们在 论坛上看到的 bootloader通常指的就是secondar y stage bootloader。不过我们不需要关心太多 的细节,可以简单的理解为 bootloader就是一段 启动代码,根据用户按键有选择的进入某种启动 模式。

fastboot模式:fastboot是 android定义的一 种简单的刷机协议,用户可以通过fastboot命令 行工具来进行刷机。比如说 fastboot flash boot boot.img这个命令就是把boot.img的内容刷写到 boot分区中。一般的手机厂商不直接提供 fastbo ot模式刷机,而是为了显示他们的牛B之处,总 是会提供自己专有的刷机工具和刷机方法。比如 说三星的Odin,摩托的RSD,华为的粉屏等 等。 但是其本质实际上是相同的,都是将软件直接fla sh到各个分区中。

recovery模式:recovery是 android定义的一 个标准刷机协议。当进入recovery模式时,seco ndary stage bootloader从recovery分区开 始启 动,recovery分区实际上是一个简单的Linux系统 ,当内核启动完毕后,开始执行第一个程序init(i nit程序是Linux系统所有程序 的老祖宗)。init会 启动一个叫做recovery的程序(recovery模式的 名称也由此而来)。通过recovery程序,用户可 以执行清除数 据,安装刷机包等操作。一般的手 机厂商都提供一个简单的recovery刷机,而大名 鼎鼎的CWM Recovery就是一个加入了很多增强 功能的 recovery,要想用上CWM Recovery前提 是recovery分区可以被刷写。大家在论坛上看到 的解锁bootloader,通常指的就是 解锁recovery 或fastboot,允许刷写recovery分区,这样大家 就可以用上喜爱的CWM Recovery了。

手机除了普通的CPU芯片以外,还有MODEM 处理器芯片。该芯片的功能就是实现手机必需的 通信功能,大家通常所的刷RADIO就是刷写mod em分区。基带什么的

2. 正常启动

当我们只是按下电源键开机时,会进入正常启 动模式。Secondary stage bootloader会从boot 分区开始启动。Boot分区的格式是固定的,首先 是一个头部,然后是Linux内核,最后是用作根文 件系统的ramdisk。 一般针对每个机型的完整刷机包中会有一个bo ot.img文件,这就是boot分区镜像文件。

当 Linux内核启动完毕后,就开始执行根文件 系统中的init程序,init程序会读取启动脚本文件( init.rc和init.xxxx.rc)。启动 脚本文件的格式大家 可以在网上找到很多参考资料,这里就不写了, 而且我们在原厂ROM上移植MIUI的原则是不修 改boot分区,因为有一些机型无法修改 boot分 区。

根文件系统中有一个重要的配置文件,叫defa ult.prop,该文件的内容一般为: # # ADDITIONAL_DEFAULT_PROPERTIES # ro.secure=1 ro.allow.mock.location=1 ro.debuggable=0 persist.service.adb.enable=1。 文 件中的每一行对某个属性赋值,在后续的文 章中我们还会谈到属性。这里面大家需要注意的 两个属性:ro.secure和ro.debuggable。如果 ro. secure=0允许我们运行adb root命令。在下一篇 我们会详细介绍adb,这是我们做ROM移植的利 器。通常大家说得内核ROOT指的就 是ro.secure =0。ROOT权限只是的手机上有一个名为授权管 理的程序(Superuser.apk)可以授予程序root用 户的权限。 ro.deguggable=1允许调试系统APP 。 init程序读取启动脚本,执行脚本中指定的动 作和命令,脚本中的一部分是运行system分区的 程序,下一节我们就来看看system分区的结构

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值