【入门到实战】OpenHarmony南向子系统开发:引导启动配置文件

OpenHarmony恢复启动子系统init进程之服务启动 首先执行job,如果开发者的进程在启动之前需要首先执行一些操作(例如创建文件夹),可以把操作放到pre-init中先执行。一般pre-init阶段主要是为后面启动服务做准备的,比如挂载目录,设置权限,启动uevent、watchdog等,uevent主要是有些服务需要响应插拔事件才会被拉起。执行job介绍:job名说明pre-init最先执行的job,如果开发者的进程在启动之前需要首先执行一些操作(例如创建文件夹),可以把操作放到pre-init中先执行。init中间执行的job,例如服务启动。post-i 阅读详情

往期鸿蒙5.0全套实战文章必看:(文中附带全栈鸿蒙5.0学习资料)


概述

功能简介

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

基本概念

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

    • ​device.boot.group 系统默认配置,触发执行配置文件中的所有的job和服务。
    • device.charge.group charge模式,限制只启动改文件中允许的job和服务。
  2. 启动配置文件(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厂商定义的配置文件。

当需要添加配置文件时,用户可以根据需要定义自己的配置文件,并拷贝到相应的目录下。

开发步骤

  1. 定义配置文件。

    {
        "import" : [ ],
        "jobs" : [ ],
        "services" : [ ]
    }
    
  2. 根据具体的系统拷贝配置到相应的目录。

    标准系统下:

    ohos_prebuilt_etc("misc.cfg") {
        source = "//base/startup/init/services/etc/misc.cfg"
        relative_install_dir = "init"
        part_name = "init"
      }
    

    小型系统下:

    copy("init_configs") {
      sources = [ "init_liteos_a_3516dv300.cfg" ]
      outputs = [ "$root_out_dir/config/init.cfg" ]
    }
    

开发实例

下述为cfg文件编写模板。

{
    "import" : [
            "/etc/example1.cfg",
            "/etc/example2.cfg"
    ],
    "jobs" : [{
            "name" : "jobName1",
            "cmds" : [
                "start serviceName",
                "mkdir dir1"
            ]
        }, {
            "name" : "jobName2",
            "cmds" : [
                "chmod 0755 dir1",
                "chown root root dir1"
            ]
        }
    ],
    "services" : [{
            "name" : "serviceName",
            "path" : ["/system/bin/serviceName"]
        }
    ]
}
  1. cfg文件是严格按照JSON格式编写的,当添加服务或命令未生效时,可以优先排查添加内容的格式是否正确。

  2. 对于import解析,在解析完成一个import中的cfg文件路径时,会立即解析该cfg文件。

  3. example1.cfg 需要导入的cfg文件。

  4. serviceName:service名称, 用户自定义。

  5. /system/bin/serviceName: 当前服务的可执行文件全路径和参数, 数组形式。

  6. jobName1:job名称, 用户自定义。

OpenHarmony引导启动配置文件--jobs管理和服务管理 Init配置文件基于JSON格式,用来配置系统启动时必要的命令和服务。Init在系统启动时解析配置文件,并根据配置文件执行对应的命令,启动相应服务。分组配置文件(device.xxxx.group.cfg)(标准系统支持),文件由jobs、services和groups组成。用来限制能够执行的jobs和service。根据cmdline中的bootgroup属性决定当前的分区。device.boot.group系统默认配置,触发执行配置文件中的所有的job和服务。 阅读详情

相关推荐

鸿蒙OpenHarmony【引导启动配置文件】子系统init启动引导组件

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

asd95279527p的博客 945

鸿蒙OS---cfg文件解析

init进程启动时,首先完成系统初始化工作,然后开始解析配置文件。init.cfg默认配置文件,由init系统定义,优先解析。/system/etc/init/*.cfg各子系统定义的配置文件。/vendor/etc/init/*.cfg厂商定义的配置文件。当需要添加配置文件时,用户可以根据需要定义自己的配置文件,并拷贝到相应的目录下。

AP11090250的博客 1639

鸿蒙开发实战(OpenHarmony)引导启动Init配置文件场景

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

WEZC156465的博客 1298

OpenHarmony子系统开发 - init启动引导组件(一)

init进程启动时,首先完成系统初始化工作,然后开始解析配置文件。init.cfg默认配置文件,由init系统定义,优先解析。/system/etc/init/*.cfg各子系统定义的配置文件。/vendor/etc/init/*.cfg厂商定义的配置文件。当需要添加配置文件时,用户可以根据需要定义自己的配置文件,并拷贝到相应的目录下。

__Benco的博客 1742

【鸿蒙南向开发】—— OpenHarmony 标准系统移植指南

本文以移植名为 MyProduct 的开发板为例讲解移植过程,假定 MyProduct 是 MyProductVendor 公司的开发板,使用 MySoCVendor 公司生产的 MySOC 芯片作为处理器。在名称的目录下创建一个 config.json 文件,该文件用于描述产品所使用的 SOC 以及所需的子系统。配置如下:},...主要的配置内容配置项说明(必填)产品名称version(必填)版本type(必填)配置的系统级别,包含(small、standard 等)

pengjiadashaoye的博客 1435

鸿蒙开发实战(OpenHarmony)整机启动流程

系统上电加载内核后,按照以下流程完成系统各个服务和应用的启动:

WEZC156465的博客 2291

海王星(Neptune)系列和大禹(DAYU)系列OpenHarmony智能硬件配置解决方案

海王星(Neptune)系列和大禹(DAYU)系列OpenHarmony智能硬件对OS的适配、部件拼装配置、启动配置和文件系统配置等。:新增产品须按如上的规则创建目录和文件,编译构建系统将按该规则扫描已配置的产品。该文件夹中包含rcS脚本,Sxxx脚本和fstab脚本。init进程在启动系统服务之前执行这些脚本。执行的流程为“rcS->fstab->S00-xxx“。Sxxx脚本中的内容与开发板和产品需要有关,主要包括设备节点的创建、创建目录、扫描设备节点、修改文件权限等等。

1 1465

鸿蒙OpenHarmony【整机启动流程】子系统启动恢复

系统上电加载内核后,按照以下流程完成系统各个服务和应用的启动:

asd95279527p的博客 1729

【入门到实战】OpenHarmony南向子系统开发:启动流程

启动恢复子系统上下文.......

Androidbye的博客 1110

OpenHarmony(鸿蒙南向开发)——标准系统移植指南(一)

本文以移植名为MyProduct的开发板为例讲解移植过程,假定MyProduct是MyProductVendor公司的开发板,使用MySoCVendor公司生产的MySOC芯片作为处理器。在名称的目录下创建一个config.json文件,该文件用于描述产品所使用的SOC 以及所需的子系统。配置如下:},...主要的配置内容配置项说明(必填)产品名称version(必填)版本type(必填)配置的系统级别,包含(small、standard等)target_cpu。

鸿蒙开发知识记录 1953

【鸿蒙南向开发】OpenHarmony设备启动流程之服务与应用启动流程简析

Appspawn在OpenHarmony中作为应用孵化器,其主要功能是接收来自Foundation(基础服务层)或其他有权限的服务(如Ability Manager Service,AMS)的请求,这些请求通常以JSON格式包含启动新应用所需的信息。当appspawn接收到这样的请求时,它会按照指定的参数(如应用程序包名、动态库路径、用户和组ID等)来创建一个新的进程,并赋予相应的权限。在标准系统中,appspawn的服务名称是固定的,“appspawn”,它通过监听本地socket等待客户端连接。

CTrup的博客 978

OpenHarmony子系统开发 - init启动引导组件(二)

服务管理主要通过init解析服务进程配置文件来实现,服务进程配置文件(xxx.cfg)可以根据业务场景按需配置服务,当前支持的增值服务包括启动控制、按需启动、命令执行、定时启动、fd代持、沙盒。

__Benco的博客 1505

鸿蒙OpenHarmony【init常见问题指导】子系统init启动引导组件

查看服务进程的cfg文件,是否将"once"项配置为1;该项若为1,则表示为一次性进程,进程退出后不会再被init拉起

woshishei9527的博客 1848

OpenHarmony子系统开发 - init启动引导组件(五)

begetctl介绍具体参考。bootchart 插件bootchart是一个用于linux启动过程性能分析的开源工具软件,在系统中自动收集CPU占用率、磁盘吞吐率、进程等信息,并以图形方式显示分析结果,可用作指导优化系统启动过程。。bootevent 插件bootevent是一个记录init进程及各个服务的启动关键事件的插件,记录内容包括事件名称,关联事件的服务的启动时间,事件发生时间。导出文件支持tracing解析,可用作指导优化系统启动过程。

__Benco的博客 1443

【鸿蒙OS开发入门】12 - 启动流程代码分析之第一个用户态进程:init 进程 之 pre-init 任务详解

【鸿蒙OS开发入门】12 - 启动流程代码分析之第一个用户态进程:init 进程 之 pre-init 任务详解

|~~~热爱生活、努力学习的小伙汁~~~| 1663

ComfyUI+minimaxh3本地部署:漫剧分镜批量生成工作流全实操

视频生成模型正从云端API向本地化部署迁移,背后的技术逻辑是将扩散模型的文本编码、潜空间采样、VAE解码等阶段拆分为可编排的独立环节。ComfyUI作为节点化管线工具,恰好能以可视化连线方式管理这些阶段,让生成过程可控、可复用、可批量执行。minimaxh3模型支持本地推理,配合LoRA微调与参数优化,能够在保证角色一致性的前提下,从分镜脚本批量产出连续剧情片段,规避云端排队、成本高、素材不可控等工程问题。这套工作流广泛应用于漫剧、短剧和动态条漫的工业化生产,尤其适合需要高频迭代分镜草稿的内容团队。文本以零

weixin_29057065的博客 365

OpenHarmony子系统开发 - init启动引导组件(四)

支持系统组件及芯片组件进程沙盒运行。

__Benco的博客 1217

使用 EasyExcel 实现 百万级数据导入导出

在项目开发中往往需要使用到数据的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。大数据的导入和导出,相信大家在日常的开发、面试中都会遇到。很多问题只要这一次解决了,总给复盘记录,后期遇到同样的问题就好解决了。好啦,废话不多说开始正文!1.如此大批量数据的导出和导入操作,会占用大量的内存实际开发中还应限制操作人数。2.在做大批量的数据导入时,可以使用jdbc手动开启事务,批量提交。

houxian1103的博客 2699

OpenHarmony子系统开发 - init启动引导组件(三)

每个子系统定义各自模块的系统参数,包括系统参数名称、默认值以及系统参数的权限访问信息。系统参数命名格式系统参数名称采用点分格式,由多段组成,每一段可以由字母、数字、下划线组成,总长度不超过96字节;系统参数名称分为两类:系统参数名称类别名称示例说明参数名称完整的系统参数名称,末尾不是"."。参数目录const.**.以"."结尾,标识相同前缀的所有系统参数集合。系统参数类型系统参数一共分为三大类:系统参数分类类别前缀说明常量const.常量参数,一旦赋值后续不会再变更;

__Benco的博客 1353

全国各省份影像下载地址(11级别)

cesium中使用urltemplate加载,leaflet中使用tile加载,具体加载有问题可以给我留言。

资深三维GIS开发 5141

ZYNQ Linux环境下PS端I2C驱动OV5640摄像头全流程解析

本文详细解析了在ZYNQ Linux环境下,通过PS端I2C驱动OV5640摄像头的完整流程。内容涵盖从Vivado硬件配置、PetaLinux系统构建、设备树节点添加,到用户空间I2C编程与寄存器配置实战,并提供了关键的调试技巧与常见问题排查方法,帮助开发者快速实现嵌入式视觉应用的传感器配置。

vulkan6gpu的博客 853

OpenHarmony子系统开发 - init启动引导组件(八)

ueventd负责监听内核设备驱动插拔的netlink事件,根据事件类型动态管理相应设备的dev节点。

__Benco的博客 1534

FakeNewsGPT4:通过知识增强的大规模视觉语言模型推进多模态假新闻检测

当前,多模态假新闻的大量涌现导致了显著的分布差异,这一现状亟需我们开发具备广泛适用性的检测器。然而,现有假新闻检测器因特定领域内的训练方式,难以有效获取开放世界中的事实信息。这种训练的封闭性限制了传统检测器的能力,特别是在面对跨域假新闻时,其表现往往不尽如人意。具体而言,开放世界中的假新闻在两个方面具有显著的分布差异:一方面,其操纵内容多种多样,新闻的任一部分都可能受到创意策略的操控;另一方面,真实背景复杂多变,不同地区的新闻背景和主题焦点存在显著差异。

qq_52053775的博客 821
上一篇: 【入门到实战】OpenHarmony南向子系统开发:启动流程
下一篇: 【入门到实战】OpenHarmony南向子系统开发:jobs管理
懂你的大海
博客等级 码龄6年 9049粉丝 1381原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值