Android启动过程研究(二:AIL描述的init.rc)
来源:互联网 发布:美工自学教程 编辑:程序博客网 时间:2024/05/16 05:03
在Android系统初始化时,init进程通过读取init.rc文件来设置环境变量,运行相应程序。而init.rc是用Android Init Language(AIL,android初始化语言)编写的。AIL可以调用parse_config_file函数来解释执行。
一、AIL包含四种类型的声明:
1/ Actions (动作)
2/ Commands (命令)
3/ Services (服务)
4/ Options (选项)
二、AIL的语法规则是:
1/ AIL以行断句,以空格断字。
2/ 以#开始的行为注释。
3/ Action 和 Service 隐含声明一个新段落,所有该段落下的Command 和 Option的声明从属于该段落。
4/ Action 与 Service 的名称是唯一的,在它们之后声明的重名类(不论类型)将视为无效。
三、Actions
Actions是一系列命令的集合,通过一个以on开头的触发器决定何时执行命令集合。当on触发器被触发(事件发生)时,该action将被添加到执行队列。当action被执行时意味着其命令集合被依次执行。
下面是触发器事件列表:
下面是命令列表:
四、Options是Services的修饰,影响着init进程何时、如何运行service。下面的Options列表
五、进程的终止与再启动
init进程读取并分析init.rc文件,获取Services(服务列表),而后将依据服务列表依次启动服务子进程。
init进程启动的主要进程如下:
sh
adbd:android调试桥
servicemanager:重要,负责管理系统服务
vold:Volume Dameon,用于挂载/管理USB存储或SD卡设备
palymp3:输出启动音
在init启动的诸多进程中,除了一小部分外,大部分进程出现意外终止时,init进程都要重启它们。
特别注意:
1、源码/system/core/rootdir/下的一系列.rc文件最终会编译到ramdisk.img中,随kernel一起打包成boot.img。所以对这些启动文件的修改必须通过刷boot.img才可以生效。
2、rc文件中的service都是以独立进程运行的,属于Android native service,通过ps命令可以查到。他们的ppid都是1,即由init进程启动。
- Android启动过程研究(二:AIL描述的init.rc)
- Android的init过程(二):初始化语言(init.rc)解析
- Android的init过程(二):初始化语言(init.rc)解析
- Android的init过程(二):初始化语言(init.rc)解析
- Android的init过程(二):初始化语言(init.rc)解析
- Android的init过程(二):初始化语言(init.rc)解析
- Android的init过程(二):初始化语言(init.rc)解析
- Android的init过程(二):初始化语言(init.rc)解析
- Android的init过程(二):初始化语言(init.rc)解析
- Android的init过程(二):初始化语言(init.rc)解析
- Android的init过程(二):初始化语言(init.rc)解析
- Android的init过程(二):初始化语言(init.rc)解析
- Android的init过程(二):初始化语言(init.rc)解析
- Android的init过程(二):初始化语言(init.rc)解析
- Android的init过程详解(二)初始化语言(init.rc)解析
- Android的init过程:初始化语言(init.rc)解析
- linux的开机启动过程(rc.local、init.d、rc.x、init的作用)
- Android中init.rc文件的解析&&Android init进程启动过程分析
- linux下 UART DEBUG
- 关于pod
- js中使用正则表达式
- Caused by: java.lang.UnsupportedClassVersionError
- APK签名之keytool生成keystore和jarsigner签名apk
- Android启动过程研究(二:AIL描述的init.rc)
- Linux SD卡驱动开发(二) —— SD 卡驱动分析HOST篇
- msvc/gcc:中用#pragma指令关闭特定警告(warning)
- c++对象模型研究7:站在对象模型的顶端
- Android混淆配置
- 每周重拾两个Linux命令:cd ------>第一周
- Java容器
- FTP客户端代码解析
- Linux SD卡驱动开发(三) —— SD 卡驱动分析CORE篇