1 关键字
启动、Init、产品配置、启动配置
2 简要描述
本文档主要以XX开发版为例分析OpenHarmony系统启动过程、产品配置、启动配置,并举例说明如何配置。
3 init启动引导组件简要说明
init启动引导组件对应的进程为init进程,是内核完成初始化后启动的第一个用户态进程。init进程启动之后,读取init.cfg配置文件,根据解析结果,执行相应命令并依次启动各关键系统服务进程,在启动系统服务进程的同时设置其对应权限。
4 init相关的移植适配、产品配置
4.1 新芯片平台移植
新芯片平台移植时,平台相关的初始化配置需要增加平台相关的初始化配置文件/device/board/[companyName]/{hardware}/cfg/init.{hardware}.cfg (/vendow/etc/init.{hardware}.cfg);该文件完成平台相关的初始化设置,如安装ko驱动,设置平台相关的/proc节点信息
4.1.1 适配文件系统
# fstab file.
#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
/dev/block/platform/fe310000.sdhci/by-name/system /usr ext4 ro,barrier=1 wait,required
/dev/block/platform/fe310000.sdhci/by-name/vendor /vendor ext4 ro,barrier=1 wait,required
/dev/block/platform/fe310000.sdhci/by-name/userdata /data f2fs discard,noatime,nosuid,nodev,fscrypt=2:aes-256-cts:aes-256-xts,usrquota wait,check,fileencryption=software,quota
/dev/block/platform/fe310000.sdhci/by-name/misc /misc none none wait,required
4.1.2 usb适配
复制/device/board/hihope/rk3568/cfg/init.rk3568.usb.cfg创建/device/board/[companyName]/{hardware}/cfg/init.{hardware}.usb.cfg文件,修改其中sys.usb.controller的值,此值和具体开发板usb硬件有关
4.1.3 内核等适配
{
"name" : "fs",
"cmds" : [
"mkdir /mnt/socko",
"mount ext4 /dev/block/platform/{bootDevice}/by-name/socko /mnt/socko wait rdonly barrier=1",
"insmod /mnt/socko/gpu-***.ko",
... ...
]
}
#define BLUETOOTH_UART_DEVICE_PORT "/dev/ttyS8" /* maguro */
在cfg文件对应的cmd根据设备名修改:
"chown blue_host blue_host /dev/ttyS8",
4.1.4 修改build.gn
复制/device/board/hihope/rk3568/cfg/BUILD.gn创建/device/board/[companyName]/{hardware}/cfg/BUILD.gn,根据{hardware}修改对应配置
4.2 产品配置
{
"product_name": "rk3568", // 产品名称,支持自定义
"device_company": "rockchip", // 芯片解决方案厂商名称,一般与device的二级目录名称一致
"device_build_path": "device/board/hihope/rk3568",
"target_cpu": "arm",
"type": "standard", // 设备类型--标准设备
"version": "3.0", // OpenHarmony版本号,应与实际下载的版本移植
"board": "rk3568", // 开发版名称,与device的三级目录名称一致{hardware}
"api_version": 8,
"enable_ramdisk": true,
"enable_absystem": false,
"build_selinux": true,
"build_seccomp": true,
"inherit": [ "productdefine/common/inherit/rich.json", "productdefine/common/inherit/chipset_common.json" ], //继承其他组件配置信息,和本配置文件合并,如果配置重复,高优先级取代更新低优先级配置,对于服务的cfg配置文件优先级是/system/etc < /system/etc/init < /chipset/etc
"subsystems": [ // 非通用子系统,应为OS支持的子系统
{
"subsystem": "security",
"components": [ // 产品选择的某个子系统下的组件,应为某个子系统支持的组件
{
"component": "selinux_adapter",
"features": [] // 产品配置的某个组件的特性
}
]
},
... ...
{
"subsystem": "hdf",
"components": [
{
"component": "drivers_interface_ril",
"features": []
},
{
"component": "drivers_peripheral_ril",
"features":[]
}
]
},
... ...
{
"subsystem": "startup", // 配置启动子系统
"components": [
{
"component": "init", // init组件,如果是L1设备选择init_lite
"features": [
"enable_ohos_startup_init_feature_ab_partition = true",
"enable_ohos_startup_init_feature_loader = true"
]
}
]
},
{
"subsystem": "product_**", // 如果新增子系统或组件,适配子系统时最好依次添加,确保一个没问题后再加其余的
"components": [
{
"component": "product_a8s",
"features": []
},
... ...
]
}
]
}
更多回帖