1# ueventd介绍说明 2 3## 概述 4 5 ueventd负责监听内核设备驱动插拔的netlink事件,根据事件类型动态管理相应设备的dev节点。 6 7## 配置文件说明 8 9### ueventd配置文件类型 10 11 ueventd 的配置文件在/base/startup/init/ueventd/etc/目录下,配置文件主要分三个类型,分别是:device、 sysfs、 firmware。 12 13 目前配置的为device类型,当需要对创建的节点权限有DAC的设置要求时在该文件中配置。 14 15 不同的文件类型根据文件开头的字段来区分,以device 为例: 16 ``` 17 [device] # 表示文件类型 18 # <device name> <mode> <uid> <gid> <parameter> 19 /dev/null 0666 0 0 20 ``` 21 22### ueventd配置文件的说明 23 24 - ueventd的配置文件名为ueventd.config. 25 26 - ueventd配置文件的内容主要有5个字段组成,例如: 27 28 ``` 29 /dev/null 0666 0 0 30 /dev/binder 0666 0 0 31 /dev/hwbinder 0666 0 0 32 /dev/vndbinder 0666 0 0 33 /dev/input/event* 0660 0 input 34 ``` 35 36 **ueventd配置文件的字段说明** 37 | 字段 | 说明 | 38 | ----------- | ---------------- | 39 | device name | 设备节点名称 | 40 | mode | 设备节点所给予的权限,遵循UGO模型| 41 | uid | 设备节点的uid | 42 | gid | 设备节点的gid | 43 | parameter | 设备节点参数信息,作用类似于通知,如果设备创建了,会设置一个对应parameter,根据参数信息便于其他进程对该节点进行对应的操作 <br>/dev/null 0666 0 0 device_null<br />如在dev/null节点下操作:<br />当设备被创建,设置startup.uevent.device_null "added";当设备被卸载,我们会设置startup.uevet.device_null "removed"| 44 45 - 特别说明 46 47 由于启动分区的个节点可能会随设备的不同发生变化,因此支持通过在ueventd.config配置软连接的权限来修改其对应的物理设备节点的权限。 48 这部分节点主要在/dev/block/by-name目录下: 49 50 ``` 51 lrwxrwxrwx 1 root root 20 2017-08-10 16:22 boot_linux -> /dev/block/mmcblk0p5 52 lrwxrwxrwx 1 root root 20 2017-08-10 16:22 bootctrl -> /dev/block/mmcblk0p3 53 lrwxrwxrwx 1 ueventd ueventd 21 2017-08-10 16:22 chip-prod -> /dev/block/mmcblk0p10 54 lrwxrwxrwx 1 root root 20 2017-08-10 16:22 misc -> /dev/block/mmcblk0p2 55 lrwxrwxrwx 1 root root 20 2017-08-10 16:22 ramdisk -> /dev/block/mmcblk0p6 56 lrwxrwxrwx 1 ueventd ueventd 20 2017-08-10 16:22 resource -> /dev/block/mmcblk0p4 57 lrwxrwxrwx 1 ueventd ueventd 20 2017-08-10 16:22 sys-prod -> /dev/block/mmcblk0p9 58 lrwxrwxrwx 1 root root 20 2017-08-10 16:22 system -> /dev/block/mmcblk0p7 59 lrwxrwxrwx 1 root root 20 2017-08-10 16:22 uboot -> /dev/block/mmcblk0p1 60 lrwxrwxrwx 1 ueventd ueventd 21 2017-08-10 16:22 updater -> /dev/block/mmcblk0p11 61 lrwxrwxrwx 1 ueventd ueventd 21 2017-08-10 16:22 userdata -> /dev/block/mmcblk0p12 62 lrwxrwxrwx 1 root root 20 2017-08-10 16:22 vendor -> /dev/block/mmcblk0p8 63 ``` 64 65 配置实例如下: 66 67 ``` 68 /dev/block/by-name/misc 0660 update update 69 /dev/block/by-name/bootctrl 0660 update update 70 ``` 71 72### 设备节点的selinux 标签设置 73 74 设备节点的selinux 标签在/base/security/selinux_adapter/sepolicy/base/system/file_contexts文件中设置,当某个节点的selinux标签未设置时,其会继承父目录的标签selinux。 75 76 - 节点标签定义: 77 ``` 78 /dev/block(/.*)? u:object_r:dev_block_file:s0 79 /dev/block/zram0 u:object_r:zram_device:s0 80 ``` 81 82 - 使用ls -Zl 可以查看节点的selinux标签 83 84 ``` 85 # ls -Zl 86 total 0 87 lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 boot_linux -> /dev/block/mmcblk0p5 88 lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 bootctrl -> /dev/block/mmcblk0p3 89 lrwxrwxrwx 1 ueventd ueventd u:object_r:dev_block_file:s0 21 2017-08-10 16:22 chip-prod -> /dev/block/mmcblk0p10 90 lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 misc -> /dev/block/mmcblk0p2 91 lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 ramdisk -> /dev/block/mmcblk0p6 92 lrwxrwxrwx 1 ueventd ueventd u:object_r:dev_block_file:s0 20 2017-08-10 16:22 resource -> /dev/block/mmcblk0p4 93 lrwxrwxrwx 1 ueventd ueventd u:object_r:dev_block_file:s0 20 2017-08-10 16:22 sys-prod -> /dev/block/mmcblk0p9 94 lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 system -> /dev/block/mmcblk0p7 95 lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 uboot -> /dev/block/mmcblk0p1 96 lrwxrwxrwx 1 ueventd ueventd u:object_r:dev_block_file:s0 21 2017-08-10 16:22 updater -> /dev/block/mmcblk0p11 97 lrwxrwxrwx 1 ueventd ueventd u:object_r:dev_block_file:s0 21 2017-08-10 16:22 userdata -> /dev/block/mmcblk0p12 98 lrwxrwxrwx 1 root root u:object_r:dev_block_file:s0 20 2017-08-10 16:22 vendor -> /dev/block/mmcblk0p8 99 ``` 100