0

我正在将 AOSP 移植到定制板上,并且我需要/dev/ttymxc4拥有它,u-blox以便 GPS 驱动程序可以使用它。(没有其他东西需要使用它。)

理想情况下,我希望在构建过程中指定这一点,而不是在运行时破解。

管理设备节点所有权的最佳位置在/dev哪里?

4

2 回答 2

1

我假设当您说 GPS 驱动程序时,您实际上可能指的是需要与 Linux 内核驱动程序通信的用户空间守护程序?

传统的 Linux DAC 权限通常在 Android 启动时由 init 进程建立,通常在诸如init.common.rcAOSP 的相应设备目录之类的文件中。这也是定义守护进程(又名 init 服务)的地方。通常,您会system为您的守护程序重用该组,然后使用标准权限(例如or )重用chown设备文件。system06600440

请记住,必须在所有最新版本的 Android 中建立 SELinux MAC 权限。建立 SELinux 权限相当复杂,但通常在设置需要与内核驱动程序通信的新守护程序时必须执行以下操作:

  • 更新file_contexts为内核驱动程序创建的文件分配标签
  • 添加一个新的 TE 文件,它:为守护进程建立一个新域,定义 init 过程中的域转换,包括新域访问必要标签的规则

看:

https://source.android.com/security/selinux/customize https://source.android.com/security/selinux/implement https://source.android.com/security/selinux/images/SELinux_Treble.pdf

例子:

https://android.googlesource.com/device/google/marlin/+/oreo-mr1-release/init.common.rc https://android.googlesource.com/device/google/marlin/+/oreo-mr1 -release/sepolicy/init_radio.te

于 2017-12-28T06:43:50.350 回答
-1

最好的方法是使用 ueventd 文件。这里: https ://github.com/android/platform_system_core/blob/master/rootdir/ueventd.rc 或者你的板子特定的ueventd..rc(应该在你的设备树中)

于 2017-09-25T07:33:31.153 回答