1# 启动恢复子系统<a name="ZH-CN_TOPIC_0000001124561621"></a> 2 3 4## 简介<a name="section11660541593"></a> 5 6启动恢复负责在内核启动之后到应用启动之前的系统关键进程和服务的启动过程的功能。涉及以下组件: 7 8- init组件 9 10 支持使用LiteOS-A和Linux内核的平台。 11 12 负责处理从内核加载第一个用户态进程开始,到第一个应用程序启动之间的系统服务进程启动过程。启动恢复子系统除负责加载各系统关键进程之外,还需在启动的同时设置其对应权限,并在子进程启动后对指定进程实行保活(若进程意外退出要重新启动),对于核心进程意外退出时,启动恢复子系统还要执行系统重启操作。详见“[init启动引导组件](../device-dev/subsystems/subsys-boot-init-cfg.md)”部分。 13 14 15- appspawn应用孵化器组件 16 17 提供了Lite和Standard两个版本,Lite版本支持使用LiteOS-A内核的平台;Standard版本支持使用Linux内核的平台。 18 19 负责接受应用程序框架的命令孵化应用进程,设置其对应权限,并调用应用程序框架的入口。 20 21- bootstrap启动引导组件 22 23 支持使用LiteOS-M内核的平台。 24 25 提供了各服务和功能的启动入口标识。在SAMGR启动时,会调用bootstrap标识的入口函数,并启动系统服务。 26 27- syspara系统参数组件 28 29 负责提供获取与设置操作系统相关的系统属性。 30 31 支持全量系统平台。支持的系统属性包括:默认系统属性、OEM厂商系统属性和自定义系统属性。OEM厂商部分仅提供默认值,具体值需OEM产品方按需进行调整,详见“[syspara系统属性组件](../device-dev/subsystems/subsys-boot-init-sysparam.md)”部分。 32 33 34## 目录<a name="section161941989596"></a> 35 36**表 1** 启动恢复源代码目录结构 37 38<a name="table2977131081412"></a> 39 40<table><thead align="left"><tr id="row7977610131417"><th class="cellrowborder" valign="top" width="20.880000000000003%" id="mcps1.2.4.1.1"><p id="p18792459121314"><a name="p18792459121314"></a><a name="p18792459121314"></a>名称</p> 41</th> 42<th class="cellrowborder" valign="top" width="65.2%" id="mcps1.2.4.1.2"><p id="p77921459191317"><a name="p77921459191317"></a><a name="p77921459191317"></a>描述</p> 43</th> 44<th class="cellrowborder" valign="top" width="13.919999999999998%" id="mcps1.2.4.1.3"><p id="p101617019356"><a name="p101617019356"></a><a name="p101617019356"></a>适配平台</p> 45</th> 46</tr> 47</thead> 48<tbody><tr id="row17977171010144"><td class="cellrowborder" valign="top" width="20.880000000000003%" headers="mcps1.2.4.1.1 "><p id="p2793159171311"><a name="p2793159171311"></a><a name="p2793159171311"></a>base/startup/appspawn_lite</p> 49</td> 50<td class="cellrowborder" valign="top" width="65.2%" headers="mcps1.2.4.1.2 "><p id="p879375920132"><a name="p879375920132"></a><a name="p879375920132"></a>应用孵化器组件,appspawn进程,负责通过IPC机制接收Ability Manager Service消息,然后根据消息解析结果启动应用进程并赋予其对应权限。</p> 51</td> 52<td class="cellrowborder" valign="top" width="13.919999999999998%" headers="mcps1.2.4.1.3 ">LiteOS-A内核平台 53</td> 54</tr> 55<tr id="row17977171010144"><td class="cellrowborder" valign="top" width="20.880000000000003%" headers="mcps1.2.4.1.1 "><p id="p2793159171311"><a name="p2793159171311"></a><a name="p2793159171311"></a>base/startup/appspawn_standard</p> 56</td> 57<td class="cellrowborder" valign="top" width="65.2%" headers="mcps1.2.4.1.2 "><p id="p879375920132"><a name="p879375920132"></a><a name="p879375920132"></a>应用孵化器组件,appspawn进程,负责通过IPC机制接收Ability Manager Service消息,然后根据消息解析结果启动应用进程并赋予其对应权限。</p> 58</td> 59<td class="cellrowborder" valign="top" width="13.919999999999998%" headers="mcps1.2.4.1.3 ">Linux内核平台 60</td> 61</tr> 62<tr id="row6978161091412"><td class="cellrowborder" valign="top" width="20.880000000000003%" headers="mcps1.2.4.1.1 "><p id="p37931659101311"><a name="p37931659101311"></a><a name="p37931659101311"></a>base/startup/bootstrap_lite</p> 63</td> 64<td class="cellrowborder" valign="top" width="65.2%" headers="mcps1.2.4.1.2 "><p id="p6793059171318"><a name="p6793059171318"></a><a name="p6793059171318"></a>启动引导组件,启动系统核心服务外的其他服务。</p> 65</td> 66<td class="cellrowborder" valign="top" width="13.919999999999998%" headers="mcps1.2.4.1.3 ">LiteOS-M内核平台 67</td> 68</tr> 69<tr id="row6978201031415"><td class="cellrowborder" align="left" valign="top" width="20.880000000000003%" headers="mcps1.2.4.1.1 "><p id="p117935599130"><a name="p117935599130"></a><a name="p117935599130"></a>base/startup/init</p> 70</td> 71<td class="cellrowborder" valign="top" width="65.2%" headers="mcps1.2.4.1.2 "><p id="p0793185971316"><a name="p0793185971316"></a><a name="p0793185971316"></a>init组件,init进程,内核完成初始化后加载的第一个用户态进程,启动后解析/etc/init.cfg配置文件,并根据解析结果拉起其他系统关键进程,同时分别赋予其对应权限。</p> 72</td> 73<td class="cellrowborder" valign="top" width="13.919999999999998%" headers="mcps1.2.4.1.3 ">LiteOS-A内核平台以及Linux内核平台</td> 74</tr> 75<tr id="row1897841071415"><td class="cellrowborder" valign="top" width="20.880000000000003%" headers="mcps1.2.4.1.1 "><p id="p469782418557"><a name="p469782418557"></a><a name="p469782418557"></a>base/startup/syspara_lite</p> 76</td> 77<td class="cellrowborder" valign="top" width="65.2%" headers="mcps1.2.4.1.2 "><p id="p15697102412558"><a name="p15697102412558"></a><a name="p15697102412558"></a>系统属性组件。提供获取设备信息接口,如:产品名、品牌名、品类名、厂家名等。</p> 78</td> 79<td class="cellrowborder" valign="top" width="13.919999999999998%" headers="mcps1.2.4.1.3 ">全量平台</td> 80</tr> 81</tbody> 82</table> 83 84 85``` 86base/startup/ 87├── appspawn_standard # 标准系统应用孵化器组件 88│ ├── include # 头文件目录 89│ ├── parameter # 系统参数 90│ ├── src # 服务程序源码 91│ └── test # 测试代码 92├── appspawn_lite # 小型系统应用孵化器组件 93│ └── services 94│ ├── include # 应用孵化器组件头文件目录 95│ ├── src # 应用孵化器组件源文件目录 96│ └── test # 应用孵化器组件测试用例源文件目录 97├── bootstrap_lite # 启动引导组件 98│ └── services 99│ └── source # 启动引导组件源文件目录 100├── init # init组件 101│ ├── initsync # 分阶段启动源文件目录 102│ ├── interfaces # 对外接口目录 103│ └── services 104│ ├── include # init组件头文件目录 105│ ├── src # init组件源文件目录 106│ └── test # init组件测试用例源文件目录 107└── syspara_lite # 系统参数组件 108 ├── adapter # 系统参数适配层源文件目录 109 ├── frameworks # 系统参数组件源文件目录 110 ├── hals # 系统参数组件硬件抽象层头文件目录 111 ├── interfaces # 系统参数组件对外接口目录 112 └── simulator # 模拟器适配 113``` 114 115## 相关内容<a name="section1371113476307"></a> 116 117[启动恢复子系统概述](../device-dev/subsystems/subsys-boot-overview.md) 118 119[startup\_appspawn\_lite](https://gitee.com/openharmony/startup_appspawn_lite) 120 121[startup\_appspawn](https://gitee.com/openharmony/startup_appspawn) 122 123[startup\_bootstrap\_lite](https://gitee.com/openharmony/startup_bootstrap_lite) 124 125[startup_init_lite](https://gitee.com/openharmony/startup_init_lite) 126 127[startup\_syspara\_lite](https://gitee.com/openharmony/startup_syspara_lite) 128 129