Добавление сценария инициализации для перезагрузки планшета Android-зефира, когда он загружается с зарядкой USB

Я попытался сделать скрипт для перезагрузки планшета из режима зарядки в нормальный режим, если он запускается при подключении USB-зарядного устройства. Язык инициализации Android довольно прост, но на самом деле то, как он обрабатывается, для меня загадка.

поэтому у меня есть 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 перезагружается, но теперь мне нужно найти переменную, которую я могу использовать, чтобы отделить скрипт, выполняющийся при загрузке в нормальном режиме. Я пытался использовать этот вид сценария, который я нашел из другого файла инициализации. просто измените его, чтобы удовлетворить мои потребности, но все равно не повезло.

#!/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 ответов

Другие вопросы по тегам