Android init进程之解析及运行init.rc文件`

一、init.rc是什么

init.rc是Android启动后,用来设置系统环境以及需要执行的进程的配置文件。使用的语音叫android初始化语言。

与init.rc相应的,还有init.{hardware}.rc,它的作用与init.rc类似。init.rc所在目录为/system/core/rootdir。

二、Android初始化语言的语法介绍

android初始化语言包括四种类型的语句,包括:行为Action、命令Command、服务Service、选项Option。

所有语句都是按行分解的,并且以空格分隔每行所包含的若干token。

android初始化语言有如下规则:

①反斜杠+空格来表示token中的空格;

②双引号中的空格不会被分割;

③一行最后一个字符为反斜杠表示续行;

④#开头表示注释;

⑤action或service 隐式定义了一个段(section),所有Command或Option属于最近定义的section。在第一个section之前的Command或Option将被忽略;

⑥Action和Service有唯一的名字。如果有第二个Action或Service定义为和一个已存在的(Action或Service)同名,它将被作为错误忽略掉。

ACTION:Action是有名字的一系列命令,Actiong=触发器(tirgger)+commands。tirgger(触发器)用于决定该Action应在何时执行。当一个事件发生并匹配了一个Action的trigger,相应的Action将被添加到即将执行(to-be-executed)队列的尾部。每个action在队列中顺序排列,每个action中的command将会顺序执行。init在执行command的过程中还有执行其他活动(设备节点的创建/销毁,属性设置,进程重启)。Action格式如下:

on <tirgger>
    <command>
    <command>
    <command>
    ...
SERVICE:服务是init进程启动的程序,当服务退出时init进程会视情况重启服务。service格式如下:

service  <name>  <pathname>  [<argument>]*
    <option>
    <option>
    …

OPTION:选项是服务的约束条件,定义了init进程何时以及如何启动服务。比如onshot,退出后不再重启。

TIRGGER:规定了commands什么条件下被触发,比如service-exited-表示指定的service退出时被触发。

COMMAND:执行的动作,比如export 设置环境变量。

关于android初始化语言的详细资料参考点击打开链接
各种daemons、servicemanagermediaserver、zygote这些进程都是通过解析init.rc启动的。

另外,console_init函数中的load_565rle_image函数中打印“android的logo。如需修改开机的这个界面,则要将/device/fsl/imx5x/initlogo.rle替换掉,initlogo.rle的拷贝过程定义在imx5x.mk中。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值