首页 > 其他分享 >OpenHarmony 的启动子系统startup与init组件

OpenHarmony 的启动子系统startup与init组件

时间:2024-09-24 17:35:47浏览次数:1  
标签:OpenHarmony startup feature init base ohos true

1. rk3568的startup配置

配上init component以后,系统就会编译集成这个组件。

vendor/hihope/rk3568/config.json

    {
      "subsystem": "startup",
      "components": [
        {
          "component": "init",
          "features": [
            "enable_ohos_startup_init_feature_ab_partition = true",
            "enable_ohos_startup_init_feature_loader = true"
          ]
        }
      ]
    },

2. startup子系统在 build/subsystem_config.json 的信息

  "startup": {
    "path": "base/startup",
    "name": "startup"
  },

可以看到,startup 子系统的代码保存在 base/startup

3. init组件的详细信息

源码目录:

base/startup/init

代码仓库:直达

https://gitee.com/openharmony/startup_init

4. init组件的源码如何组织编译

代码的组织编译由组件源码目录下面的 bundle文件决定

base/startup/init/bundle.json
https://gitee.com/openharmony/startup_init/blob/master/bundle.json
{
    "name": "@ohos/init",
    "description": "ohos init process",
    "homePage": "https://gitee.com/openharmony",
    "version": "4.0.2",
    "license": "Apache License 2.0",
    "repository": "https://gitee.com/openharmony/startup_init",
    "supplier": "Organization: OpenHarmony",
    "publishAs": "code-segment",
    "segment": {
        "destPath": "base/startup/init"
    },
    "dirs": {},
    "scripts": {},
    "component": {
        "name": "init",
        "subsystem": "startup",
        "syscap": [
            "SystemCapability.Startup.SystemInfo",
            "SystemCapability.Startup.SystemInfo.Lite",
            "SystemCapability.Base"
        ],
        "features": [
            "init_feature_begetctl_liteos",
            "init_lite_use_posix_file_api",
            "init_feature_ab_partition",
            "init_feature_loader",
            "init_lite_use_thirdparty_mbedtls",
            "init_appspawn_client_module"
        ],
        "adapted_system_type": [
            "mini",
            "small",
            "standard"
        ],
        "rom": "3.9MB",
        "ram": "8356KB",
        "hisysevent_config": [
            "//base/startup/init/services/modules/sysevent/init_events.yaml"
        ],
        "deps": {
            "components": [
                "appspawn",
                "safwk",
                "c_utils",
                "napi",
                "ipc",
                "config_policy",
                "hilog",
                ... ...
            ],
            "third_party": [
                "mksh",
                "e2fsprogs",
                "f2fs-tools"
            ]
        },
        "build": {
            "group_type": {
                "base_group": [
                ],
                "fwk_group": [
                    "//base/startup/init/services:startup_init",
                    "//base/startup/init/services/begetctl:begetctl_cmd",
                    "//base/startup/init/services/loopevent:loopeventgroup",
                    "//base/startup/init/services/modules:modulesgroup",
                    "//base/startup/init/services/param:parameter",
                    "//base/startup/init/interfaces/innerkits:innergroup",
                    "//base/startup/init/device_info:device_info_group",
                    "//base/startup/init/interfaces/kits:kitsgroup"
                ],
                "service_group": [
                    "//base/startup/init/watchdog:watchdog",
                    "//base/startup/init/remount:overlayremount",
                    "//base/startup/init/ueventd:startup_ueventd"
                ]
              },

 5. 目录下的 begetd.gni 展示了该module提供哪些编译 feature

base/startup/init/begetd.gni
https://gitee.com/openharmony/startup_init/blob/master/begetd.gni
declare_args() {
  enable_ohos_startup_init_feature_watcher = true
  enable_ohos_startup_init_feature_deviceinfo = true

  # only for test
  param_test = true
  param_base_log = false
  enable_ohos_startup_init_feature_ab_partition = false

  # init begetctl support liteos
  enable_ohos_startup_init_feature_begetctl_liteos = false

  # only support mbedtls for hash
  enable_ohos_startup_init_lite_use_thirdparty_mbedtls = true
  enable_ohos_startup_init_lite_use_posix_file_api = false
  config_ohos_startup_init_lite_data_path = "/"

  # config memory size for liteos-m
  config_ohos_startup_init_lite_memory_size = 5120

  startup_init_feature_decode_group_file = false

  startup_init_test_performance = true

  # log display control
  config_ohos_startup_init_lite_no_log = false

  startup_init_with_param_base = false
  if (!use_musl) {
    startup_init_with_param_base = true
    startup_init_feature_decode_group_file = true
  }

  # begetutil extension module
  startup_begetutil_extra_modules = ""
  startup_init_extra_static_modules = ""
}

这些都是编译时可以选择的配置选项,也就是组件的feature,可以在配置的时候进行选择。

标签:OpenHarmony,startup,feature,init,base,ohos,true
From: https://www.cnblogs.com/riveruns/p/18429660

相关文章

  • OpenHarmony Linux内核的config配置
    鸿蒙系统对Linux内核的使用方式对于传统的Linux内核和驱动开发者来说已经发生了很大的变化,首先就是内核config选项的配置方式。传统上,我们直接进入到linux内核目录进行makemenuconfig就可以了,最终会生成1个.config文件,但是鸿蒙不是这样子的。为了解决传统的一平台或一领域产品......
  • go基础-8.init函数和defer函数
    init函数init()函数是一个特殊的函数,存在以下特性:不能被其他函数调用,而是在main函数执行之前,自动被调用init函数不能作为参数传入不能有传入参数和返回值一个go文件可以有多个init函数,谁在前面谁就先执行packagemainimport"fmt"funcinit(){fmt.Println("init1"......
  • 【simulink】关系操作符isINF, isNaN, isFinite
    isNaN()检查参数是否是非数字,NaN-NOTaNumber不是数字,返回true;是数字,返回false示例:返回false:isNaN(123),isNaN(-1.23),isNaN(6+4),isNaN(0)返回true:isNaN("helloworld"),isNaN('a'),isNaN("2024/9/20")isINF()检查参数是否无穷大正负无穷大时,返回true;否则,返回false......
  • Invalid bean definition with name ‘myBatisPlusApplication‘ defined in class pa
    目录问题出现背景问题分析问题解决一、背景        黑马课程的SSM框架里面的MyBatisPlus部分的学习,学习的是selecPage方法的测试时候出现的,因为要配分页的拦截器,所有定义了一个config的类,同时配了@Configuration(@Component好像也可正常使用),然后去到测试时候就......
  • qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed加
    qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();qDebug()<<"OpenSSL支持情况:"<<QSslSocket::supportsSsl();打印需要的版本和当前openssl的支持情况如果显示false,不支持就是说明,不支持加密对应下载版本的openssl进行重新编译即可原因......
  • SQLSTATE[HY000] [2013] Lost connection to MySQL server at 'reading initial commu
    错误信息 SQLSTATE[HY000][2013]LostconnectiontoMySQLserverat'readinginitialcommunicationpacket',systemerror:111 表示在尝试与MySQL服务器建立连接时出现了问题,具体来说是在读取初始通信包时失去了与MySQL服务器的连接,系统错误码为111,这通常表示连接被拒绝......
  • k8s集群,master节点的初始化所用到的,init文件的分析,master节点的核心组件的作用,node节
    标准的k8s集群有三个组成部分管理控制节点、计算节点、私有镜像仓库。管理控制节点的功能:提供集群的控制对集群进行全局决策检测和响应集群事件管理控制节点中有四大核心服务服务端口含义用途APIServer6443api接口负责接收请求,实现功能Scheduler......
  • HarmonyOS与OpenHarmony的区别
    HarmonyOS所有权:HarmonyOS是由华为公司开发的操作系统。目标市场:HarmonyOS主要面向中国市场及其用户,用于华为的智能手机、平板电脑、智能手表、电视等多种智能设备。兼容性:HarmonyOS在早期版本中支持运行Android应用,但随着时间的发展,它逐渐转向了自己的应用生态系统。专......
  • 3.4.4 __ipipe_init_early之再论虚拟中断
    点击查看系列文章=》 InterruptPipeline系列文章大纲-CSDN博客3.4.4__ipipe_init_early之再论虚拟中断     根据《3.4.1.2IPIPE对Linux中断号的改造》的分析,IPIPE引入的虚拟中断virtualinterrupt的概念,其中前10个虚拟中断本质上是利用SGI实现的IPI中断。IPIPE在......
  • C++扫盲--直接构造(Direct Initialization)
      在C++中,直接构造(DirectInitialization)是由一种对象构造的方式,它直接调用类的构造函数来初始化对象。这种方式通常用于创建对象时立即提供必要的参数。直接构造的语法如下:ClassNameobjectName(arguments);其中,ClassName是类的名称,objectName是要创建的对象的名称,argument......