Android启动脚本init.rc
Init.rc的基本规则
1,init.rc是一个可配置的初始化文件,通常定制厂商可以配置额外的初始化配置,init.%PRODUCT%.rc
2,init.rc是在$GINGERBREAD/system/core/init/init.c中读取的,它基于“行”,包含一些用空格隔开的关键字(它属于特殊字符)
4,#开头的表示注释
5,init.rc包含4种状态类别:Actions/Commands/Services/Options
6,当声明一个service或者action的时候,它将隐式声明一个section,它之后跟随的command或者option都将属于这个section
7,action和service不能重名,否则忽略为error
在Android中使用启动脚本init.rc,可以在系统的初始化过程中进行一些简单的初始化操作。这个脚本被直接安装到目标系统的根文件系统中,被init可执行程序解析。init.rc是在init启动后被执行的启动脚本,其语法主要包含了以下内容:
Commands:命令
Actions: 动作
Triggers:触发条件
Services:服务
Options: 选项
Propertise:属性
Commands是一些基本的操作,
exec <path> [<argument> ]*
Fork并执行一个程序(<path>).这将被block直到程序执行完毕。最好避免执行例如内建命令以外的程序,它可能会导致init被阻塞不动。
export <name><value>
设定全局环境变量<name>的值<value>,当这个命令执行后所有的进程都可以取得。
ifup <interface>
使网络接口<interface>联机。
import <filename>
解析一个init配置文件,扩展当前配置文件。
hostname <name>
设置主机名
chmod <octal-mode><path>
改变文件访问权限
chown <owner><group> <path>
改变文件所属和组
class_start <serviceclass>
当指定类别的服务没有运行,启动该类别所有的服务。
class_stop <serviceclass>
当指定类别的服务正在运行,停止该类别所有的服务。
domainname <name>
设置域名。
insmod <path>
加载该路径<path>的模块
mkdir <path> [mode][owner] [group]
在<path>创建一个目录,可选选项:mod,owner,group.如果没有指定,目录以755权限,owner为root,group为root创建.
mount <type><device> <dir> [ <mountoption> ]*
尝试mount <device>到目录<dir>.<device>可以用mtd@name格式以命名指定一个mtd块设备。<mountoption>包含"ro","rw","remount","noatime".
setkey
暂时没有
setprop <name><value>
设置系统property <name>的值<value>.
setrlimit <resource><cur> <max>
设置resource的rlimit.
start <service>
启动一个没有运行的服务。
stop <service>
停止一个正在运行的服务。
symlink <target><path>
创建一个<path>的符号链接到<target>
sysclktz<mins_west_of_gmt>
设置系统时区(GMT为0)
trigger <event>
触发一个事件。用于调用其它action。
write <path><string> [ <string> ]*
打开<path>的文件并写入一个或多个字符串。
例如:
mkdir /sdcard 0000 system system
mkdir /system
mkdir /data 0771 system system
mkdir /cache 0770 system cache
mkdir /config 0500 root root
mkdir /sqlite_stmt_journals 01777 root root
mount tmpfs tmpfs /sqlite_stmt_journals size=4m
这些命令在init可执行程序中被解析,然后调用相关的函数来实现。
(2) Actions(动作)表示一系列的命令,通常在Triggers(触发条件)中调用,动作和触发条件的形式为:
on <trigger>
<command>
<command>
<command>
动作的使用示例如下:
on init
export PATH /sbin:/system/sbin:/system/bin:/system/xbin
mkdir /system
init表示一个触发条件,这个触发事件发生后,进行设置环境变量和建立目录的操作称为一个“动作”
Triggers
--------
Triggers(触发器)是一个字符串,可以用来匹配某种类型的事件并执行一个action。
boot
这是当init开始后执行的第一个触发器(当/init.conf被加载)
<name>=<value>
当property<name>被设为指定的值<value>时触发。
device-added-<path>
device-removed-<path>
当设备节点被添加或移除时触发。
service-exited-<name>
当指定的服务存在时触发