Как создать сервис в /init.rc? - PullRequest
0 голосов
/ 03 апреля 2019

Следуя примеру, приведенному в этом посте , я добавил эти строки в /init.rc:

on property:dev.bootcomplete=1
    start boot_handler

service boot_handler /system/bin/bc_handler.sh
    class main
    user root
    group root
    disabled
    oneshot

А это /system/bin/bc_handler.sh:

#!/system/bin/sh
echo hi > /data/local/hi.txt

Я создаю Android 8.0 для эмулятора. Когда система запускается, я вижу, что скрипт не запускался, и в журналах видно это сообщение:

[  217.280853] init: service boot_handler does not have a SELinux domain defined

Я попытался изменить свой сервис, чтобы он выглядел так:

service boot_handler /system/bin/sh /system/bin/bc_handler.sh
    class main
    user root
    group root
    disabled
    oneshot
    seclabel u:r:shell:s0

и теперь ошибка

init: Service 'boot_handler' (pid 1729) killed by signal 1

Есть ли документация о том, как добавить новый сервис в Android под SELinux? Или документация о том, как отключить SELinux на Android? Я часами гуглю, и вся информация, которую я нахожу, кажется устаревшей.

1 Ответ

1 голос
/ 19 апреля 2019

Вы можете отключить SELinux, установив разрешительный режим на работающей платформе

В разрешающем режиме selinux выдает только предупреждающее сообщение

По умолчанию он находится в принудительном режиме , где любое нарушение SELinux будет отклонено.


Чтобы добавить службу, вы должны добавить контекст файла в file_context и написать файл .te для вашей службы

Здесь является базовым примером, и вы можете больше узнать о SELinux

...