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

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>

时间: 2024-09-29 00:23:04

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

Android初始化语言(init.rc语法)

本文为 ANDROID_SOURCE/system/core/init/readme.txt 的译文. 安卓初始化语言 安卓初始化语言包括四种类型的语句,它们是: 动作 Action 命令 Command 服务 Service 选项 Option 所有语句都是面向行的,以空格分割每行包含的若干token.C风格的反斜杠可以用于token中插入空格,双引号同样可以避免空格将文本分为多个token.反斜杠是一行的最后一个字符时,将用于续行(PS:下一行也属于该句). 以#开头的行(前面有空格也是允许

Android init源代码分析(2)init.rc解析

本文描述init.rc脚本解析以及执行过程,读完本章后,读者应能 (1) 了解init.rc解析过程 (2) 定制init.rc init.rc介绍 init.rc是一个文本文件,可认为它是Android系统启动脚本.init.rc文件中定义了环境变量配置.系统进程启动,分区挂载,属性配置等诸多内容.init.rc具有特殊的语法.init源码目录下的readme.txt中详细的描述了init启动脚本的语法规则,是试图定制init.rc的开发者的必读资料. Android启动脚本包括一组文件,包括

Android启动过程——init.rc,Zygote,SystemServer

一.Android设备启动经历的三个阶段:Boot Loader:Linux Kernel:Android系统服务:每个阶段都有自己的启动画面. 1.Android中第一个被启动的进程--init,init进程的PID为0,其他的服务都由其进行创建.它是通过解析init.rc脚本来构建出系统的初始运行状态的.init进程是在系统启动启动过程中启动的. 2.init.rc语法规则: 1)Actions动作 一个Action实际上就是相应某个事件的过程.下面给出boot事件的脚本 /* \syste

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

本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 在上一篇文章中介绍了init的初始化第一阶段,也就是处理各种属性.在本文将会详细分析init最重要的一环:解析init.rc文件. init.rc 文件并不是普通的配置文件,而是由一种被称为“Android初始化语言”(Android Init Language,这里简称为AIL)的脚本写成的文件.在了解init如何解析init.rc文件之前,先了解AIL非常必要,否则机械地分析 init.c及其相关文件的源代码毫无意

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

转自:http://www.cnblogs.com/nokiaguy/p/3164799.html Android的init过程(一) 本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 在上一篇文章中介绍了init的初始化第一阶段,也就是处理各种属性.在本文将会详细分析init最重要的一环:解析init.rc文件. init.rc 文件并不是普通的配置文件,而是由一种被称为“Android初始化语言”(Android Init Language,这里简称为AIL)的脚

Android 初始化语言 --init.rc

p.p1 { margin: 0.0px 0.0px 12.9px 0.0px; line-height: 24.0px; font: 21.0px Helvetica; color: #000000; background-color: #ffffff } p.p2 { margin: 0.0px 0.0px 10.0px 0.0px; line-height: 16.0px; font: 14.0px "PingFang SC"; color: #000000; backgroun

Android init.rc 文件解析

init.rc文件解析过程 我们已经知道init.rc的结构,应该可以想到解析init.rc的过程就是识别一个个section的过程,将各个section的信息保存下来,然后在init.c的main()中去执行一个个命令. android采用双向链表(关于双向链表详解见本文第三部分)来存储section的信息,解析完成之后,会得到三个双向链表action_list.service_list.import_list来分别存储三种section的信息上. 1. init.c中调用init_parse

Android init.rc解析【转】

转自:http://www.linuxidc.com/Linux/2014-10/108438.htm 本文主要来自$Android_SOURCE/system/init/readme.txt的翻译. 1 简述 Android init.rc文件由系统第一个启动的init程序解析,此文件由语句组成,主要包含了四种类型的语句:Action,Commands,Services,Options.在init.rc文件中一条语句通常是占据一行.单词之间是通过空格符来相隔的.如果需要在单词内使用空格,那么得

Android的init过程:init.rc解析流程

这几天打算看下安卓的代码,看优秀的源代码也是一种学习过程,看源代码的过程就感觉到,安卓确实是深受linux内核的影响,不少数据结构的使用方法全然一致.花了一中午时间,研究了下init.rc解析过程,做个记录. init.rc 文件并非普通的配置文件.而是由一种被称为"Android初始化语言"(Android Init Language.这里简称为AIL)的脚本写成的文件.在了解init怎样解析init.rc文件之前,先了解AIL很必要.否则机械地分析 init.c及其相关文件的源码毫