OpenHarmony引导启动配置文件--jobs管理和服务管理

引导启动配置文件

概述

Init配置文件基于JSON格式,用来配置系统启动时必要的命令和服务。Init在系统启动时解析配置文件,并根据配置文件执行对应的命令,启动相应服务。

        分组配置文件(device.xxxx.group.cfg)(标准系统支持),文件由jobs、services和groups组成。用来限制能够执行的jobs和service。根据cmdline中的bootgroup属性决定当前的分区。

  • device.boot.group系统默认配置,触发执行配置文件中的所有的job和服务。

  • device.charge.group charge模式,限制只启动该文件中允许的job和服务。

        启动配置文件(init.cfg),文件由jobs、services和import组成。

  • services(linux 内核支持),用于配置系统支持的native服务;

  • jobs,配置等待执行命令集合;

  • import(linux内核支持),import是导入cfg文件,目的是减少cfg文件大小,分离不同的功能。

应用场景

        init进程启动时,首先完成系统初始化工作,然后开始解析配置文件。系统在解析配置文件时会将配置文件分成三类:

  1. init.cfg 默认配置文件,由init系统定义,优先解析。
  2. /system/etc/init/*.cfg各个=子系统定义的配置文件。
  3. /vendor/etc/init/*.cfg厂商定义的配置文件。

jobs管理

jobs是init组件下cfg文件中的一组命令构成的集合,最多添加4096个job。jobs可以在cfg文件中配置,通常在init启动过程中执行,服务于service的正常启动或特定基础功能的初始化。

init解析程序会把相同名字job的命令合并到一个job中。同一名字的job只能保障init.cfg中的命令优先执行,其他cfg中的命令执行顺序不能保证。

jobs类型

基本jobs

init启动的固定阶段:pre-init、init、post-init;

  • pre-init: init前置阶段,其他服务所依赖的,如:ueventd、watchdog、hilogd等关键服务及data分区的挂着;

  • init: init进程的主要阶段,执行大量的命令,并行启动boot组服务的启动阶段,系统功能的重要服务在这一阶段被拉起。

  • post-init: 通过trigger命令触发其他阶段执行,也会执行大量命令,是init分组并行启动normal组服务的启动阶段,大部分服务在此阶段被拉起。

自定义jobs(标准系统以上提供)

按照一定的规则进行触发,用户根据需要定义的命令集合,通过trigger命令触发执行。

条件jobs(标准系统以上提供)

用户通过在jobs中添加condition配置,在条件满足时触发命令执行。条件是系统参数值的组合,支持&&、||等操作,并支持*匹配任意值。

如:

"condition" : "sys.usb.config = none && sys.usb.configs = 0",
# 特殊情况下需要在boot阶段对参数进行检查
"condition" : "boot && const.debuggable=1",

参数说明

命令

命令格式和实例

说明

mkdir

mkdir 目标文件夹[mode][owner][group]

如:mkdir /storage/myDirectory

mkdir /storage/myDirectory 0755 root root

创建文件夹命令,mkdir 和目标文件夹之间有且只能有一个空格。

系统类型:小型系统和标准系统

chmod

chmod 权限 目标

如:chmod 0600 /storage/myFile.txt

chmod 0750 /storage/myDir

修改权限命令,chmod权限目标之间间隔有且仅有一个空格,权限必须为0xxx格式。

系统类型:小型系统和标准系统。

chown

chown uid gid 目标

如:chown 900 800 /storage/myDir

chown 100 100 /storage/myFile.txt

修改属组命令,chown uid gid目标之间有且仅有一个空格

系统类型:小型系统和标准系统。

mount

mount fileSystemType src dst flags [data]

如:

mount vfat /dev/mmcblk0 /sdc rw,umask=000

mount jffs2 /dev/mtdblock3 /storage nosuid

挂在命令,各参数之间有且仅有一个空格。

flags参考base/startup/init/services/init/init_common_cmds.c中mountFlagMap函数mountFlagMap[],data为可选字段。
系统类型:小型系统和标准系统

start

start serviceName
如:start foundation

启动服务命令,start后面跟着service名称,该service名称必须能够在services数组中找到。
系统类型:小型系统和标准系统

export

export key value
如:export TEST /data/test

设置环境变量命令。后面跟两个参数,第一个参数是环境变量名,第二个参数是环境变量值。
系统类型:小型系统和标准系统

rm

rm filename
如:rm /data/testfile

删除文件命令。后面跟一个参数,即文件的绝对路径。
系统类型:小型系统和标准系统

rmdir

rmdir dirname
如:rmdir /data/testdir

删除目录命令。后面跟一个参数,即目录的绝对路径。
系统类型:小型系统和标准系统

write

write filename value
如:write /data/testfile 0

写文件命令。后面跟两个参数,第一个参数是文件的绝对路径,第二个参数是要写入文件的字符串。
系统类型:小型系统和标准系统

stop

stop serviceName
如:stop console

关闭服务命令。后面跟一个参数,即要关闭的服务名。
系统类型:小型系统和标准系统

copy

copy oldfile newfile
如:copy /data/old /data/new

拷贝文件命令。后面跟两个参数,第一个参数是原文件绝对路径,第二个参数是新文件绝对路径。
系统类型:小型系统和标准系统

reset

reset serviceName
如:reset console

重置服务命令。后面跟一个参数,即要重启的服务名。目前reset命令的策略是,如果一个服务没有启动,则该命令会将其拉起,如果一个服务处于运行状态,则该命令会将其关闭后重启。
系统类型:小型系统和标准系统

reboot

reboot [subsystem]
如:reboot updater

重启系统命令。后面可以跟一个参数,也可以没有参数,当没有参数时执行该命令,将会使设备重启到当前系统,当后面跟参数时,参数应当是子系统的名字,例如,reboot updater,将会重启进入updater子系统。
系统类型:小型系统和标准系统

sleep

sleep time
如:sleep 5

睡眠命令。后面可以跟一个参数,该参数是睡眠时间, 限制睡眠时间在5秒内。
sleep命令谨慎使用。
系统类型:小型系统和标准系统

你可能感兴趣的:(OpenHarmony,5.0,Release,南向开发,OpenHarmony,jobs,services,backlight,vscode,c++)