Android启动之配置文件分析
本篇主要包括如下内容:
init.rc语法介绍
补充说明
一、init.rc语法介绍
1,init.rc是一个可配置的初始化文件,通常定制厂商可以配置额外的初始化配置,init.%PRODUCT%.rc
2,init.rc是在$GINGERBREAD/system/core/init/init.c中读取的,它基于“行”,包含一些用空格隔开的关键字(它属于特殊字符)
3,如果关键字中有空格,处理方法类似于C语言,使用/表示转义,使用“”防止关键字被断开,另外注意/在末尾表示换行
4,#开头的表示注释
5,init.rc包含4种状态类别:Actions/Commands/Services/Options
6,当声明一个service或者action的时候,它将隐式声明一个section,它之后跟随的command或者option都将属于这个section
7,action和service不能重名,否则忽略为error
8,actions就是在某种条件下触发一系列的命令,通常有一个trigger,形式如:
on <trigger>
<command>
<command>
9,service结构如下:
service <name> <pathname> [ <argument> ]*
<option>
<option>
10,option是service的修饰词,主要包括:
critical :表示如果服务在4分钟内退出超过4次,则系统重启到recovery mode
disabled :表示服务不会自动启动,需要显示调用服务名来启动
setEnv <name> <value> :设置环境变量<name>为某个值<value>
socket <name> <type> <permission> [<user> [<group>]] :开启一个unix域的socket,名字为/dev/socket/<name> , fd值传给启动它的进程。<type>只能是dgram,stream 或 seqpacket,而<user>和<group>默认为0
user <username> :表示将用户切换为<username>, 默认情况下用户都是root。
group <groupname> :表示将组切换为<groupname>
oneshot :表示这个service只启动一次
class <name> :指定一个要启动的类,这个类中如果有多个service,将会被同时启动。默认的class将会是“default”
onrestart :当此服务重启时,执行某些命令