Android 启动过程介绍【转】

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

 

posted @ 2017-05-04 15:00  请给我倒杯茶  阅读(451)  评论(0编辑  收藏  举报