OpenHarmony源码解析之init进程
文章目录
- 1、简介
- 2、 详细流程
-
- 第1步 上电启动
- 第2步 创建设备结点,挂载文件目录
- 第3步 启动FD代持服务
-
- 代持原理
- 发布fdholder
- 第4步 配置文件加载
-
- 服务管理
- 服务发布
- FD代持
- 服务配置
- ServiceStart
- ServiceStop
- 第5步 参数配置空间
-
- 参数分类
- 参数来源
- trigger 参数
- 第6步 服务启动
-
- pre-init
- init
- post-init
-
- early-fs 阶段
- fs 阶段
- post-fs段
- late-fs 阶段
- post-fs-data 阶段
- boot 段
1、简介
系统上电加载内核后,按照以下流程完成系统各个服务和应用的启动:
- 内核加载init进程,一般在bootloader启动内核时通过设置内核的cmdline来指定init的位置。
- init进程启动后,会挂载tmpfs,procfs,创建基本的dev设备节点,提供最基本的根文件系统。
- init也会启动ueventd监听内核热插拔设备事件,为这些设备创建dev设备节点;包括block设备各个分区设备都是通过此事件创建。
- init进程挂载block设备各个分区(system,vendor)后,开始扫描各个系统服务的init启动脚本,并拉起各个SA服务。
- samgr是各个SA的服务注册中心,每个SA启动时,都需要向samgr注册,每个SA会分配一个ID,应用可以通过该ID访问SA。
- foundation是用户程序管理框架及基础服务;由该进程负责应用的生命周期管理。
- 由于应用都需要加载JS的运行环境,涉及大量准备工作,因此appspawn作为应用的孵化器,在接收到foundation里的应用启动请求时,可以直接孵化出应用进程。
2、 详细流程
第1步 上电启动
上电之后,一般在b