> 文档中心 > OpenHarmony恢复启动子系统init进程之参数空间配置

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

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

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

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

参数分类 

类别

前缀

说明

常量参数

const.

从赋值开始永远不会变更

常驻参数

persist.

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

临时参数

其他

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

参数来源

类别

路径

说明

内核参数

/proc/cmdline

内核参数中部分参数转换成ohos.boot.xxx=valXXX系统参数

os常量值

/system/etc/param/ohos_const/*.para

os常量值

vendor参数值

/vendor/etc/param/*.para

厂商定义的参数文件,可覆盖系统参数值

系统参数

/system/etc/param/*.para

系统参数,如果跟厂商参数重复,忽略系统参数

/proc/cmdline# cat /proc/cmdline                                                            mem=640M console=ttyAMA0,115200 mmz=anonymous,0,0xA8000000,384M clk_ignore_unused rootdelay=10 hardware=Hi3516DV300 init=/init root=/dev/ram0 rw blkdevparts=mmcblk0:1M(boot),15M(kernel),20M(updater),10M(misc),3307M(system),256M(vendor),-(userdata) initrd=0x84000000,0x290e00

获取hardware,bootgroup,mem等参数值加入参数。

例如: ohos.boot.hardware=Hi3516DV300

参数文件 ohos.para

hw_sc.build.os.releasetype=Releaseconst.actionable_compatible_property.enabled=falseconst.postinstall.fstab.prefix=/systemconst.product.name="OpenHarmony 3.1 Release"persist.sys.usb.config=hdc

参数文件 ohos.para.dac

const.actionable_compatible_property.enabled root:root:0777const.postinstall.fstab.prefix root:root:0777const.secure root:root:0777security.perf_harden root:root:0777const.allow.mock.location root:root:0777const.debuggable root:root:0777persist.sys.usb.config root:root:0777

DAC(Discretionary Access Control)自主访问控制方式管理

需要根据用户、组用户、读写权限等进行验证权限,才能到指定文件读取参数值。

可以通过参数路径为相同前缀的所有系统参数定义一类访问权限信息;DAC信息通过":"分三段来描述,分别为参数的user,group以及UGO规则信息。

UGO规则信息每一位的定义如下:

 跟文件权限不同的是,第三个比特表示watch权限。

功能

说明

get

获取系统参数的值

set

设置系统参数的值

wait

同步等待系统参数的值匹配,支持模糊匹配,例如: hd*, 则匹配hdc,hdi等等。“*”表示匹配任何值

watch

将一个参数加入监视队列,当参数发生变化,通知用户

trigger参数

将jobs、系统控制命令这些纳入trigger参数范围。

类型

特征

说明

BOOT

"pre-init", "boot", "early-init", "init", "early-init", "late-init", "post-init",

"fs", "early-fs", "post-fs", "late-fs", "early-boot", "post-fs-data",

"reboot", "suspend"

需要优先执行的jobs

PARAM

以param:为前缀的jobs

参数操作相关的命令,

 参数类型的jobs:

{            "name" : "param:sys.sysctl.extra_free_kbytes=*",            "condition" : "sys.sysctl.extra_free_kbytes=*",            "cmds" : [                "write /proc/sys/vm/extra_free_kbytes ${sys.sysctl.extra_free_kbytes}"            ]        }, {            "name" : "param:sys.sysctl.tcp_def_init_rwnd=*",            "condition" : "sys.sysctl.tcp_def_init_rwnd=*",            "cmds" : [                "write /proc/sys/net/ipv4/tcp_default_init_rwnd ${sys.sysctl.tcp_def_init_rwnd}"            ]        }, {            "name" : "param:security.perf_harden=0",            "condition" : "security.perf_harden=0",            "cmds" : [                "write /proc/sys/kernel/perf_event_paranoid 1",                "write /proc/sys/kernel/perf_event_max_sample_rate ${debug.perf_event_max_sample_rate:-100000}",                "write /proc/sys/kernel/perf_cpu_time_max_percent ${debug.perf_cpu_time_max_percent:-25}",                "write /proc/sys/kernel/perf_event_mlock_kb ${debug.perf_event_mlock_kb:-516}"            ]        }

trigger参数根据类型在存储的时候,添加对应的前缀,方便与其他参数存储在Trie树中,方便查找。

#define SYS_POWER_CTRL "ohos.startup.powerctrl="   //电源控制#define OHOS_CTRL_START "ohos.ctl.start="   //控制启动#define OHOS_CTRL_STOP "ohos.ctl.stop="      //控制停止#define OHOS_SERVICE_CTRL_PREFIX "ohos.servicectrl."   //服务控制#define OHOS_BOOT "ohos.boot."    // boot 参数