初始化脚本
主脚本为/init.rc,在源代码中位于system/core/rootdir/init.rc。主脚本中会在开头import其他一些脚本:
import /init.usb.rc import /init.${ro.hardware}.rc import /init.trace.rc " |
他们在源代码中分别位于:
system/core/rootdir/init.usb.rc
device/${ro.hardware}/${ro.product.name}/init.${ro.hardware}.rc
system/core/rootdir/init.trace.rc
其中init.usb.rc与adbd的启动有很大关系。
l 触发(on)
n on <action>
n on property:<prop>=<value>
n on property:<prop>=*
l 命令
n symlink、mkdir、mount、write、chown、copy、rm、rmdir
n setprop
n class_start、class_stop、class_reset
n start、stop、restart
l 服务( service)
属性 | 参数 | 处理方式 | 说明 |
class | name | class_(start|stop|reset) | 所属的服务类 |
disabled | SVC_DISABLED, SVC_RC_DISABLED | 禁用 | |
console | SVC_CONSOLE open_console | 需要控制台 /dev/console | |
user | name | setuid | 有效用户 |
group | name name … | setgid/setgroups | 有效用户组 |
setenv | name value | execve | 环境变量,多个 |
socket | name type perm uid gid | create_socket publish_socket | UNIX套接字,多个 发布到环境变量中 |
critical | SVC_CRITICAL | 关键服务 | |
oneshot | SVC_ONESHOT | 不重启 | |
onrestart | command | wait_for_one_process | 重启时执行的命令,多个 |
seclabel | label | setexeccon | 安全增强 |
ioprio | <rt|be|idle> 0-7 | android_set_ioprio ioprio_set | IO优先级 |