1# 引导启动配置文件 2## 概述 3### 功能简介 4Init配置文件基于JSON格式,用来配置系统启动时必要的命令和服务。Init在系统启动时解析配置文件,并根据配置文件执行对应的命令,启动相应的服务。 5### 基本概念 61. 分组配置文件(device.xxxx.group.cfg)(标准系统支持),文件由jobs、services和groups组成。用来限制能够执行的jobs和service。根据cmdline中的bootgroup属性决定当前的分区。当前支持下列分组: 7 - device.boot.group 系统默认配置,触发执行配置文件中的所有的job和服务。 8 - device.charge.group charge模式,限制只启动改文件中允许的job和服务。 9 102. 启动配置文件(init.cfg),文件由jobs、services和import组成。 11 - services(linux内核支持), 用于配置系统支持的native服务,服务具体配置参考 **[服务管理](subsys-boot-init-service.md)**。 12 - jobs, 配置等待执行命令集合,jobs具体参考 **[jobs管理](subsys-boot-init-jobs.md)**。 13 - import(linux内核支持),import是导入cfg文件,目的是减少cfg大小,分离不同的功能。 14 15### 约束与限制 16仅支持小型系统和标准系统。 17 18## 开发指导 19### 场景介绍 20init进程启动时,首先完成系统初始化工作,然后开始解析配置文件。系统在解析配置文件时,会将配置文件分成三类: 211. init.cfg默认配置文件,由init系统定义,优先解析。 222. /system/etc/init/*.cfg各子系统定义的配置文件。 233. /vendor/etc/init/*.cfg厂商定义的配置文件。 24 25当需要添加配置文件时,用户可以根据需要定义自己的配置文件,并拷贝到相应的目录下。 26 27### 开发步骤 281. 定义配置文件。 29 ``` 30 { 31 "import" : [ ], 32 "jobs" : [ ], 33 "services" : [ ] 34 } 35 ``` 36 372. 根据具体的系统拷贝配置到相应的目录。 38 39 标准系统下: 40 ``` 41 ohos_prebuilt_etc("misc.cfg") { 42 source = "//base/startup/init/services/etc/misc.cfg" 43 relative_install_dir = "init" 44 part_name = "init" 45 } 46 ``` 47 小型系统下: 48 ``` 49 copy("init_configs") { 50 sources = [ "init_liteos_a_3516dv300.cfg" ] 51 outputs = [ "$root_out_dir/config/init.cfg" ] 52 } 53 ``` 54 55### 开发实例 56下述为cfg文件编写模板。 57``` 58{ 59 "import" : [ 60 "/etc/example1.cfg", 61 "/etc/example2.cfg" 62 ], 63 "jobs" : [{ 64 "name" : "jobName1", 65 "cmds" : [ 66 "start serviceName", 67 "mkdir dir1" 68 ] 69 }, { 70 "name" : "jobName2", 71 "cmds" : [ 72 "chmod 0755 dir1", 73 "chown root root dir1" 74 ] 75 } 76 ], 77 "services" : [{ 78 "name" : "serviceName", 79 "path" : ["/system/bin/serviceName"] 80 } 81 ] 82} 83``` 841. cfg文件是严格按照JSON格式编写的,当添加服务或命令未生效时,可以优先排查添加内容的格式是否正确。 85 862. 对于import解析,在解析完成一个import中的cfg文件路径时,会立即解析该cfg文件。 87 883. example1.cfg 需要导入的cfg文件。 89 904. serviceName:service名称, 用户自定义。 91 925. /system/bin/serviceName: 当前服务的可执行文件全路径和参数, 数组形式。 93 946. jobName1:job名称, 用户自定义。 95