android init 进程,(连载)Android 8.0 : 系统启动流程之 init 进程 (三)

(连载)Android 8.0 : 系统启动流程之 init 进程 (三)

bootchart [start|stop]

启动或终止 bootcharting. 这个出现在 init.rc 文件中, 但是只有在 / data/bootchart/enabled 文件存在的时候才有效, 否则不能工作

chmod

修改文件读写权限

chown

修改文件所有者或所属用户组

class_start

启动所有以 serviceclass 命名的未启动的 service(service 有一个 name, 也有个 class,

这里的 serviceclass 就是 class,class_start 和后面的 start 是两种启动方式, class_start 是 class 形式启动, start 是 name 形式启动)

class_stop

终止所有以 serviceclass 命名的正在运行的 service

class_reset

终止所有以 serviceclass 命名的正在运行的 service, 但是不禁用它们. 它们可以稍后被 class_start 重启

class_restart

重启所有以 serviceclass 命名的 service

copy

复制一个文件, 与 write 相似, 比较适合二进制或比较大的文件.

对于 src, 从链接文件 world-writable 或 group-writable 复制是不允许的.

对于 dst, 如果目标文件不存在, 则默认权限是 0600, 如果存在就覆盖掉

domainname

设置域名

enable

将一个禁用的 service 设置为可用.

如果这个 service 在运行, 那么就会重启.

一般用在 bootloader 时设置属性, 然后启动一个 service, 比如onproperty:ro.boot.myfancyhardware=1

enable my_fancy_service_for_my_fancy_hardware

exec[[[\*]]]--[\*]

新建子进程并运行一个带指定参数的命令. 这个命令指定了 seclabel(安全策略),user(所有者),group(用户组).

直到这个命令运行完才可以运行其他命令, seclabel 可以设置为 - 表示用默认值, argument 表示属性值.

直到子进程新建完毕, init 进程才继续执行.

exec_start

启动一个 service, 只有当执行结果返回, init 进程才能继续执行. 这个跟 exec 相似, 只是将一堆参数的设置改在在 service 中定义

export

设置环境变量 name-value. 这个环境变量将被所有已经启动的 service 继承

hostname

设置主机名

ifup

开启指定的网络接口

insmod [-f] []

安装 path 下的模块, 指定参数 options.

-f 表示强制安装, 即便是当前 Linux 内核版本与之不匹配

load_all_props

加载 / system, /vendor 等目录下的属性, 这个用在 init.rc 中

load_persist_props

加载 / data 下的持久化属性. 这个用在 init.rc 中

loglevel

设置日志输出等级, level 表示等级

mkdir [mode] [owner] [group]

创建一个目录, path 是路径, mode 是读写权限, 默认值是 755,owner 是所有者, 默认值 root,group 是用户组, 默认值是 root.

如果该目录已存在, 则覆盖他们的 mode,owner 等设置

mount_all [ ]\* [--]

当手动触发 "early" 和 "late" 时, 调用 fs_mgr_mount_all 函数, 指定 fstab 配置文件, 并导入指定目录下的. rc 文件

详情可以查看 init.rc 文件中的有关定义

mount

在 dir 目录下挂载一个名叫 device 的设备

_flag 包括 "ro", "rw", "remount", "noatime", ...

options 包括 "barrier=1", "noauto_da_alloc", "discard", ... 用逗号分开, 比如 barrier=1,noauto_da_alloc

restart

终止后重启一个 service, 如果这个 service 刚被重启就什么都不做, 如果没有在运行, 就启动

restorecon [ \* ]

恢复指定目录下文件的安全上下文. 第二个 path 是安全策略文件. 指定目录不需要必须存在, 因为它只需要在 init 中正确标记

restorecon_recursive [ \* ]

递归地恢复指定目录下的安全上下文, 第二个 path 是安全策略文件位置

rm

调用 unlink(2) 删除指定文件. 最好用 exec -- rm ... 代替, 因为这样可以确保系统分区已经挂载好

rmdir

调用 rmdir(2) 删除指定目录

setprop

设置属性 name-value

setrlimit

指定一个进程的资源限制

start

启动一个未运行的 service

stop

终止一个正在运行的 service

swapon_all

调用 fs_mgr_swapon_all, 指定 fstab 配置文件.

symlink

在 path 下创建一个指向 target 的链接

sysclktz

重置系统基准时间 (如果是格林尼治标准时间则设置为 0)

trigger

触发事件 event, 由一个 action 触发到另一个 action 队列

umount

卸载指定 path 的文件系统

verity_load_state

内部实现是加载 dm-verity 的状态

verity_update_state

内部实现是设置 dm-verity 的状态, 并且设置 partition.mount-point.verified 的属性. 用于 adb 重新挂载,

因为 fs_mgr 不能直接设置它

wait [ ]

查看指定路径是否存在. 如果发现则返回, 可以设置超时时间, 默认值是 5 秒

wait_for_prop

等待 name 属性的值被设置为 value, 如果 name 的值一旦被设置为 value, 马上继续

write

打开 path 下的文件, 并用 write(2) 写入 content 内容. 如果文件不存在就会被创建, 如果存在就会被覆盖掉

来源: http://www.jianshu.com/p/769c58285c22

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值