2015-03-18 2 views
3

Я пытаюсь выполнить демон при загрузке моего Nexus 5. Это демон, созданный из источника в c++. Но всякий раз, когда я создаю AOSP и запускаю изображения на своем устройстве Nexus 5, демон не работает в фоновом режиме. Я добавил этот код в мой файл init.rc: (который должен заставить ее работать в фоновом режиме при загрузке)Выполнить демон в Android init.rc

setenforce 0 
service my_daemon /system/bin/my_daemon 
    class main  # Also tried: class core (but it didn't make a difference) 
    user root 
    group root 
setenforce 1 

Причина я использую setenfonce из-за SELinux на Android 5.0 и выше. Проблема в том, что при загрузке демон не запускается при загрузке. Я не знаю, почему. Какие-либо предложения?

+0

Возможно ли это в сжатом изображении ramdisk, упакованном рядом с ядром в загрузочном разделе? Простое редактирование его во время выполнения не будет продолжаться. Другой способ задать вопрос: можете ли вы проверить, что ваше изменение в init.rc существует после загрузки, и аналогично, что ваш двоичный файл существует со всеми его зависимостями и исполняемым файлом? –

+0

@ChrisStratton При загрузке 'my_daemon' находится в каталоге system/bin в оболочке adb. Но он не работает в фоновом режиме, как предполагается. – Alias

ответ

1

У меня такая же проблема с nexus 9. Я добавил код на устройство/htc/flounder/init.flounder.rc, но не работает.

service pollingclient /system/bin/sh logwrapper 
    class late_start 
    user root 
    group root 
    oneshot 

on property:dev.bootcomplete=1 
    start pollingclient 

Мой быстрое решение добавляется код, чтобы начать свой демон в системе/ядра/ADB/adb_auth_client.c после fdevent_add (& t-> auth_fde, FDE_READ);

kill_if_exist_service("mydaemon"); 
system("sleep 5; mydaemon"); 

Это работает, но это своего рода «быстрое исправление». Я все еще расследую правильное решение.

обновление: отключить SELinux по редактировать ./arch/arm64/configs/flounder_defconfig установить CONFIG_SECURITY_SELINUX = п, то пересобрать ядро ​​и пересобрать boot.img. Ничего себе, это работает!

+0

спасибо! +1 и принимается – Alias

+0

Убедитесь, что ваше имя модуля не более 16 символов и только буквенно-цифровые или «-» или «_» символы. Также убедитесь, что вы редактируете правильный файл .rc или используете переменную LOCAL_INIT_RC в файле сборки, чтобы указать файл .rc для вашего модуля. –

 Смежные вопросы

  • Нет связанных вопросов^_^