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,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>
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>
相关文章推荐
- Android中init.rc文件的解析 分享
- 关于Android的DNS
- Android init.rc
- Android init.rc 的執行順序
- android init进程 init.rc
- 【android】根据init.rc启动action和service
- Android rc文件标准文档
- android系统启动流程之init.rc详细分析笔记
- /system/core/init/readme.txt对init.rc的解释
- Android的init过程(二):初始化语言(init.rc)解析
- Android init.rc on property
- Android 修改 init.rc
- android 6 中init.rc的生成过程
- Init.rc妙用及语法说明
- Android 系统的Zygote初始化过程
- Android 系统的启动过程
- android5.1 init对rc文件解析执行顺序
- recovery的init.rc中挂载system
- 如何调试手机根目录下的init,rc等类似文件