faqs-startup.md 8.7 KB
Newer Older
L
laiguizhong 已提交
1
# startup常见问题
D
duangavin123 已提交
2

L
laiguizhong 已提交
3
## 启动恢复常见问题
D
duangavin123 已提交
4

L
laiguizhong 已提交
5
### 设备启动过程中打印“parse failed!”错误后停止启动
D
duangavin123 已提交
6 7 8

**现象描述**

L
laiguizhong 已提交
9
设备启动过程中,打印日志“[Init] InitReadCfg, parse failed! please check file /etc/init.cfg format.”错误,启动过程停止,如下图所示:
D
duangavin123 已提交
10 11 12 13 14 15 16

  **图1** 运行报错图

  ![zh-cn_image_0000001200053087](figures/zh-cn_image_0000001200053087.png)

**可能原因**

L
laiguizhong 已提交
17
init.cfg文件内容不符合JSON语法格式。
D
duangavin123 已提交
18 19 20

**解决办法**

L
laiguizhong 已提交
21
排查init.cfg文件,格式符合JSON格式要求。
D
duangavin123 已提交
22 23


L
laiguizhong 已提交
24
### 设备开机后,反复重启。
D
duangavin123 已提交
25 26 27

**现象描述**

L
laiguizhong 已提交
28
设备启动过程中反复重启。
D
duangavin123 已提交
29 30 31

**可能原因**

