系统参数 | 接口名 | 描述 |
---|---|---|
const.product.devicetype | const char* GetDeviceType(void) | 返回当前设备类型 |
const.product.manufacturer | const char* GetManufacture(void) | 返回当前设备生产厂家信息 |
const.product.brand | const char* GetBrand(void) | 返回当前设备品牌信息 |
const.product.name | const char* GetMarketName(void) | 返回当前设备传播名 |
const.build.product | const char* GetProductSeries(void) | 返回当前设备产品系列名 |
const.product.model | const char* GetProductModel(void) | 返回当前设备认证型号 |
const.software.model | const char* GetSoftwareModel(void) | 返回当前设备内部软件子型号 |
const.product.hardwareversion | const char* GetHardwareModel(void) | 返回当前设备硬件版本号 |
const.product.hardwareprofile | const char* GetHardwareProfile(void) | 返回当前设备硬件profile |
ohos.boot.sn | const char* GetSerial(void) | 返回当前设备序列号(SN号) |
const.product.software.version | const char* GetDisplayVersion(void) | 返回当前设备用户可见的软件版本号 |
const.product.bootloader.version | const char* GetBootloaderVersion(void) | 返回当前设备Bootloader版本号 |
const.product.udid | int GetDevUdid(char *udid, int size) | 获取设备udid(先通过参数获取,获取失败通过计算获取) |
const char *AclGetSerial(void) | 返回当前设备序列号(SN号)(带访问权限检查) | |
int AclGetDevUdid(char *udid, int size) | 获取设备udid(带访问权限检查) |
OHOS 固定值参数:
const.ohos.version.security_patch
const.ohos.releasetype
const.ohos.apiversion
const.ohos.fullname
适配说明:
OHOS 固定值参数由OHOS系统填充,厂商不能也不需适配,目前这部分参数主要定义在/base/startup/init/services/etc/param/ohos_const/ohos.para
文件中。
厂商固定值参数:
const.product.devicetype
const.product.manufacturer
const.product.brand
const.product.name
const.build.product
const.product.model
const.software.model
const.product.hardwareversion
const.product.hardwareprofile
const.product.software.version
const.product.bootloader.version
const.build.characteristics
... ...
适配说明:
由各产品根据自身情况在vendor目录下适配。
标准系统以RK3568为例,在/vendor/hihope/rk3568/etc/para/hardware_rk3568.para
中适配,并安装到指定目录。
ohos_prebuilt_etc("para_for_chip_prod") {
source = "./para/hardware_rk3568.para"
install_images = [ chip_prod_base_dir ]
relative_install_dir = "para"
part_name = "product_rk3568"
}
轻量系统与小型系统在产品对应的hals/utils/sys_param/vendor.para
文件中配置。例如:
const.product.manufacturer=Talkweb
const.product.brand=Talkweb
const.product.name=Niobe
const.build.product=Niobe
const.product.model=Niobe407
const.software.model="2.0.0"
const.product.hardwareversion="1.0.0"
const.product.hardwareprofile="RAM:192K,ROM:1M,ETH:true"
... ...
厂商动态值参数,目前有三种获取形式:cmdline读取,编译宏定义,在BUILD.gn中定义。
cmdline中读取的值有:ohos.boot.hardware、ohos.boot.bootslots、ohos.boot.sn等,其中ohos.boot.sn的获取略有不同,具体如下:
标准系统的Serial从参数ohos.boot.sn读取。
ohos.boot.sn参数值的获取方式:首先从cmdline(由uboot生成)获取,如果获取到的是sn值则直接读取,若获取的是文件路径,则从文件中读取;当获取不到时从默认的Sn文件读取,默认文件为:/sys/block/mmcblk0/device/cid;/proc/bootdevice/cid
。
轻量系统与小型系统的Serial各产品在实现过程中可能有自己特殊的算法,因此OpenHarmony支持在hals/utils/sys_param
目录下hal_sys_param.c文件中通过HalGetSerial()接口自定算法来获取Serial。
编译宏定义的形式获取参数,目前主要在轻量系统与小型系统中用到,例如:
defines = [
"INCREMENTAL_VERSION=\"${ohos_version}\"",
"BUILD_TYPE=\"${ohos_build_type}\"",
"BUILD_USER=\"${ohos_build_user}\"",
"BUILD_TIME=\"${ohos_build_time}\"",
"BUILD_HOST=\"${ohos_build_host}\"",
"BUILD_ROOTHASH=\"${ohos_build_roothash}\"",
]
在BUILD.gn中定义,可参考文件/base/startup/init/services/etc/BUILD.gn
,例如:
if (target_cpu == "arm64") {
extra_paras += [ "const.product.cpu.abilist=arm64-v8a" ]
}
if (build_variant == "user") {
extra_paras += [
"const.secure=1",
"const.debuggable=0",
]
} else if (build_variant == "root") {
extra_paras += [
"const.secure=0",
"const.debuggable=1",
]
}
if (device_type != "default") {
extra_paras += [
"const.product.devicetype=${device_type}",
"const.build.characteristics=${device_type}",
]
}
module_install_dir = "etc/param"
小型系统的产品需要在hals/utils/sys_param/BUILD.gn
中添加vendor.para的编译,具体如下:
copy("vendor.para") {
sources = [ "./vendor.para" ]
outputs = [ "$root_out_dir/vendor/etc/param/vendor.para" ]
}
轻量系统的产品由于没有文件系统,在编译时会把hal_sys_param.c和vendor.para文件转化为头文件,编译时直接编译到系统中。
ueventd负责监听内核设备驱动插拔的netlink事件,根据事件类型动态管理相应设备的dev节点。
ueventd 的配置文件在/base/startup/init/ueventd/etc/目录下,配置文件主要分三个类型,分别是:device、 sysfs、 firmware。
目前配置的为device类型,当需要对创建的节点权限有DAC的设置要求时在该文件中配置。
不同的文件类型根据文件开头的字段来区分,以device 为例:
[device] # 表示文件类型
#
/dev/null 0666 0 0
ueventd的配置文件名为ueventd.config.
ueventd配置文件的内容主要有5个字段组成,例如:
/dev/null 0666 0 0
/dev/binder 0666 0 0
/dev/hwbinder 0666 0 0
/dev/vndbinder 0666 0 0
/dev/input/event* 0660 0 input
ueventd配置文件的字段说明
字段 | 说明 |
---|---|
device name | 设备节点名称 |
mode | 设备节点所给予的权限,遵循UGO模型 |
uid | 设备节点的uid |
gid | 设备节点的gid |
parameter | 设备节点参数信息,作用类似于通知,如果设备创建了,会设置一个对应parameter,根据参数信息便于其他进程对该节点进行对应的操作 /dev/null 0666 0 0 device_null 如在dev/null节点下操作: 当设备被创建,设置startup.uevent.device_null "added";当设备被卸载,我们会设置startup.uevet.device_null "removed" |
由于启动分区的个节点可能会随设备的不同发生变化,因此支持通过在ueventd.config配置软连接的权限来修改其对应的物理设备节点的权限。 这部分节点主要在/dev/block/by-name目录下:
lrwxrwxrwx 1 root root 20 2017-08-10 16:22 boot_linux -> /dev/block/mmcblk0p5
lrwxrwxrwx 1 root root 20 2017-08-10 16:22 bootctrl -> /dev/block/mmcblk0p3
lrwxrwxrwx 1 ueventd ueventd 21 2017-08-10 16:22 chip-prod -> /dev/block/mmcblk0p10
lrwxrwxrwx 1 root root 20 2017-08-10 16:22 misc -> /dev/block/mmcblk0p2
lrwxrwxrwx 1 root root 20 2017-08-10 16:22 ramdisk -> /dev/block/mmcblk0p6
lrwxrwxrwx 1 ueventd ueventd 20 2017-08-10 16:22 resource -> /dev/block/mmcblk0p4
lrwxrwxrwx 1 ueventd ueventd 20 2017-08-10 16:22 sys-prod -> /dev/block/mmcblk0p9
lrwxrwxrwx 1 root root 20 2017-08-10 16:22 system -> /dev/block/mmcblk0p7
lrwxrwxrwx 1 root root 20 2017-08-10 16:22 uboot -> /dev/block/mmcblk0p1
lrwxrwxrwx 1 ueventd ueventd 21 2017-08-10 16:22 updater -> /dev/block/mmcblk0p11
lrwxrwxrwx 1 ueventd ueventd 21 2017-08-10 16:22 userdata -> /dev/block/mmcblk0p12
lrwxrwxrwx 1 root root 20 2017-08-10 16:22 vendor -> /dev/block/mmcblk0p8
配置实例如下:
/dev/block/by-name/misc 0660 update update
/dev/block/by-name/bootctrl 0660 update update
设备节点的selinux 标签在/base/security/selinux_adapter/sepolicy/base/system/file_contexts文件中设置,当某个节点的selinux标签未设置时,其会继承父目录的标签selinux。
/dev/block(/.*)? u:object_r:dev_block_file:s0
/dev/block/zram0 u:object_r:zram_device:s0
# ls -Zl
total 0
lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 boot_linux -> /dev/block/mmcblk0p5
lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 bootctrl -> /dev/block/mmcblk0p3
lrwxrwxrwx 1 ueventd ueventd u:object_r:dev_block_file:s0 21 2017-08-10 16:22 chip-prod -> /dev/block/mmcblk0p10
lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 misc -> /dev/block/mmcblk0p2
lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 ramdisk -> /dev/block/mmcblk0p6
lrwxrwxrwx 1 ueventd ueventd u:object_r:dev_block_file:s0 20 2017-08-10 16:22 resource -> /dev/block/mmcblk0p4
lrwxrwxrwx 1 ueventd ueventd u:object_r:dev_block_file:s0 20 2017-08-10 16:22 sys-prod -> /dev/block/mmcblk0p9
lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 system -> /dev/block/mmcblk0p7
lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 uboot -> /dev/block/mmcblk0p1
lrwxrwxrwx 1 ueventd ueventd u:object_r:dev_block_file:s0 21 2017-08-10 16:22 updater -> /dev/block/mmcblk0p11
lrwxrwxrwx 1 ueventd ueventd u:object_r:dev_block_file:s0 21 2017-08-10 16:22 userdata -> /dev/block/mmcblk0p12
lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 vendor -> /dev/block/mmcblk0p8