打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
深入浅出

一、Android init进程启动

还是从Linux的启动开始吧。Linux被bootloader加载到了内存之后,开始运行,在初始化完Linux运行环境之后,挂载ramdisk.img根文件系统映像,运行里面的init程序,这也是Linux的第一个用户程序,其pid为1。下面的文章是作者关于init进程启动的描述。

 

二、Android本地服务的启动

 init进程启动完之后,开始初始化并启动Dalvik虚拟机,在Dalvik虚拟机启动之前做了一些工作,请看下面一篇文章。

 

 

Android启动总结:

init进程在执行过程中可以分为以下几个阶段:

  启动准备:创建文件系统的基本目录、打开标准输入、标准输出、标准错误,初始化log日志功能等

  解析init.rc和init.hardware.rc文件:将rc文件逐行解析成Action或Service。解析出来的Action和Service分别存放在action_list和service_list链表里,每个Action都对应一个或多个Commands,每个依附于Action的Commands也由一个链表维护。www.2cto.com

  将early-initAction添加到action_queue队列里,等待执行

  将init Action添加到action_queue队列里,等待执行

  添加其它条件的Action到action_queue队列里

  进入死循环

o    从action_queue队列里依次取出每个Action,执行其维护的Commands链表里的命令

o    重新启动service_list中标记为SVC_RESTARTING服务

o    监听系统属性状态变化事件、子进程信号、Keychord组合按键事件

注:在代码里没有明显运行service_list里服务的代码,每个服务都有一个class属性,该属性决定了服务的分类,在init.rc文件的on boot Action最后有两个命令:

on boot

...

class_start core

class_start main

class_start命令是指运行某一类的服务,先启动了class为core的服务,然后再启动了class为main的服务。

init.rc中class为core的服务有:

Service名
 对应程序及参数
 
ueventd
 /sbin/ueventd
 
console
 /system/bin/sh
 
adbd
 /sbin/adbd
 
servicemanager
 /system/bin/servicemanager
 
vold
 /system/bin/vold
 

 

class为main的服务有:

Service名
 对应程序及参数
 
netd
 /system/bin/netd
 
debuggerd
 /system/bin/debuggerd
 
ril-daemon
 /system/bin/rild
 
surfaceflinger
 /system/bin/surfaceflinger
 
zygote
 /system/bin/app_process -Xzygote /system/bin --zygote--start-system-server
 
drm
 /system/bin/drmserver
 
media
 /system/bin/mediaserver
 
bootanim
 /system/bin/bootanimation
 
dbus
 /system/bin/dbus-daemon --system --nofork
 
bluetoothd
 /system/bin/bluetoothd -n
 
installd
 /system/bin/installd
 
flash_recovery
 /system/etc/install-recovery.sh
 
racoon
 /system/bin/racoon
 
mtpd
 /system/bin/mtpd
 
keystore
 /system/bin/keystore /data/misc/keystore
 
dumpstate
 /system/bin/dumpstate -s
 

 

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android init 启动过程分析 - gpephone
下接 android linux 基础知识总结[下]5
Android系统init.rc分析
Android 的 init.rc 文件简介
init.rc
init.rc的使用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服