OpenHarmony恢复启动子系统init进程之参数空间配置

本文介绍了一种基于Trie树的数据结构来高效存储和管理系统参数的方法。详细解释了参数的分类,包括常量参数、常驻参数和临时参数,并介绍了参数来源如内核参数、os常量值等。同时,还探讨了自主访问控制(DAC)机制下参数的权限管理及触发参数的概念。

参数由key和值构成,key 的格式由多重前缀构成。

const.postinstall.fstab.prefix=/system
const.secure=1
security.perf_harden=1
const.allow.mock.location=0
const.debuggable=1
const.build.characteristics=default
const.product.model=ohos
const.product.name="OpenHarmony 3.1 Release"
persist.sys.usb.config=hdc

参数物理空间使用的是一维数组存储每个参数,但是从逻辑上使用Trie树(前缀树)的数据结构存储,从根节点往下依次连成最终的key。这种数据结构提高了查找效率。

参数分类 

类别

前缀

说明

常量参数

const.

从赋值开始永远不会变更

常驻参数

persist.

可写并可持久化保存参数,重启后不会丢失。为保持一致,会有个定时器定期的批量保存到文件

临时参数

其他

可以随时修改,但是系统重启后参数丢失。

<
<think>我们正在讨论OpenHarmony恢复出厂设置的流程。根据用户的问题,需要了解具体操作步骤和流程。首先,我们需要明确恢复出厂设置是系统级别的操作,通常涉及清除用户数据、恢复系统默认设置等。在OpenHarmony中,这一流程可能由特定的系统服务或应用程序管理。 根据引用[5]中提到,init进程是用户态的第一个应用程序,它在系统启动时运行。因此,恢复出厂设置可能涉及重新初始化系统分区或用户数据分区。此外,引用[1]中提到了升级包的制作和校验,虽然与升级相关,但恢复出厂设置可能使用类似的机制来还原系统。 在OpenHarmony中,恢复出厂设置通常有两种触发方式: 1. 通过系统设置应用(Settings)的图形界面触发。 2. 通过系统命令(如命令行)触发,这通常在开发或调试时使用。 具体流程可能包括以下步骤: 1. 触发恢复出厂设置(用户通过UI确认或执行命令)。 2. 系统服务(可能是DeviceSettingsManager或类似服务)接收到请求。 3. 系统服务调用底层清除数据的接口。 4. 清除用户数据分区(如data分区)中的数据。 5. 清除缓存分区(如cache分区)中的数据。 6. 重新初始化系统设置(可能包括重置系统配置、网络设置等)。 7. 重启设备。 注意:恢复出厂设置不会影响系统分区的升级,即不会回退系统版本,只会清除用户数据。因此,它依赖于当前已安装的系统版本。 引用[5]中提到烧录rootfs.img,但恢复出厂设置通常不涉及重新烧录系统镜像,而是清除用户数据。不过,在开发阶段,烧录rootfs.img可以用于恢复整个系统(包括出厂设置),但这不是常规的恢复出厂设置操作。 下面我们详细描述操作步骤: ### OpenHarmony 恢复出厂设置流程 #### 1. **触发恢复出厂设置** - **图形界面方式**:在系统设置应用中,用户进入“备份与恢复”或“重置”选项,选择“恢复出厂设置”。系统会要求用户确认,并可能要求输入密码(如果设置了安全锁)。 - **命令行方式**:在具有root权限的终端中,执行恢复出厂设置的命令。例如,OpenHarmony可能提供了`reset_device`命令(具体命令可能因设备厂商而异)。 #### 2. **系统处理流程** - 系统设置应用(或命令行工具)会调用系统服务(如`DeviceResetService`)的接口。 - 系统服务会执行以下操作: - 停止用户相关的服务和应用,确保数据不会被修改。 - 清除用户数据分区(挂载在`/data`)的所有数据。这包括应用数据、系统设置、用户文件等。 - 清除缓存分区(`/cache`)的数据。 - 重置系统配置,例如网络设置、蓝牙配对信息等(这些配置可能存储在`/data`分区中,因此清除该分区即重置)。 - 重新创建必要的目录结构(如`/data`下的基础目录)。 #### 3. **重启设备** - 清除完成后,系统服务会触发设备重启。 - 重启过程中,系统会重新初始化,进入首次开机的设置向导(类似于新设备的状态)。 #### 4. **底层实现细节** - 在OpenHarmony中,恢复出厂设置的核心操作是格式化用户数据分区。这通常通过调用`mksh`(命令解释器)执行`format`命令来实现。例如: ```shell format /data ``` - 此外,系统可能会删除其他分区(如`/cache`)的内容,但不会影响系统分区(如`/system`、`/vendor`等)。 - 引用[5]中提到,系统启动时由init进程挂载rootfs,然后运行`/bin/init`。恢复出厂设置后,设备重启,init进程会重新初始化用户数据分区,并启动系统服务。 #### 注意事项 - **数据备份**:恢复出厂设置前,用户应备份重要数据,因为此操作不可逆。 - **安全机制**:为防止误操作,系统通常需要多次确认,并可能要求输入密码。 - **设备差异**:不同设备厂商可能定制恢复出厂设置的流程,例如增加清除内部存储或SD卡的选项。 #### 开发调试相关 - 在开发板上,可以通过串口或adb连接执行命令来触发恢复出厂设置。例如: ```shell reboot recovery # 进入恢复模式,然后选择恢复出厂设置(如果支持) 或 reset_device # 假设这是设备提供的命令 ``` 但具体的命令需要参考设备厂商的文档。 - 引用[1]提到升级包制作工具的BUG,虽然与恢复出厂设置不直接相关,但说明系统升级和恢复出厂设置可能共享部分底层机制(如分区操作)。 ### 相关问题 §§相关问题§§ 1. 如何防止OpenHarmony设备被误恢复出厂设置? 2. 恢复出厂设置后,OpenHarmony系统如何重新初始化用户数据分区? 3. OpenHarmony恢复出厂设置是否会清除系统更新? 4. 如何在OpenHarmony中实现自定义的恢复出厂设置逻辑?</think>### OpenHarmony 恢复出厂设置流程详解 恢复出厂设置(Factory Reset)是设备维护的关键操作,OpenHarmony 通过系统服务实现该功能。以下是完整流程(基于标准系统解决方案): #### 1. **用户触发恢复操作** - **图形界面路径**:设置 → 系统 → 重置 → 恢复出厂设置 - **物理按键组合**(设备特定):同时按住音量+和电源键进入恢复模式 - **命令行触发**(开发者模式): ```shell # 通过hilog工具触发重置 hilog -p reset_device ``` 此命令会调用系统底层的恢复接口[^5] #### 2. **系统服务处理流程** ```mermaid graph TD A[用户触发操作] --> B(DeviceSettingsManager服务) B --> C{验证设备状态} C -->|正常| D[停止所有用户进程] C -->|异常| E[进入安全恢复模式] D --> F[挂载/data分区为读写] F --> G[执行数据清除操作] G --> H[重建文件系统结构] H --> I[重启设备] ``` #### 3. **数据清除阶段(核心步骤)** 1. **分区格式化**: - `/userdata` 分区完全格式化(使用 `mkfs.vfat` 或设备专用格式) - `/cache` 分区清空 - 保留 `/system` 和 `/vendor` 系统分区不变 2. **关键目录重建**: ```shell # 重建基础目录结构 mkdir -p /data/app mkdir -p /data/service chmod 0755 /data/app ``` 3. **配置重置**: - 删除 `/data/system/` 下的配置文件: ```shell rm -rf /data/system/device_policies.xml rm -rf /data/system/accounts.db ``` - 重置网络配置: ```shell rm /data/misc/ethernet/ipconfig.txt ``` #### 4. **安全验证机制 - **数字签名验证**:恢复前校验系统镜像签名(使用 security 子系统的证书链)[^2] - **防误触保护**:连续3次确认操作(带5秒倒计时) - **硬件级保护**:TrustZone 环境执行敏感操作(如加密密钥销毁) #### 5. **重启初始化 - 重新执行 init 进程(用户态首个进程)[^5] - 重建基础服务: ```shell # init.rc 部分配置 service zygote /system/bin/app_process class main user root ``` - 首次启动向导激活(类似新设备初始化) #### 注意事项 1. 数据清除不可逆,建议提前备份 2. 部分设备需保持充电状态(电量 > 30%) 3. 企业设备可能受 MDM 策略限制[^4] 4. 若遇失败(如引用[1]的BUG),需升级系统版本解决 > **技术原理**:本质是通过 Linux 底层文件操作 + 系统服务管理实现,核心是 `/data` 分区格式化。系统版本升级不会回退,仅清除用户数据[^2][^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值