本文转载自: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:

[plain] view plaincopy
  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 KK(4.4) 以太网和DHCP启动过程介绍

    Android KK(4.4) 以太网和DHCP启动过程介绍 1. ethernet启动流程 2. DHCP启动过程 2.1 JNI层接口 2.2 DHCP客户端(libnetutils) 2.3 D ...

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

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

  3. Android启动过程深入解析

    当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样的? 什么是Linux内核? 桌面系统linux内核与Android系统linux内核有什么区别? 什么是引导装载程序 ...

  4. Android 启动过程简析(一)之 init 进程

    问题 在进入到 Android 启动过程之前先让我们思考以下几个问题 Android 系统的启动过程是怎样的? init .zygote 进程是什么?在系统启动的过程中各自发挥了什么作用? AMS.P ...

  5. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread 流程分析 二 )

    文章目录 前言 一.ActivityManagerService.attachApplicationLocked 二.ActivityStackSupervisor.attachApplication ...

  6. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread -> Activity、主线程阶段 二 )

    文章目录 前言 一.ActivityThread 类 handleLaunchActivity -> performLaunchActivity 方法 二.Instrumentation.new ...

  7. 【Android 启动过程】Activity 启动源码分析 ( ActivityThread -> Activity、主线程阶段 一 )

    文章目录 前言 一.ClientTransactionHandler.scheduleTransaction 二.ActivityThread.H 处理 EXECUTE_TRANSACTION 消息 ...

  8. 【Android 启动过程】Activity 启动源码分析 ( AMS -> ActivityThread、AMS 线程阶段 二 )

    文章目录 前言 一.热启动与冷启动选择 二.AMS 进程中执行的相关操作 三.通过 Binder 机制转到 ActivityThread 中执行的操作 总结 前言 上一篇博客 [Android 启动过 ...

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

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

  10. symfony入门学习资料之十六:Symfony框架启动过程介绍

    symfony入门学习资料之十六:Symfony框架启动过程介绍 Symfony框架的核心本质是把Request转换成Response的一个过程.从入口文件(web_dev.php)的源码可以看个大概 ...

最新文章

  1. 云栖科技评论NO.2 | 张学友演唱会逃犯集中落网,真正的“神捕”其实是AI
  2. 微服务系列:Dubbo与SpringCloud的Ribbon、Hystrix、Feign的优劣势比较
  3. Ragel学习笔记(一)
  4. vue项目引用美图秀秀图片编辑器
  5. VISTA、Win7激活administrator用户
  6. PDF - 使用 Adobe Acrobat 压缩 PDF 大小
  7. 胖大海和罗汉果可以同泡吗
  8. python中breakpoint_Python3.7 特色(2)-breakpoint 內建除錯
  9. 一次成功的云存储接管实战
  10. PHP充值怎么打折,教大家如何用PHP语言写一个简单的商品打折小程序!
  11. 广袤的县镇乡村也是鸿蒙OS的市场
  12. 【Ubuntu18.04离线安装网卡驱动】自带r8169安装r8125有线网卡驱动
  13. php超大数组插入数据库处理
  14. 利用orm思想实现java读取Excel文件
  15. 广东计算机一级报名截止时间,广东计算机一级考试报名时间
  16. 微信小程序 - 从入门到入土
  17. 顶尖的个人作品集网站设计欣赏
  18. 爬虫学习:XPath的使用
  19. 网页布局之---固定布局、流动布局、弹性布局
  20. 猜动物游戏——机器学习和二叉树的应用

热门文章

  1. Unit Testing with JUnit - Tutorial
  2. 电脑课堂:U盘“无法停止通用卷设备时”的解决方法
  3. 使用Xdebug调试和优化PHP程序[3]
  4. 卢卡奇总体性原则_重识青年卢卡奇的“历史”概念问题
  5. layui 自定义request_layuiAdmin pro v1.x 【单页版】开发者文档
  6. Linux设置命令别名alias
  7. 理解Linux高性能网络架构的那些事
  8. Linux进程的管理与调度(一)--- Linux进程描述符task_struct结构体详解
  9. tcpdump截wireshark可以打开的包
  10. Android.mk 语法详解