android init 进程分析 (3 初始化脚本)

初始化脚本

主脚本为/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优先级

 

你可能感兴趣的:(android init 进程分析 (3 初始化脚本))