harmony 鸿蒙ueventd

  • 2025-06-12
  • 浏览 (7)

ueventd

Overview

The ueventd module listens for netlink events about hot plug of kernel device drivers and dynamically manages the dev node of the corresponding device based on the event type.

Configuration Files of ueventd

File Type

The configuration files of the ueventd module are stored in the /base/startup/init/ueventd/etc/ directory. They are classified into three types: device, sysfs, and firmware.

Currently, the ueventd module uses configuration files of the device type. If needed, set DAC permissions for a created node in such files.

File types are distinguished by the field at the beginning of the file. The following uses device as an example:

    [device] # File type.
    # <device name> <mode> <uid> <gid> <parameter>
    /dev/null 0666 0 0

Configuration File Description

  • The configuration file of the ueventd module is named ueventd.config.

  • The file consists of five fields, for example:

  /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

Fields in the Configuration File |Field |Description | |———–|—————-| |device name|Device node name. | |mode |Permission granted to a device node in compliance with the UGO model.| |uid |UID of a device node.| |gid |GID of a device node.| |parameter |Device node parameter information, which is similar to a notification. If a device is created, a corresponding parameter is set so that other processes can perform operations on the node based on the parameter information.
/dev/null 0666 0 0 device_null
Take the dev/null node as as example:
When the device node is created, this field is set to startup.uevent.device_null “added”; when the device node is removed, this field is set to startup.uevet.device_null “removed”.|

  • Remarks

The nodes of the boot partition may vary according to devices. Therefore, you can configure soft link permissions in the ueventd.config file to change the permissions of the corresponding physical device node. These nodes are stored in the /dev/block/by-name directory.

  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

Configuration example:

  /dev/block/by-name/misc 0660 update update
  /dev/block/by-name/bootctrl 0660 update update

Setting the SELinux Tag of a Device Node

The SELinux tags of device nodes are set in the /base/security/selinux_adapter/sepolicy/base/system/file_contexts file. If the SELinux tag of a device node is not set, the node inherits the SELinux tag of its parent directory.

  • Defining node tags

    /dev/block(/.*)?                u:object_r:dev_block_file:s0
    /dev/block/zram0                u:object_r:zram_device:s0
    
  • Viewing the SELinux tag of the device node by using the ls -Zl command

  # 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

你可能感兴趣的鸿蒙文章

harmony 鸿蒙Subsystems

harmony 鸿蒙AI Framework Development Guide

harmony 鸿蒙Neural Network Runtime Device Access

harmony 鸿蒙Application Privilege Configuration

harmony 鸿蒙Development Example

harmony 鸿蒙Setting Up a Development Environment

harmony 鸿蒙Development Guidelines

harmony 鸿蒙Application Framework Overview

harmony 鸿蒙ArkCompiler Development

harmony 鸿蒙Window Title Bar Customization Development (ArkTS)

0  赞