Добавление сценария инициализации для перезагрузки планшета 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.