首页
社区
课程
招聘
[求助] 在Android系统启动过程中运行一个脚本
发表于: 2017-3-21 11:35 5368

[求助] 在Android系统启动过程中运行一个脚本

2017-3-21 11:35
5368

背景:我手上有一个hikey的开发板,跑的是4.4的内核和Android7.1的系统。

目的:我准备加载一个基于configfs的usb驱动,由于对一些属性设置的需要,我想要运行一个脚本,执行一些echo、dd等操作。

我在init.rc文件中添加了一个服务,在init.usb.configfs.rc中,在对应驱动加载的位置创建一个脚本/dev/cmd/run.sh,我通过服务运行这个脚本以及使用exec - root root -- /system/bin/sh /dev/cmd/run.sh运行,在启动日志中提示service  does not have a SELinux domain defined以及(/system/bin/sh) does not have a SELinux domain defined。

我按照Android官网上的selinux policy的说明进行设置,发现还是输出 does not have a SELinux domain defined。

The service is launched in our device’s init.<target>.rc file as:
service foo /system/bin/foo
    class core
Create a new domain "foo"

      Create the file device/<oem>/<target>/sepolicy/foo.te
      with the following contents:# foo servicetype foo, domain;type foo_exec, exec_type, file_type;init_daemon_domain(foo)


      This is the initial template for the foo SELinux domain, to which you
         can add rules based on the specific operations performed by that executable.Label /system/bin/foo

      Add the following to device/<oem>/<target>/sepolicy/
         file_contexts:/system/bin/foo   u:object_r:foo_exec:s0


      This makes sure the executable is properly labeled so SELinux runs the
         service in the proper domain.Build and flash the boot and system images.


现在想请教一下,应该怎么解决SELinux domain defined的问题,或者还有没有其他能够执行脚本的方式?


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 53
活跃值: (280)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2

4.4 直接定义一个service在init.rc中就可以了,selinux提示设置domain那个可以忽略,那个在N以后才会强制要求,默认的init domain够你用了

把xxx.sh传到/system/etc/下,在需要运行的时候,start usbcfg就可以了

service usbcfg /system/bin/sh /system/etc/xxx.sh

    class main

    disabled


2017-3-22 12:33
0
游客
登录 | 注册 方可回帖
返回
//