博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 启动过程介绍【转】
阅读量:6228 次
发布时间:2019-06-21

本文共 3441 字,大约阅读时间需要 11 分钟。

本文转载自:

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

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

2. -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]   
 
  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  

 

你可能感兴趣的文章
MAC 设置环境变量path的几种方法
查看>>
JVM垃圾收集器(2)
查看>>
SpringBoot之hello world!
查看>>
Socket拆包和解包
查看>>
工作之忠、智、勇
查看>>
电子书下载:Beginning Nokia Apps Development: Using MeeGo, Mobile QT and OpenSymbian
查看>>
mysql 5.0存储过程学习总结
查看>>
matlab练习程序(Ritter‘s最小包围圆)
查看>>
SQL存储过程教程
查看>>
最详细的临时表,表变量的对比
查看>>
C#中直接打印Report文件(rdlc)
查看>>
C 温故知新 之 指针:基本概念&变量的指针和指向变量的指针
查看>>
引用计数
查看>>
C#:XML操作类 (转)
查看>>
struts2 API chm帮助文档生成介绍说明(转)
查看>>
ORACLE数据缓冲区DB cache
查看>>
数据字典统一管理,动态下拉框
查看>>
不让自己的应用程序在桌面的图标列表里启动显示的方法
查看>>
矩阵的坐标变换(转)
查看>>
汽车常识全面介绍 - 引擎详论
查看>>