详解 Android 是如何启动的

作者: _qisen | 来源:发表于2016-06-16 22:45 被阅读467次

    本文是 Android 系统学习系列文章中的第一章节,从大体上说明 Android 系统是如何启动的?从开机到程序启动,发生了那些步骤,这些步骤意味着什么?欢迎进入今天的「走进科学」,逃 :)。对此系列感兴趣的同学,可以收藏这个链接 Android 系统学习,也可以使用 RSS 进行订阅。


    系统分区划分

    Android 达人都经历过刷机的体验,如果通过 fastboot 来进行刷机的话,会在刷机界面看到如下的几个步骤。这些步骤是做什么用的?就是通过 fastboot 协议更新和烧录到 Android 手机对应的分区上。对 fastboot 感兴趣的同学,可以点击这个 链接 进行查看。

    fastboot flash boot boot.img
    fastboot flash system system.img
    fastboot flash userdata userdata.img
    fastboot flash cache cache.img
    fastboot flash recovery recovery.img
    fastboot reboot
    

    从 fastboot 的烧录过程中可以看出 Android 系统的大致分区,这里我也通过 adb shell 中的 df 命令查看了小米手机中的系统分区,如下图所示。

    小米系统分区

    一般而言,虽然各个手机厂商在在系统上的实现不一致,Android 系统分为下面表格中的几个部分。

    Android 系统分区
    分区 功能
    boot 系统引导分区,包含着android 内核,系统没有这个无法启动。这一部分的镜像在 boot unlocked 时,也能够被擦除,但在这个过程中,不能被打断,关机等等,否者会导致系统无法启动。
    system Android 整个系统所在地,也包含预装的应用(这是预装的APP,手机厂商盈利的一种渠道),
    recovery 备份分区,启动时可进入 recovery ,然后在这个模式下进行相应的 recovery 操作。
    data 应用程序相关的数据,例如你安装的豌豆荚,数据就放在 /data/data/com.wandoujia.phoenix2 下面,当进行恢复出厂设置时,这部分数据会被擦除掉。
    cache 用于存放缓存相关的数据。
    misc 存放一些硬件配置、USB 配置等等信息,如果被擦除可能会导致某些系统设备无法正常工作。

    Android 系统启动

    如我们所知,Android 系统是基于 Linux 系统开发而成,在其中针对移动设备的特性进行了相应的调整,所以 Android 系统大体上可以分为 Linux 内核部分和 应用系统部分。在 Android 系统启动的时候,也会先启动 Linux 内核,然后再启动应用系统。整个启动步骤分为 6 个部分,在下面进行详细的描述。

    Android 桌面

    由于之前对 System Server 进行过详细的讲解,这里就不在赘述,感兴趣的同学可以查看这篇文章 Android Binder 全解析(2) -- 设计详解

    总结

    上述章节把 Android 启动中发生的事情表述完毕,现在没有什么比下面这张图更能总结观点了。


    Android 启动

    参考文献


    文档信息

    相关文章

      网友评论

      • 黄光华:这篇文章说“绝大多数 App 都是通过 fork Zygote 进程来完成了,只有一个例外,那就是 System Sever”,
        而在“Android 应用进程启动流程”里的图:Fork Zygote 交互图, 显示zygote fork 出了systemServer。。。
      • _qisen:啊啊啊:scream:

      本文标题:详解 Android 是如何启动的

      本文链接:https://www.haomeiwen.com/subject/cmzmdttx.html