L
laiguizhong 已提交
32
init服务中定义“importance”的属性(详见[参数说明](../subsystems/subsys-boot-init-service.md#参数说明)描述)。
D
duangavin123 已提交
33

L
laiguizhong 已提交
34
- 属性值为0时,表示当前服务进程退出,设备不重启。
D
duangavin123 已提交
35

L
laiguizhong 已提交
36
- 属性值为1时,表示当前服务进程退出,设备重启。
D
duangavin123 已提交
37 38 39

**解决办法**

L
laiguizhong 已提交
40
1. 通过日志确认崩溃或报错退出的服务,并解决其崩溃/报错的问题,重新烧写镜像即可。
D
duangavin123 已提交
41

L
laiguizhong 已提交
42
2. 将崩溃/报错退出的服务的“importance”属性改为0,重新烧写镜像,设备不重启。
D
duangavin123 已提交
43 44


L
laiguizhong 已提交
45
### 调用SetParameter/GetParameter返回失败
D
duangavin123 已提交
46 47 48

**现象描述**

L
laiguizhong 已提交
49 50 51 52 53
在参数正确的情况下,调用SetParameter/GetParameter返回失败。

**出现问题系统类型**

liteos-a
D
duangavin123 已提交
54 55 56

**可能原因**

L
laiguizhong 已提交
57
程序有对SetParameter/GetParameter这两个接口做权限校验,因此在各参数正确的情况下,调用SetParameter/GetParameter返回操作失败,是调用者的uid大于1000,没有调用权限。
D
duangavin123 已提交
58 59 60

**解决办法**

L
laiguizhong 已提交
61
无需处理。
X
xionglei6 已提交
62

L
laiguizhong 已提交
63
### ueventd服务启动后报获取socket失败,尝试创建
X
xionglei6 已提交
64 65 66

**现象描述**

L
laiguizhong 已提交
67
ueventd服务启动后,打印日志 “Failed to get uevent socket, try to create”日志,并且有如下图所示错误日志:
X
xionglei6 已提交
68

X
xionglei6 已提交
69
  **图2** ueventd获取socket失败
X
xionglei6 已提交
70 71 72 73 74

  ![ueventd_socket](figures/ueventd_socket.png)

**可能原因**

L
laiguizhong 已提交
75
由于ueventd服务是按需启动的服务,其设备启动后,首先从环境变量中拿到init为其创建的socket的fd。根据上述报错打印可知,是获取环境变量的值失败,这种情况可能是:
X
xionglei6 已提交
76
1. cfg文件中的ueventd服务没有配置socket,导致init并没有为其创建socket,也就没有相应的环境变量能够让其获取。
L
laiguizhong 已提交
77
2. cfg文件中的ueventd服务已经配置了socket,那可能是在另外一个cfg文件中重复配置了ueventd服务,并且其中没有配置socket。
X
xionglei6 已提交
78 79 80

**解决办法**

L
laiguizhong 已提交
81 82
1. cfg文件没有配置socket,需要在cfg文件中对ueventd服务进行socket配置,具体可参看init.cfg中ueventd[服务的socket配置](../subsystems/subsys-boot-init-service.md#参数说明)
2. 重复配置socket,需要查看所有cfg文件找到重复配置的ueventd服务,并将其删除,保留一个有效的ueventd服务配置。
X
xionglei6 已提交
83

L
laiguizhong 已提交
84
### ueventd服务轮询socket超时,并自动退出
X
xionglei6 已提交
85 86 87

**现象描述**

L
laiguizhong 已提交
88
ueventd服务启动一段时间后,出现打印日志 “poll ueventd socket timeout, ueventd exit” 并自动退出。
X
xionglei6 已提交
89 90 91

**可能原因**

L
laiguizhong 已提交
92
由于ueventd服务是按需启动的服务,其行为是当有uevent事件上报时,init监听到socket消息,会将ueventd服务拉起使其处理相应的socket消息,ueventd服务处理完现有的socket消息后,会自己再轮询对应socket句柄30秒,若30秒内又有新消息上报,则继续处理,待处理结束后再次计时轮询30秒;若超过30秒都没有新消息上报,ueventd服务将会退出,并将socket交还给init轮询,此时就会出现日志中的打印,因此这是一个正常的行为逻辑。
X
xionglei6 已提交
93 94 95

**解决办法**

X
xionglei6 已提交
96
正常行为,无需解决。
X
xionglei6 已提交
97

L
laiguizhong 已提交
98
### 配置了ondemand属性的服务无法被正确解析启动
X
xionglei6 已提交
99 100 101

**现象描述**

L
laiguizhong 已提交
102
符合JSON格式的服务配置无法被正确解析,打印日志 “Service is invalid which has both critical and ondemand attribute”,启动该服务时提示“Cannot find service”.
X
xionglei6 已提交
103 104 105

**可能原因**

L
laiguizhong 已提交
106
ondemand属性默认是按需启动的,ondemand和critical属性互斥,两者同时配置,服务不能被正确解析 。
X
xionglei6 已提交
107 108 109

**解决办法**

L
laiguizhong 已提交
110 111
1. 服务不按需启动, 不需要配置ondemand属性。
2. 服务按需启动, critical是常驻进程配置, 配置ondemand属性后,不需要再配置critical属性, 或者配置critical属性不使能。
X
xionglei6 已提交
112

L
laiguizhong 已提交
113
### 配置ondemand属性的服务不受并行启动控制
X
xionglei6 已提交
114 115 116

**现象描述**

L
laiguizhong 已提交
117
配置ondemand属性的服务并没有在并行启动阶段被拉起,start-mode设置无效
X
xionglei6 已提交
118 119 120

**可能原因**

L
laiguizhong 已提交
121
ondemand属性属于按需启动配置, 服务未能满足启动条件,因此未能成功拉起服务, 属于正常现象。
X
xionglei6 已提交
122 123 124

**解决办法**

L
laiguizhong 已提交
125
并行启动的服务不配置ondemand属性。
X
xionglei6 已提交
126

L
laiguizhong 已提交
127
### SA按需启动服务无法按需拉起
X
xionglei6 已提交
128 129 130

**现象描述**

L
laiguizhong 已提交
131
SA服务配置为按需启动的情况,在SA客户端发送请求后,samgr并没有动态拉起SA服务。
X
xionglei6 已提交
132 133 134

**可能原因**

L
laiguizhong 已提交
135
在SA服务实现按需启动初期,使用统一接口SystemAbilityManager::CheckSystemAbility(int32_t systemAbilityId),后续为了将按需启动的SA服务区分开来,新增samgr提供的动态加载接口LoadSystemAbility(int32_t systemAbilityId, const sptr& callback),原接口不适配按需启动的SA服务,故导致SA服务未能按需拉起。
X
xionglei6 已提交
136 137 138

**解决办法**

X
xionglei6 已提交
139
在按需启动的SA服务中使用samgr提供的动态加载接口LoadSystemAbility(int32_t systemAbilityId, const sptr& callback)。
L
laiguizhong 已提交
140

L
laiguizhong 已提交
141
### caps配置不合理
L
laiguizhong 已提交
142 143 144

**现象描述**

L
laiguizhong 已提交
145
caps 配置错误,会导致配置失效,报错如下:
L
laiguizhong 已提交
146 147 148 149 150 151 152 153
 ```
4.619955] [pid=1 0][Init][ERROR][init_capability.c:119]service=multimodalinput not support caps = CAP_DC_OVERRIDE caps 41
[ 4.620014] [pid=1 0][Init][ERROR][init_service_manager.c:818]GetServiceSecon secon section not found, skip
[ 4.620216] [pid=1 0][Init][ERROR][init_service_manager.c:818]GetServiceSecon secon section not found, skip
[ 4.620608] [pid=1 0][Init][ERROR][init_capability.c:119]service=mmi_uinput_service  not support caps = CAP_DC_OVERRIDE caps 41
```
**可能原因**

L
laiguizhong 已提交
154 155
1. 内核不支持。
2. cfg文件中配置错误。
L
laiguizhong 已提交
156

L
laiguizhong 已提交
157
**出现问题版本**
L
laiguizhong 已提交
158

L
laiguizhong 已提交
159
OpenHarmony-3.0-LTS
L
laiguizhong 已提交
160 161 162

**解决办法**

L
laiguizhong 已提交
163 164
1. 内核不支持, 不需要配置caps。
2. 内核支持,cfg文件中caps配置不正确,导致在init中解析的时候,解析失败,参考base/startup/init_lite/services/init/init_capability.c中,capStrCapNum数据结构的定义,正确配置caps。
L
laiguizhong 已提交
165

L
laiguizhong 已提交
166
### 打开沙盒功能
L
laiguizhong 已提交
167 168 169

**现象描述**

L
laiguizhong 已提交
170
通过hdc shell param get const.sandbox查看该parameter的值不是enable。
L
laiguizhong 已提交
171 172 173

**可能原因**

L
laiguizhong 已提交
174
无。
L
laiguizhong 已提交
175

L
laiguizhong 已提交
176
**解决方法**
L
laiguizhong 已提交
177

L
laiguizhong 已提交
178
在base/startup/init_lite/services/etc/param/ohos.para中配置const.sandbox=enable。具体参考[沙盒指导](../subsystems/subsys-boot-init-sandbox.md)
L
laiguizhong 已提交
179

L
laiguizhong 已提交
180
### 查看服务中沙盒的挂载状态
L
laiguizhong 已提交
181 182 183

**现象描述**

L
laiguizhong 已提交
184
无。
L
laiguizhong 已提交
185 186 187

**可能原因**

L
laiguizhong 已提交
188
无。
L
laiguizhong 已提交
189

L
laiguizhong 已提交
190
**解决方法**
L
laiguizhong 已提交
191

L
laiguizhong 已提交
192
设备进入hdc shell下, 执行sandbox -s service_name命令,模拟当前服务进入沙盒场景, 通过 ls 等shell命令查看当前服务沙盒目录。具体参考[沙盒命令](../subsystems/subsys-boot-init-plugin.md)
L
laiguizhong 已提交
193 194 195

## Appspawn应用孵化常见问题

L
laiguizhong 已提交
196
### 设备启动中,appspawn启动失败
L
laiguizhong 已提交
197 198 199

**现象描述**

L
laiguizhong 已提交
200
设备启动过程中,设备停止开机动画中, 进入appspawn失败。
L
laiguizhong 已提交
201 202 203 204 205 206 207 208 209 210

**可能原因**

1. 开机动画未能正常退出。
2. 拉起系统应用失败, 导致appspawn启动失败。

**解决办法**

需要通过日志确认崩溃或报错退出的服务,并解决其崩溃/报错的问题,然后重新烧写镜像即可。

L
laiguizhong 已提交
211
### 冷启动命令启动应用失败
L
laiguizhong 已提交
212 213 214 215 216 217 218 219 220 221

**现象描述**

通过冷启动命令拉起应用失败。
  ```
  aa start -d 12345 -a $name -b $package -C
  ```

**可能原因**

L
laiguizhong 已提交
222 223
1. 冷启动状态未打开。
2. 冷启动命令参数输入错误。
L
laiguizhong 已提交
224 225 226

**解决办法**

L
laiguizhong 已提交
227 228
1. 冷启动不使能, 通过param get appspawn.cold.boot命令查看状态,如果冷启动状态是false, 通过param set appspawn.cold.boot true 命令打开冷启动状态。
2. 冷启动命令参数不正确, 查看并确认冷启动参数。
L
laiguizhong 已提交
229 230 231 232 233

### 应用沙盒创建失败

**现象描述**

L
laiguizhong 已提交
234
com.ohos.systemui应用启动失败、OpenHarmony开机动画退出失败、计算器应用无法使用、字体不能正常显示等。日志报错:
L
laiguizhong 已提交
235 236 237 238 239 240
 - bind mount `<src-path>` to `<sandbox-path>` failed errno `<errorCode>`
 - private mount to `<sandbox-path>`  failed errno `<errorCode>`
 - symlink failed, `<link-name>`, errno is `<errorCode>`

**可能原因**

L
laiguizhong 已提交
241 242
1. 沙盒流程创建失败。
2. com.ohos.systemui沙盒创建失败。
L
laiguizhong 已提交
243 244 245 246
3. 沙盒应用依赖的文件配置失败。

**解决办法**

L
laiguizhong 已提交
247 248 249 250
1. 查看hilog日志中,排查相关hilog报错信息,针对报错修改对应的JSON文件。
2. 查看对应应用的pid情况,排查沙盒建立过程的代码逻辑,以及相应的JSON配置的正确性。

具体参考[应用沙盒开发步骤](../subsystems/subsys-boot-appspawn.md#开发步骤)