您的位置:首页 > 移动开发 > Android开发

Android init.rc分析

2015-07-10 00:18 447 查看
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,actionservice不能重名,否则忽略为error

8,actions就是在某种条件下触发一系列的命令,通常有一个trigger,形式如:
 

on <trigger>

      <command>

      <command>

9,service结构如下:

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

   <option>

   <option>

10,optionservice的修饰词,主要包括:

     critical     
//表示如果服务在4分钟内存在多于4次,则系统重启到recovery mode

     disabled 
    //表示服务不会自动启动,需要手动调用名字启动

     setEnv <name> <value>   
  //设置启动环境变量

     socket <name> <type> <permission> [<user> [<group>]] 
//开启一个unix域的socket,名字为/dev/socket/<name> , <type>只能是dgram或者

stream,<user>和<group>默认为0

     user <username>     
//表示将用户切换为<username>,用户名已经定义好了,只能是system/root

     group <groupname>   
//表示将组切换为<groupname>

     oneshot               
//表示这个service只启动一次

     class <name>         
//指定一个要启动的类,这个类中如果有多个service,将会被同时启动。默认的class将会是“default”

     onrestart
            //在重启时执行一条命令

11,trigger主要包括:

     boot                  
//当/init.conf加载完毕时

     <name>=<value>   
          //当<name>被设置为<value>时

     device-added-<path>       
//设备<path>被添加时

     device-removed-<path>     
//设备<path>被移除时

     service-exited-<name>    
//服务<name>退出时

12,命令主要包括:

     exec <path> [ <argument> ]*   
//执行一个<path>指定的程序

     export <name> <value>   
//设置一个全局变量

     ifup <interface>  
    //使网络接口<interface>连接

     import <filename>     
//引入其他的配置文件

     hostname <name>       
//设置主机名

     chdir <directory>    
//切换工作目录

     chmod <octal-mode> <path> 
      //设置访问权限

     chown <owner> <group> <path>   
//设置用户和组

     chroot <directory> 
              //设置根目录

     class_start <serviceclass>     
//启动类中的service

     class_stop <serviceclass>       
//停止类中的service

     domainname <name>
                //设置域名

     insmod <path>                     
//安装模块

     mkdir <path> [mode] [owner] [group]  
                //创建一个目录,并可以指定权限,用户和组

     mount <type> <device> <dir> [ <mountoption> ]*     
//加载指定设备到目录下

    
<mountoption> 包括"ro", "rw", "remount", "noatime"

     setprop <name> <value>      
        //设置系统属性

     setrlimit <resource> <cur> <max>  
//设置资源访问权限

     start <service>   
                   
//开启服务

     stop <service>  
                      //停止服务

     symlink <target> <path>    
          //创建一个动态链接

     sysclktz <mins_west_of_gmt> 
        //设置系统时钟

     trigger <event>   
                    //触发事件

     write <path> <string> [ <string> ]*   
//向<path>路径的文件写入多个<string>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息