本文转载自:http://blog.csdn.net/yangwen123/article/details/8023654

一般开机过程大致可以分为三个大阶段:

1. OS级别,由bootloader载入Linux kernel后,kernel开始初始化, 并载入built-in的驱动程序。Kernel完成开机后,载入init process,切换至user-space后,结束kernel 的循序过程(sequence),进入排程模式(process scheduling)。

2. Android-level,由init process 开始,读取init.rc,Native服务启动,并启动重要的外部程序,例如:servicemanager、Zygote以及System Server。

3. Zygote-Mode,Zygote启动完System Server后,进入Zygote Mode,在Socket 等候命令。随后,使用者将看到一个桌面环境(Home Screen)。桌面环境由一个名为Launcher的应用程序负责提供。

注:Zygote主要负责启动System server和执行android程序(APK)。成功启动System server后会使用socket方式监听(monitorandroid apps/prcesses)

查看init.rc文件显示,系统首先启动servicemanager,然后启动zygote:

  1. service ueventd /sbin/ueventd
  2. class core
  3. critical
  4. service console /system/bin/sh
  5. class core
  6. console
  7. disabled
  8. user shell
  9. group log
  10. service adbd /sbin/adbd
  11. class core
  12. disabled
  13. service servicemanager /system/bin/servicemanager
  14. class core
  15. user system
  16. group system
  17. critical
  18. onrestart restart zygote
  19. onrestart restart media
  20. onrestart restart surfaceflinger
  21. onrestart restart drm
  22. service vold /system/bin/vold
  23. class core
  24. socket vold stream 0660 root mount
  25. ioprio be 2
  26. service netd /system/bin/netd
  27. class main
  28. socket netd stream 0660 root system
  29. socket dnsproxyd stream 0660 root inet
  30. socket mdns stream 0660 root system
  31. service debuggerd /system/bin/debuggerd
  32. class main
  33. service surfaceflinger /system/bin/surfaceflinger
  34. class main
  35. user system
  36. group graphics
  37. onrestart restart zygote
  38. service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
  39. class main
  40. socket zygote stream 660 root system
  41. onrestart write /sys/android_power/request_state wake
  42. onrestart write /sys/power/state on
  43. onrestart restart media
  44. onrestart restart netd
  45. service drm /system/bin/drmserver
  46. class main
  47. user drm
  48. group drm system inet drmrpc sdcard_r
  49. service media /system/bin/mediaserver
  50. class main
  51. user media
  52. group audio camera inet net_bt net_bt_admin net_bw_acct drmrpc system
  53. ioprio rt 4
  54. service bootanim /system/bin/bootanimation
  55. class main
  56. user graphics
  57. group graphics
  58. disabled
  59. oneshot
  60. service dbus /system/bin/dbus-daemon --system --nofork
  61. class main
  62. socket dbus stream 660 bluetooth bluetooth
  63. user bluetooth
  64. group bluetooth net_bt_admin
  65. service bluetoothd /system/bin/bluetoothd -n
  66. class main
  67. socket bluetooth stream 660 bluetooth bluetooth
  68. socket dbus_bluetooth stream 660 bluetooth bluetooth
  69. # init.rc does not yet support applying capabilities, so run as root and
  70. # let bluetoothd drop uid to bluetooth with the right linux capabilities
  71. group bluetooth net_bt_admin misc
  72. disabled
  73. service installd /system/bin/installd
  74. class main
  75. socket installd stream 600 system system
  76. service flash_recovery /system/etc/install-recovery.sh
  77. class main
  78. oneshot
  79. service racoon /system/bin/racoon
  80. class main
  81. socket racoon stream 600 system system
  82. # IKE uses UDP port 500. Racoon will setuid to vpn after binding the port.
  83. group vpn net_admin inet
  84. disabled
  85. oneshot
  86. service mtpd /system/bin/mtpd
  87. class main
  88. socket mtpd stream 600 system system
  89. user vpn
  90. group vpn net_admin inet net_raw
  91. disabled
  92. oneshot
  93. service keystore /system/bin/keystore /data/misc/keystore
  94. class main
  95. user keystore
  96. group keystore drmrpc
  97. socket keystore stream 666
  98. service dumpstate /system/bin/dumpstate -s
  99. class main
  100. socket dumpstate stream 0660 shell log
  101. disabled
  102. oneshot
  103. service sshd /system/bin/start-ssh
  104. class main
  105. disabled
  106. service mdnsd /system/bin/mdnsd
  107. class main
  108. user mdnsr
  109. group inet net_raw
  110. socket mdnsd stream 0660 mdnsr inet
  111. disabled
  112. oneshot
  113. service vtserver /system/bin/vtserver
  114. user root
  115. disabled
  116. oneshot

