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>  
   设置启动环境变量

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>

init.rc语法介绍的更多相关文章

  1. android init.rc语法

    转自:http://www.cnblogs.com/nokiaguy/p/3164799.html init.rc由如下4部分组成. 动作(Actions) 命令(Commands) 3. 服务(Se ...

  2. Android系统init进程启动及init.rc全解析

    转:https://blog.csdn.net/zhonglunshun/article/details/78615980 服务启动机制system/core/init/init.c文件main函数中 ...

  3. Android init.rc文件格式解析

    /***************************************************************************** * Android init.rc文件格式 ...

  4. Android的init过程(二):初始化语言(init.rc)解析

    Android的init过程(一) 本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 在上一篇文章中介绍了init的初始化第一阶段,也就是处理各种属性.在本文将会详细分析i ...

  5. Android的init过程(二):初始化语言(init.rc)解析【转】

    转自:http://www.cnblogs.com/nokiaguy/p/3164799.html Android的init过程(一) 本文使用的软件版本 Android:4.2.2 Linux内核: ...

  6. i.mx6 Android5.1.1 初始化流程之init.rc解析(未完成)

    接上一篇:i.mx6 Android5.1.1 初始化流程之init进程 参考资料:http://blog.csdn.net/mr_raptor/article/category/799879 这个博 ...

  7. Swift翻译之-Swift语法入门 Swift语法介绍

    目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...

  8. Android init.rc解析【转】

    转自:http://www.linuxidc.com/Linux/2014-10/108438.htm 本文主要来自$Android_SOURCE/system/init/readme.txt的翻译. ...

  9. init进程 && 解析Android启动脚本init.rc && 修改它使不启动android && init.rc中启动一个sh文件

    Android启动后,系统执行的第一个进程是一个名称为init 的可执行程序.提供了以下的功能:设备管理.解析启动脚本.执行基本的功能.启动各种服务.代码的路径:system/core/init,编译 ...

随机推荐

  1. 自定义 IP 地址

    可以在安装的时候,点击网络配置 1.修改网卡配置 编辑:vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 #描述网卡对应的设备别名,例如 ...

  2. caffe卷积输入通道如何到输出通道

    今天一个同学问 卷积过程好像是对 一个通道的图像进行卷积, 比如10个卷积核,得到10个feature map, 那么输入图像为RGB三个通道呢,输出就为 30个feature map 吗, 答案肯定 ...

  3. 旋转图css3

    <!doctype html><html> <head>  <meta charset="UTF-8">  <title> ...

  4. js 判断提交表单

    <SCRIPT language=javascript> function check_book() { if(document.form1.Username.value=="& ...

  5. keyboardWillChangeFrameNotification 引发的思考 是的 思考了很久终于出结果

    func keyboardWillChangeFrameNotification(note: NSNotification) { // TODO 添加键盘弹出的事件 let userinfo = no ...

  6. linux内核移植到S5pv210

    make s5pv210_defconfig 1.System Type  ---> (0) S3C UART to use for low-level messages 2.Kernel ha ...

  7. java int和Integer的区别

    今天偶然和同学讨论到int和Integer的区别是,发现自己对这个问题了解的并不是很清楚,而且有些概念还是错的,所以在这对int和Integer的区别做一个总结. int与integer的区别从大的方 ...

  8. AsyncTask异步加载和HttpURLConnection网络请求数据

    //获得网络数据    private void huodeshuju() { //这里是使用线程,已注释掉        /*new Thread(){            public void ...

  9. Python实现删除目录下相同文件

    让我们来分析一下这个问题:首先,文件个数非常多,手工查找是不现实的,再说,单凭我们肉眼,在几千张图片或文件里面找到完全相同的难度也是很大的.所以要用程序实现.那么用程序怎么实现呢?根据什么判断两个文件 ...

  10. Android开机启动Activity或者Service方法(转载)

    这段时间在做Android的基础开发,现在有一需求是开机启动,按照网上某些博文教程做了下,始终不成功,一开机总是提示所启动的应用程序意外终止,于是参考了Android SDK doc,终于解决问题,下 ...