Android源码之init.rc文件详解(SELinux详解)

Android源码之init.rc文件详解

一、引言

.rc文件是 android系统一个十分重要的文件。
其是资源文件,包括比如对话框、菜单、图标、字符串等资源信息。
使用.rc资源文件的目的是为了对程序中用到的大量的资源进行统一的管理。 本文来了解文件的规则。

二、Android中init.rc文件简单介绍

init.rc脚本是由Android中linux的第一个用户级进程init进行解析的。

init.rc 文件并不是普通的配置文件,而是由一种被称为“Android初始化语言”(Android Init Language,这里简称为AIL)的脚本写成的文件。
init.rc脚本包括了启动脚本文件,主要完成一些初级的初始化,文件系统初始化

主要是:
1)设置一些环境变量
2)创建system、sdcard、data、cache等目录
3)把一些文件系统mount到一些目录去
4)设置一些文件的用户群组、权限
5)设置一些线程参数
6)设置TCP缓存大小

该文件在ROM中是只读的,即使有了root权限,可以修改该文件也没有。因为我们在根目录看到的文件只是内存文件的镜像。也就是说,android启动后,会将init.rc文件装载到内存。而修改init.rc文件的内容实际上只是修改内存中的init.rc文件的内容。一旦重启android,init.rc文件的内容又会恢复到最初的装载。想彻底修改init.rc文件内容的唯一方式是修改Android的ROM中的内核镜像(boot.img)。

如果想要修改启动过程只需要修改init.c或者init.rc里的内容即可。

init.c与init.rc在源码中的位置分别位于如下:

1.init.c : /system/core/init
2.init.rc : /system/core/rootdir

三、文件规则

类型

主要包含了四种类型的语句:
1、Action
2、Services
Action和services显式声明了一个语句块

3、Commands
4、Options.
commands和options属于最近声明的语句块。

在第一个语句块之前 的commands和options会被忽略.

基本规则

1、在init.rc文件中一条语句通常是占据一行。
2、单词之间是通过空格符来相隔的。
3、如果需要在单词内使用空格,那么得使用转义字符""。
4、末尾的反斜杠,是换行折叠符号,应该和下一行合并成一起来处理,与C语言中的含义是一致的。
5、以#号开头的为注释。

关键字

关键字位于语句块的首部,决定了这个语句块的种类

关键字 含义
Action 动作
trigger 触发器。或者叫做触发条件
commands 命令
services 服务
1、触发器(trigger)

在"动作"(action)里面的,on后面跟着的字符串是触发器(trigger),trigger是一个用于匹配某种事件类型的字符串,它将对应的Action的执行。

触发器(trigger)有几种格式:

1、最简单的一种是一个单纯的字符串。比如“on boot”。这种简单的格式可以使用命令"trigger"来触发。
2、还有一种常见的格式是"on property : <属性>=<值>“。如果属性值在运行时设成了指定的值,则"块”(action)中的命令列表就会执行。

常见的格式:

格式 含义
on early-init
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿陌名!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值