Android 启动过程介绍【转】的更多相关文章

  1. Android启动过程介绍

    开机过程大致可以分为以下三个阶段 OS级别 由bootloader载入linux kernel后,kernel开始初始化, 并载入built-in的驱动程序.Kernel完成开机后,载入init pr ...

  2. Android(java)学习笔记162:Android启动过程(转载)

    转载路径为: http://blog.jobbole.com/67931/ 1. 关于Android启动过程的问题: 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样 ...

  3. Android启动过程深入解析

    本文由 伯乐在线 - 云海之巅 翻译.未经许可,禁止转载!英文出处:kpbird.欢迎加入翻译小组. 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样的? 什么是Li ...

  4. Android启动过程深入解析【转】

    转自:http://www.open-open.com/lib/view/open1403250347934.html 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么 ...

  5. Android(java)学习笔记105:Android启动过程(转载)

    转载路径为: http://blog.jobbole.com/67931/ 1. 关于Android启动过程的问题: 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样 ...

  6. Android 核心分析 之八Android 启动过程详解

    Android 启动过程详解 Android从Linux系统启动有4个步骤: (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) ...

  7. Android启动过程以及各个镜像的关系

    Android启动过程 Android在启动的时候,会由UBOOT传入一个init参数,这个init参数指定了开机的时候第一个运行的程序,默认就是init程序,这个程序在ramdisk.img中.可以 ...

  8. Android4.4 以太网和DHCP启动过程介绍

    转自:http://blog.csdn.net/wlwl0071986/article/details/51451843 Android4.4已经加入了以太网的支持.现在对以太网的初始化流程.网络策略 ...

  9. Android 启动过程的底层实现

    转载请标明出处:  http://blog.csdn.net/yujun411522/article/details/46367787 本文出自:[yujun411522的博客] 3.1 androi ...

随机推荐

  1. [翻译] NumSharp的数组切片功能 [:]

    原文地址:https://medium.com/scisharp/slicing-in-numsharp-e56c46826630 翻译初稿(英文水平有限,请多包涵): 由于Numsharp新推出了数 ...

  2. 数据结构------------------二叉查找树(BST)的java实现

    数据结构------------------二叉查找树(BST)的java实现 二叉查找树(BST)是一种能够将链表插入的灵活性和有序数组查找的高效性相结合的一种数据结构.它的定义如下: 二叉查找树是 ...

  3. 【mac IntelliJ Idea】mac上 idea快速重写父类方法 快捷键

    windows上快捷键: Ctrl+O Mac上快捷键: command+O 在要重写父类方法的位置 ,按下快捷键,然后选择要重写的方法即可.

  4. 前端模板inspinia

    前端模板,可以下个免费的,可以花点小钱买.或者github搜索一个 https://chuibility.github.io/inspinia/ http://cn.inspinia.cn/layou ...

  5. [反汇编练习] 160个CrackMe之029

    [反汇编练习] 160个CrackMe之029. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  6. Hive UDF开发-简介

    Hive进行UDF开发十分简单,此处所说UDF为Temporary的function,所以需要hive版本在0.4.0以上才可以. Hive的UDF开发只需要重构UDF类的evaluate函数即可.例 ...

  7. Android记录24-WebView实现白天/夜间阅读模式

    前言 本篇博客给大家分享一个WebView的使用案例.实现Android调用JavaScript代码来控制白天/夜间模式. 关于WebView怎样使用,官网有非常好的说明,Building Web A ...

  8. iOS_7_scrollView大图缩放

    终于效果图: BeyondViewController.h // // BeyondViewController.h // 7_scrollView大图展示 // // Created by beyo ...

  9. iframe截取站点的部分内容

    <div style="width:630px;height:350px;overflow:hidden;border:0px">                  & ...

  10. Linux kernel Wikipedia

    http://en.wikipedia.org/wiki/Linux_kernel Development model The current development model of the Lin ...