添加init脚本以重启android marshmallow平板电脑,当它通过usb充电启动时

时间:2017-02-09 11:08:08

标签: android android-6.0-marshmallow android-reboot

我已经尝试制作脚本,将平板电脑从充电模式重启到正常,如果它是通过插入usb充电器启动的话。 Android初始化语言非常简单,但实际上它的分区对我来说是非常神秘的。

所以我在root上实现了my_script.sh。 添加到系统文件my_script.sh initrd / my_script.sh 0750 并重新打包boot.img。验证一切就绪,访问权限应该是正确的。

#!/system/bin/sh
/system/bin/reboot -c reboot now

然后我在init.rc

service rebootit /system/bin/sh /my_script.sh
    class main
    user root
    oneshot

然后我在"充电器"在init.rc

start rebootit

知道如何实现这一目标吗?

修改1。 试过以下。

service rebootit /system/bin/reboot -c reboot now
    class main
    user root
    oneshot

这是结果。

 [4.648753] init: cannot execve('/system/bin/reboot'): Permission denied
 [4.649167] type=1400 audit(85946.779:4): avc: denied { execute_no_trans } for pid=331 comm="init" path="/system/bin/reboot" dev="mmcblk0p21" ino=730 scontext=u:r:init:s0 tcontext=u:object_r:system_file:s0 tclass=file permissive=0

编辑2。

确定。一些进展。 echo b> / proc / sysrq-trigger似乎重新启动但现在我需要找到一些变量,我可以用它来分离在启动到正常模式时运行的脚本。我试图使用我从另一个init文件中找到的这种脚本。只是修改它符合我的需要,但仍然没有运气。

#!/system/bin/sh
bootmode=`getprop ro.bootmode`
if [ "$bootmode" = "charger" ]; then # Reboot the tablet
echo b > /proc/sysrq-trigger
fi

修改3.解决方案

现在我终于明白了。

在init.rc上我添加了以下内容:

#Check if chargermode and start rebootit service.
on property:ro.bootmode=charger
    start rebootit   

之后又添加了以下内容:

#rebootit service which command reboot
service rebootit /su/bin/su /system/bin/reboot -c reboot now
    user root
    oneshot

您需要安装SU才能正常工作。

0 个答案:

没有答案