前言全局说明
Android rc开机启动文件说明
一、说明
1.1 环境:
Android
二、rc 基础语法
2.1 注释
注释行以 “#” 号开头(允许以空格开头)。
2.2 多行
行末的反斜杠用于折行
2.2 带空格行
双引号也可用于防止字符串被空格分割成多个记号。
三、语句块语法
语句块可以理解为函数,多个文件可以用一个rc文件,放到不同语句块里。
语句块又分为四类:Actions(行为)、Commands(命令)、Services(服务)、Options(选项)
3.1 Actions(行为)
语法:
on <trigger> [&& <trigger>]*<command1><command2><command3>...
Trigger(触发器):trigger 又被细分为事件触发器(event trigger)和属性触发器(property trigger)
类型 | 说明 | 备注 |
---|---|---|
boot | init.rc 被装载后触发 | |
device-added-<path> | 指定设备被添加时触发 | |
device-removed-<path> | 指定设备被移除时触发 | |
service-exited-<name> | 在特定服务(service)退出时触发 | |
early-init | 初始化之前触发 | |
late-init | 初始化之后触发 | |
init | 初始化时触发(在 /init.conf(启动配置文件)被装载之后) | |
property | 当属性值满足条件时触发 | |
boot/charger | 当系统启动/充电时触发 | |
3.2 Commands(命令)
语法:
3.3Services(服务)
语法:
service <name> <pathname> [ <argument> ]* <option> <option><option><option><option>...
以 service 开头,由 init 进程启动,一般运行与另外一个 init 的子程序,所以启动 service 前需要判断对应的可执行文件是否存在。
name:服务名;
pathname:当前服务设置的选项;
option:当抢服务设置的选项;
argument:可选参数;
3.4 option(选项)
options是Service的修订项。它们决定一个服务何时以及如何运行.
选项 | 说明 | 备注 |
---|---|---|
critical | 据设备相关的关键服务,如果在4分钟内,此服务重复启动了4次,那么设备将会重启进入还原模式。 | |
disabled | 服务不会自动运行,必须显式地通过服务器来启动。 | |
setenv | 设置环境变量 | |
socket [ [ ] ] | 在/dev/socket/下创建一个unix domain的socket,并传递创建的文件描述符fd给服务进程.其中type必须为dgram或stream,seqpacket. | 用户名和组名默认为0 |
user | 指定服务运行的用户。在执行此服务之前先切换用户名。当前默认为root. | |
group [ ]* | 指定服务运行的用户组。类似于user,切换组名 | |
oneshot | 当此服务退出时不会自动重启. | |
class | 给服务指定一个类属,这样方便操作多个服务同时启动或停止.默认情况下为default. | |
onrestart | 指定服务为一次性服务,服务启动后会立即停止。当服务重启时执行一条指令, | |
seclabel | 指定服务的安全标签,用于 SELinux 安全策略。 | seclabel u:r🐚s0 |
mkdir | 创建一个目录。 | mkdir /data/my_directory 0770 root root |
chown | 更改文件或目录的所有者。 | chown root:shell /data/my_file |
chomod | 更改文件或目录的权限。 | chmod 0755 /system/bin/my_executable |
setprop | 设置系统属性。 | setprop ro.my.custom.property "value" |
getprop | 获取系统属性的值。 | getprop ro.product.model |
exec | 执行指定的命令。 | exec /system/bin/my_script.sh |
on property | 定义在特定属性变化时执行的操作。 | on property:sys.usb.state=connected start usb_service |
restart | 重启指定的服务 | |
stop | 停止指定的服务。 | |
setsebool | 设置 SELinux 布尔值。 | setsebool my_bool_value 1 |
import | 导入其他 .rc 文件中的定义。 | import /path/to/another.rc |
service | 定义一个服务的属性。 | |
boot | 在系统启动时执行的操作。 | on boot start my_service |
四、
4.1
文件名:
4.2
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。
参考、来源:
https://blog.51cto.com/u_16213717/8602460
https://blog.csdn.net/jx232515/article/details/127622326
Android中 .rc文件常用的操作说明 https://www.jianshu.com/p/6301cdaf49ae
https://www.jianshu.com/p/810d41959b62
https://blog.51cto.com/u_16213682/7106903
https://blog.51cto.com/u_16213717/8602460 (大量示例讲解)