- init进程是我们user space中所有进程的父进程,位置在root的/init进程
- init进程主要做的事情都在init.c的main函数中
- 我们kernel相关的log信息都在/proc/kmsg中
——PS:通过这个特性有时候我们没法连接adb logcat的时候可以直接从/proc/kmsg来打印出来内核错误信息 - init最重要的几个事:创建挂载目录(比如说/proc)、解析init.rc启动脚本、启动服务等
init.rc
这个是启动的脚本
主要有以下几个关键字:
- import
导入其他的脚本 - on
这个表示在…时候执行对应的指令
on early-init
on early-boot
on boot
on init
on early-init; 在初始化早期阶段触发;
on init; 在初始化阶段触发;
on late-init; 在初始化晚期阶段触发;
on boot/charger: 当系统启动/充电时触发,还包含其他情况,此处不一一列举;
启动顺序:on early-init -> init -> late-init -> boot
可以看到有大量的环境变量property在.rc中被设置
- service
主要与后台服务相关
oneshot:表示服务仅启动一次
disable:表示服务关闭