参数由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.
可写并可持久化保存参数,重启后不会丢失。为保持一致,会有个定时器定期的批量保存到文件
临时参数
其他
可以随时修改,但是系统重启后参数丢失。
类别
路径
说明
内核参数
/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
hw_sc.build.os.releasetype=Release
const.actionable_compatible_property.enabled=false
const.postinstall.fstab.prefix=/system
const.product.name="OpenHarmony 3.1 Release"
persist.sys.usb.config=hdc
const.actionable_compatible_property.enabled root:root:0777
const.postinstall.fstab.prefix root:root:0777
const.secure root:root:0777
security.perf_harden root:root:0777
const.allow.mock.location root:root:0777
const.debuggable root:root:0777
persist.sys.usb.config root:root:0777
DAC(Discretionary Access Control)自主访问控制方式管理
需要根据用户、组用户、读写权限等进行验证权限,才能到指定文件读取参数值。
可以通过参数路径为相同前缀的所有系统参数定义一类访问权限信息;DAC信息通过":"分三段来描述,分别为参数的user,group以及UGO规则信息。
UGO规则信息每一位的定义如下:
跟文件权限不同的是,第三个比特表示watch权限。
功能
说明
get
获取系统参数的值
set
设置系统参数的值
wait
同步等待系统参数的值匹配,支持模糊匹配,例如: hd*, 则匹配hdc,hdi等等。“*”表示匹配任何值
watch
将一个参数加入监视队列,当参数发生变化,通知用户
将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 参数
更多回帖