本文转载自: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. error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools":解决方案

    我是在安装scrapy时遇到这个问题的,安装其他组件也可能会遇到.但问题解决办法都是大致相同的. 以安装scrapy为例: 在pycharm中安装twisted时出现: error: Microsof ...

  2. REBXOR

    题面 Description 给定一个含N个元素的数组A,下标从1开始.请找出下面式子的最大值. (A[l1]xorA[l2+1]xor-xorA[r1])+(A[l2]xorA[l2+1]xor-x ...

  3. 洛谷1967货车运输 即 NOIP2013 DAY1 T3

    题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多 ...

  4. InnoDB: Warning: a long semaphore wait 解决办法

    http://blog.csdn.net/wulantian/article/details/37560849

  5. 从顺序随机I/O原理来讨论MYSQL MRR NLJ BNL BKA

    http://blog.itpub.net/7728585/viewspace-2129502/

  6. javascript 函数初探 (五)--- 几种类型的函数

    即时函数: 目前我们已经讨论了匿名函数在回调时的应用.接下来,我们来看看匿名函数的另一种应用实例 --- javascript即时函数: 比如: ( function(){ alert('her'); ...

  7. 【java】google的zxing架包生成二维码和读取二维码【可带文字和logo】

    承接RC4生成不重复字符串的需求之后,因为优惠码要方便用户使用的缘故,所以思来想去,觉得还是直接生成二维码给用户直接扫比较实用,也不用用户专门记录冗长的优惠码编号. ================= ...

  8. SQLAlchemy的查询操作Query

    查询操作 查询子句使用session的.query()方法来获取Query查询对象.查询对象能够使用一些方法来对应一些查询子句,比如.order_by(),.limit(),.filter()等. 查 ...

  9. Ejb in action(六)——拦截器

    Ejb拦截器可以监听程序中的一个或全部方法.与Struts2中拦截器同名,并且他们都可以实现切面式服务.同一时候也与Spring中的AOP技术类似. 不同的是struts2的拦截器的实现原理是一层一层 ...

  10. Protostuff具体解释

    Protostuff具体解释 作者:chszs,未经博主同意不得转载. 经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 一.Protostuff介绍 Proto ...