#打卡不停更#OpenHarmony恢复启动子系统init进程之参数空间配置 原创 精华

软通动力HOS
发布于 2022-10-9 10:22
浏览
6收藏

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

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。这种数据结构提高了查找效率。
#打卡不停更#OpenHarmony恢复启动子系统init进程之参数空间配置-鸿蒙开发者社区

参数分类

类别 前缀 说明
常量参数 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


const.actionable_compatible_property.enabled=false
const.postinstall.fstab.prefix=/system
const.product.name="OpenHarmony 3.1 Release"
persist.sys.usb.config=hdc

- 参数文件 ohos.para.dac

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规则信息每一位的定义如下:#打卡不停更#OpenHarmony恢复启动子系统init进程之参数空间配置-鸿蒙开发者社区
跟文件权限不同的是,第三个比特表示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 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 参数

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
7
收藏 6
回复
举报
1条回复
按时间正序
/
按时间倒序
软通田可辉
软通田可辉

这些文章整理个合集应该更好

回复
2022-10-20 09:54:27
回复
    相关推荐